[PATCH r128 3/5] Remove R128ConnectorType and R128BIOSConnector
Connor Behan
connor.behan at gmail.com
Tue Jul 22 02:50:05 PDT 2014
In the radeon UMS driver these make sense because there are many types
of radeon cards and new ones keep coming out. With r128 on the other
hand, there are only three types of cards (VGA only, DVI only and
Mobility). The extra organization that these data structures allow is
not necessary.
Signed-off-by: Connor Behan <connor.behan at gmail.com>
---
src/r128.h | 1 -
src/r128_output.c | 148 +++++++++++++++++++-----------------------------------
src/r128_probe.h | 16 ------
3 files changed, 53 insertions(+), 112 deletions(-)
diff --git a/src/r128.h b/src/r128.h
index 6df1b51..d8748b7 100644
--- a/src/r128.h
+++ b/src/r128.h
@@ -504,7 +504,6 @@ typedef struct {
Bool DDC;
Bool VGAAccess;
- R128BIOSConnector BiosConnector[R128_MAX_BIOS_CONNECTOR];
/****** Added for dualhead support *******************/
BOOL IsSecondary; /* second Screen */
diff --git a/src/r128_output.c b/src/r128_output.c
index 7bb2e2a..1d44971 100644
--- a/src/r128_output.c
+++ b/src/r128_output.c
@@ -375,133 +375,91 @@ static Bool R128I2CInit(xf86OutputPtr output, I2CBusPtr *bus_ptr, char *name)
return TRUE;
}
-void R128SetOutputType(ScrnInfoPtr pScrn, R128OutputPrivatePtr r128_output)
-{
- R128OutputType output = OUTPUT_NONE;
-
- switch (r128_output->ConnectorType) {
- case CONNECTOR_VGA:
- output = OUTPUT_VGA;
- break;
- case CONNECTOR_LVDS:
- output = OUTPUT_LVDS;
- break;
- case CONNECTOR_DVI_D:
- case CONNECTOR_DVI_I:
- case CONNECTOR_DVI_A:
- output = OUTPUT_DVI;
- break;
- default:
- output = OUTPUT_NONE;
- }
-
- r128_output->type = output;
-}
-
-void R128SetupGenericConnectors(ScrnInfoPtr pScrn)
+void R128SetupGenericConnectors(ScrnInfoPtr pScrn, R128OutputType *otypes)
{
R128InfoPtr info = R128PTR(pScrn);
R128EntPtr pR128Ent = R128EntPriv(pScrn);
if (!pR128Ent->HasCRTC2 && !info->isDFP) {
- info->BiosConnector[0].ConnectorType = CONNECTOR_VGA;
- info->BiosConnector[0].valid = TRUE;
+ otypes[0] = OUTPUT_VGA;
return;
} else if (!pR128Ent->HasCRTC2) {
- info->BiosConnector[0].ConnectorType = CONNECTOR_DVI_D;
- info->BiosConnector[0].valid = TRUE;
+ otypes[0] = OUTPUT_DVI;
return;
}
- info->BiosConnector[0].ConnectorType = CONNECTOR_LVDS;
- info->BiosConnector[0].valid = TRUE;
-
- info->BiosConnector[1].ConnectorType = CONNECTOR_VGA;
- info->BiosConnector[1].valid = TRUE;
+ otypes[0] = OUTPUT_LVDS;
+ otypes[1] = OUTPUT_VGA;
}
Bool R128SetupConnectors(ScrnInfoPtr pScrn)
{
R128InfoPtr info = R128PTR(pScrn);
R128EntPtr pR128Ent = R128EntPriv(pScrn);
- xf86OutputPtr output;
+
+ R128OutputType otypes[R128_MAX_BIOS_CONNECTOR];
+ xf86OutputPtr output;
int num_vga = 0;
int num_dvi = 0;
int i;
- for (i = 0; i < R128_MAX_BIOS_CONNECTOR; i++) {
- info->BiosConnector[i].valid = FALSE;
- info->BiosConnector[i].ConnectorType = CONNECTOR_NONE;
- }
-
/* XXX: Can we make R128GetConnectorInfoFromBIOS()? */
- R128SetupGenericConnectors(pScrn);
+ R128SetupGenericConnectors(pScrn, otypes);
for (i = 0; i < R128_MAX_BIOS_CONNECTOR; i++) {
- if (info->BiosConnector[i].valid) {
- if ((info->BiosConnector[i].ConnectorType == CONNECTOR_DVI_D) ||
- (info->BiosConnector[i].ConnectorType == CONNECTOR_DVI_I) ||
- (info->BiosConnector[i].ConnectorType == CONNECTOR_DVI_A)) {
- num_dvi++;
- } else if (info->BiosConnector[i].ConnectorType == CONNECTOR_VGA) {
- num_vga++;
- }
- }
+ if (otypes[i] == OUTPUT_VGA)
+ num_vga++;
+ else if (otypes[i] == OUTPUT_DVI)
+ num_dvi++;
}
for (i = 0; i < R128_MAX_BIOS_CONNECTOR; i++) {
- if (info->BiosConnector[i].valid) {
- R128I2CBusRec i2c;
- R128OutputPrivatePtr r128_output;
- R128ConnectorType conntype = info->BiosConnector[i].ConnectorType;
+ if (otypes[i] == OUTPUT_NONE) continue;
- if (conntype == CONNECTOR_NONE)
- continue;
+ R128I2CBusRec i2c;
+ R128OutputPrivatePtr r128_output;
- r128_output = xnfcalloc(sizeof(R128OutputPrivateRec), 1);
- if (!r128_output) return FALSE;
+ r128_output = xnfcalloc(sizeof(R128OutputPrivateRec), 1);
+ if (!r128_output) return FALSE;
- r128_output->MonType = MT_UNKNOWN;
- r128_output->ConnectorType = conntype;
- r128_output->num = i;
+ r128_output->MonType = MT_UNKNOWN;
+ r128_output->type = otypes[i];
+ r128_output->num = i;
- if (conntype == CONNECTOR_LVDS) {
- output = R128OutputCreate(pScrn, "LVDS", 0);
- } else if (conntype == CONNECTOR_VGA) {
- output = R128OutputCreate(pScrn, "VGA-%d", --num_vga);
- } else {
- output = R128OutputCreate(pScrn, "DVI-%d", --num_dvi);
- }
+ if (otypes[i] == OUTPUT_LVDS) {
+ output = R128OutputCreate(pScrn, "LVDS", 0);
+ } else if (otypes[i] == OUTPUT_VGA) {
+ output = R128OutputCreate(pScrn, "VGA-%d", --num_vga);
+ } else {
+ output = R128OutputCreate(pScrn, "DVI-%d", --num_dvi);
+ }
- if (!output) return FALSE;
- output->interlaceAllowed = TRUE;
- output->doubleScanAllowed = TRUE;
- output->driver_private = r128_output;
- output->possible_clones = 0;
- if (conntype == CONNECTOR_LVDS || !pR128Ent->HasCRTC2)
- output->possible_crtcs = 1;
- else
- output->possible_crtcs = 2;
-
- if (conntype != CONNECTOR_LVDS && info->DDC) {
- i2c.ddc_reg = R128_GPIO_MONID;
- i2c.put_clk_mask = R128_GPIO_MONID_EN_3;
- i2c.get_clk_mask = R128_GPIO_MONID_Y_3;
- if (conntype == CONNECTOR_VGA) {
- i2c.put_data_mask = R128_GPIO_MONID_EN_1;
- i2c.get_data_mask = R128_GPIO_MONID_Y_1;
- } else {
- i2c.put_data_mask = R128_GPIO_MONID_EN_0;
- i2c.get_data_mask = R128_GPIO_MONID_Y_0;
- }
- r128_output->ddc_i2c = i2c;
- R128I2CInit(output, &r128_output->pI2CBus, output->name);
- } else if (conntype == CONNECTOR_LVDS) {
- r128_output->PanelXRes = info->PanelXRes;
- r128_output->PanelYRes = info->PanelYRes;
+ if (!output) return FALSE;
+ output->interlaceAllowed = TRUE;
+ output->doubleScanAllowed = TRUE;
+ output->driver_private = r128_output;
+ output->possible_clones = 0;
+ if (otypes[i] == OUTPUT_LVDS || !pR128Ent->HasCRTC2)
+ output->possible_crtcs = 1;
+ else
+ output->possible_crtcs = 2;
+
+ if (otypes[i] != OUTPUT_LVDS && info->DDC) {
+ i2c.ddc_reg = R128_GPIO_MONID;
+ i2c.put_clk_mask = R128_GPIO_MONID_EN_3;
+ i2c.get_clk_mask = R128_GPIO_MONID_Y_3;
+ if (otypes[i] == OUTPUT_VGA) {
+ i2c.put_data_mask = R128_GPIO_MONID_EN_1;
+ i2c.get_data_mask = R128_GPIO_MONID_Y_1;
+ } else {
+ i2c.put_data_mask = R128_GPIO_MONID_EN_0;
+ i2c.get_data_mask = R128_GPIO_MONID_Y_0;
}
-
- R128SetOutputType(pScrn, r128_output);
+ r128_output->ddc_i2c = i2c;
+ R128I2CInit(output, &r128_output->pI2CBus, output->name);
+ } else if (otypes[i] == OUTPUT_LVDS) {
+ r128_output->PanelXRes = info->PanelXRes;
+ r128_output->PanelYRes = info->PanelYRes;
}
}
diff --git a/src/r128_probe.h b/src/r128_probe.h
index 433463b..fef210d 100644
--- a/src/r128_probe.h
+++ b/src/r128_probe.h
@@ -112,16 +112,6 @@ typedef enum
typedef enum
{
- CONNECTOR_NONE,
- CONNECTOR_VGA,
- CONNECTOR_DVI_I,
- CONNECTOR_DVI_D,
- CONNECTOR_DVI_A,
- CONNECTOR_LVDS
-} R128ConnectorType;
-
-typedef enum
-{
OUTPUT_NONE,
OUTPUT_VGA,
OUTPUT_DVI,
@@ -144,15 +134,9 @@ typedef struct _R128CrtcPrivateRec {
uint8_t lut_r[256], lut_g[256], lut_b[256];
} R128CrtcPrivateRec, *R128CrtcPrivatePtr;
-typedef struct {
- R128ConnectorType ConnectorType;
- Bool valid;
-} R128BIOSConnector;
-
typedef struct _R128OutputPrivateRec {
int num;
R128OutputType type;
- R128ConnectorType ConnectorType;
R128MonitorType MonType;
I2CBusPtr pI2CBus;
R128I2CBusRec ddc_i2c;
--
2.0.0
More information about the xorg-driver-ati
mailing list