Commit e7cc51c5 authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau: reorganise bios header, add dcb connector type enums

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 04a39c57
...@@ -5388,6 +5388,8 @@ parse_dcb20_entry(struct drm_device *dev, struct dcb_table *dcb, ...@@ -5388,6 +5388,8 @@ parse_dcb20_entry(struct drm_device *dev, struct dcb_table *dcb,
/* weird g80 mobile type that "nv" treats as a terminator */ /* weird g80 mobile type that "nv" treats as a terminator */
dcb->entries--; dcb->entries--;
return false; return false;
default:
break;
} }
/* unsure what DCB version introduces this, 3.0? */ /* unsure what DCB version introduces this, 3.0? */
......
...@@ -34,9 +34,66 @@ ...@@ -34,9 +34,66 @@
#define DCB_LOC_ON_CHIP 0 #define DCB_LOC_ON_CHIP 0
struct dcb_i2c_entry {
uint8_t port_type;
uint8_t read, write;
struct nouveau_i2c_chan *chan;
};
enum dcb_gpio_tag {
DCB_GPIO_TVDAC0 = 0xc,
DCB_GPIO_TVDAC1 = 0x2d,
};
struct dcb_gpio_entry {
enum dcb_gpio_tag tag;
int line;
bool invert;
};
struct dcb_gpio_table {
int entries;
struct dcb_gpio_entry entry[DCB_MAX_NUM_GPIO_ENTRIES];
};
enum dcb_connector_type {
DCB_CONNECTOR_VGA = 0x00,
DCB_CONNECTOR_TV_0 = 0x10,
DCB_CONNECTOR_TV_1 = 0x11,
DCB_CONNECTOR_TV_3 = 0x13,
DCB_CONNECTOR_DVI_I = 0x30,
DCB_CONNECTOR_DVI_D = 0x31,
DCB_CONNECTOR_LVDS = 0x40,
DCB_CONNECTOR_DP = 0x46,
DCB_CONNECTOR_eDP = 0x47,
DCB_CONNECTOR_HDMI_0 = 0x60,
DCB_CONNECTOR_HDMI_1 = 0x61,
};
struct dcb_connector_table_entry {
uint32_t entry;
enum dcb_connector_type type;
uint8_t index;
uint8_t gpio_tag;
};
struct dcb_connector_table {
int entries;
struct dcb_connector_table_entry entry[DCB_MAX_NUM_CONNECTOR_ENTRIES];
};
enum dcb_type {
OUTPUT_ANALOG = 0,
OUTPUT_TV = 1,
OUTPUT_TMDS = 2,
OUTPUT_LVDS = 3,
OUTPUT_DP = 6,
OUTPUT_ANY = -1
};
struct dcb_entry { struct dcb_entry {
int index; /* may not be raw dcb index if merging has happened */ int index; /* may not be raw dcb index if merging has happened */
uint8_t type; enum dcb_type type;
uint8_t i2c_index; uint8_t i2c_index;
uint8_t heads; uint8_t heads;
uint8_t connector; uint8_t connector;
...@@ -71,40 +128,6 @@ struct dcb_entry { ...@@ -71,40 +128,6 @@ struct dcb_entry {
bool i2c_upper_default; bool i2c_upper_default;
}; };
struct dcb_i2c_entry {
uint8_t port_type;
uint8_t read, write;
struct nouveau_i2c_chan *chan;
};
enum dcb_gpio_tag {
DCB_GPIO_TVDAC0 = 0xc,
DCB_GPIO_TVDAC1 = 0x2d,
};
struct dcb_gpio_entry {
enum dcb_gpio_tag tag;
int line;
bool invert;
};
struct dcb_gpio_table {
int entries;
struct dcb_gpio_entry entry[DCB_MAX_NUM_GPIO_ENTRIES];
};
struct dcb_connector_table_entry {
uint32_t entry;
uint8_t type;
uint8_t index;
uint8_t gpio_tag;
};
struct dcb_connector_table {
int entries;
struct dcb_connector_table_entry entry[DCB_MAX_NUM_CONNECTOR_ENTRIES];
};
struct dcb_table { struct dcb_table {
uint8_t version; uint8_t version;
...@@ -121,15 +144,6 @@ struct dcb_table { ...@@ -121,15 +144,6 @@ struct dcb_table {
struct dcb_connector_table connector; struct dcb_connector_table connector;
}; };
enum nouveau_encoder_type {
OUTPUT_ANALOG = 0,
OUTPUT_TV = 1,
OUTPUT_TMDS = 2,
OUTPUT_LVDS = 3,
OUTPUT_DP = 6,
OUTPUT_ANY = -1
};
enum nouveau_or { enum nouveau_or {
OUTPUT_A = (1 << 0), OUTPUT_A = (1 << 0),
OUTPUT_B = (1 << 1), OUTPUT_B = (1 << 1),
......
...@@ -613,6 +613,9 @@ nouveau_connector_mode_valid(struct drm_connector *connector, ...@@ -613,6 +613,9 @@ nouveau_connector_mode_valid(struct drm_connector *connector,
clock *= 3; clock *= 3;
break; break;
default:
BUG_ON(1);
return MODE_BAD;
} }
if (clock < min_clock) if (clock < min_clock)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment