mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
fbdev: remove I2C_CLASS_DDC support
After removal of the legacy EEPROM driver and I2C_CLASS_DDC support in olpc_dcon there's no i2c client driver left supporting I2C_CLASS_DDC. Class-based device auto-detection is a legacy mechanism and shouldn't be used in new code. So we can remove this class completely now. Acked-by: Helge Deller <deller@gmx.de> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Signed-off-by: Wolfram Sang <wsa@kernel.org>
This commit is contained in:
parent
e965a70727
commit
754bd2fffc
9 changed files with 10 additions and 27 deletions
|
@ -116,7 +116,6 @@ unsigned char *fb_ddc_read(struct i2c_adapter *adapter)
|
||||||
algo_data->setsda(algo_data->data, 1);
|
algo_data->setsda(algo_data->data, 1);
|
||||||
algo_data->setscl(algo_data->data, 1);
|
algo_data->setscl(algo_data->data, 1);
|
||||||
|
|
||||||
adapter->class |= I2C_CLASS_DDC;
|
|
||||||
return edid;
|
return edid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1234,7 +1234,6 @@ static int cyber2000fb_setup_ddc_bus(struct cfb_info *cfb)
|
||||||
strscpy(cfb->ddc_adapter.name, cfb->fb.fix.id,
|
strscpy(cfb->ddc_adapter.name, cfb->fb.fix.id,
|
||||||
sizeof(cfb->ddc_adapter.name));
|
sizeof(cfb->ddc_adapter.name));
|
||||||
cfb->ddc_adapter.owner = THIS_MODULE;
|
cfb->ddc_adapter.owner = THIS_MODULE;
|
||||||
cfb->ddc_adapter.class = I2C_CLASS_DDC;
|
|
||||||
cfb->ddc_adapter.algo_data = &cfb->ddc_algo;
|
cfb->ddc_adapter.algo_data = &cfb->ddc_algo;
|
||||||
cfb->ddc_adapter.dev.parent = cfb->fb.device;
|
cfb->ddc_adapter.dev.parent = cfb->fb.device;
|
||||||
cfb->ddc_algo.setsda = cyber2000fb_ddc_setsda;
|
cfb->ddc_algo.setsda = cyber2000fb_ddc_setsda;
|
||||||
|
|
|
@ -163,7 +163,6 @@ static int i740fb_setup_ddc_bus(struct fb_info *info)
|
||||||
strscpy(par->ddc_adapter.name, info->fix.id,
|
strscpy(par->ddc_adapter.name, info->fix.id,
|
||||||
sizeof(par->ddc_adapter.name));
|
sizeof(par->ddc_adapter.name));
|
||||||
par->ddc_adapter.owner = THIS_MODULE;
|
par->ddc_adapter.owner = THIS_MODULE;
|
||||||
par->ddc_adapter.class = I2C_CLASS_DDC;
|
|
||||||
par->ddc_adapter.algo_data = &par->ddc_algo;
|
par->ddc_adapter.algo_data = &par->ddc_algo;
|
||||||
par->ddc_adapter.dev.parent = info->device;
|
par->ddc_adapter.dev.parent = info->device;
|
||||||
par->ddc_algo.setsda = i740fb_ddc_setsda;
|
par->ddc_algo.setsda = i740fb_ddc_setsda;
|
||||||
|
|
|
@ -99,8 +99,7 @@ static int intelfb_gpio_getsda(void *data)
|
||||||
|
|
||||||
static int intelfb_setup_i2c_bus(struct intelfb_info *dinfo,
|
static int intelfb_setup_i2c_bus(struct intelfb_info *dinfo,
|
||||||
struct intelfb_i2c_chan *chan,
|
struct intelfb_i2c_chan *chan,
|
||||||
const u32 reg, const char *name,
|
const u32 reg, const char *name)
|
||||||
int class)
|
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
@ -108,7 +107,6 @@ static int intelfb_setup_i2c_bus(struct intelfb_info *dinfo,
|
||||||
chan->reg = reg;
|
chan->reg = reg;
|
||||||
snprintf(chan->adapter.name, sizeof(chan->adapter.name),
|
snprintf(chan->adapter.name, sizeof(chan->adapter.name),
|
||||||
"intelfb %s", name);
|
"intelfb %s", name);
|
||||||
chan->adapter.class = class;
|
|
||||||
chan->adapter.owner = THIS_MODULE;
|
chan->adapter.owner = THIS_MODULE;
|
||||||
chan->adapter.algo_data = &chan->algo;
|
chan->adapter.algo_data = &chan->algo;
|
||||||
chan->adapter.dev.parent = &chan->dinfo->pdev->dev;
|
chan->adapter.dev.parent = &chan->dinfo->pdev->dev;
|
||||||
|
@ -144,8 +142,7 @@ void intelfb_create_i2c_busses(struct intelfb_info *dinfo)
|
||||||
dinfo->output[i].type = INTELFB_OUTPUT_ANALOG;
|
dinfo->output[i].type = INTELFB_OUTPUT_ANALOG;
|
||||||
|
|
||||||
/* setup the DDC bus for analog output */
|
/* setup the DDC bus for analog output */
|
||||||
intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].ddc_bus, GPIOA,
|
intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].ddc_bus, GPIOA, "CRTDDC_A");
|
||||||
"CRTDDC_A", I2C_CLASS_DDC);
|
|
||||||
i++;
|
i++;
|
||||||
|
|
||||||
/* need to add the output busses for each device
|
/* need to add the output busses for each device
|
||||||
|
@ -159,10 +156,8 @@ void intelfb_create_i2c_busses(struct intelfb_info *dinfo)
|
||||||
case INTEL_855GM:
|
case INTEL_855GM:
|
||||||
case INTEL_865G:
|
case INTEL_865G:
|
||||||
dinfo->output[i].type = INTELFB_OUTPUT_DVO;
|
dinfo->output[i].type = INTELFB_OUTPUT_DVO;
|
||||||
intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].ddc_bus,
|
intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].ddc_bus, GPIOD, "DVODDC_D");
|
||||||
GPIOD, "DVODDC_D", I2C_CLASS_DDC);
|
intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].i2c_bus, GPIOE, "DVOI2C_E");
|
||||||
intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].i2c_bus,
|
|
||||||
GPIOE, "DVOI2C_E", 0);
|
|
||||||
i++;
|
i++;
|
||||||
break;
|
break;
|
||||||
case INTEL_915G:
|
case INTEL_915G:
|
||||||
|
@ -176,7 +171,7 @@ void intelfb_create_i2c_busses(struct intelfb_info *dinfo)
|
||||||
/* SDVO ports have a single control bus - 2 devices */
|
/* SDVO ports have a single control bus - 2 devices */
|
||||||
dinfo->output[i].type = INTELFB_OUTPUT_SDVO;
|
dinfo->output[i].type = INTELFB_OUTPUT_SDVO;
|
||||||
intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].i2c_bus,
|
intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].i2c_bus,
|
||||||
GPIOE, "SDVOCTRL_E", 0);
|
GPIOE, "SDVOCTRL_E");
|
||||||
/* TODO: initialize the SDVO */
|
/* TODO: initialize the SDVO */
|
||||||
/* I830SDVOInit(pScrn, i, DVOB); */
|
/* I830SDVOInit(pScrn, i, DVOB); */
|
||||||
i++;
|
i++;
|
||||||
|
|
|
@ -100,8 +100,7 @@ static const struct i2c_algo_bit_data matrox_i2c_algo_template =
|
||||||
};
|
};
|
||||||
|
|
||||||
static int i2c_bus_reg(struct i2c_bit_adapter* b, struct matrox_fb_info* minfo,
|
static int i2c_bus_reg(struct i2c_bit_adapter* b, struct matrox_fb_info* minfo,
|
||||||
unsigned int data, unsigned int clock, const char *name,
|
unsigned int data, unsigned int clock, const char *name)
|
||||||
int class)
|
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
@ -112,7 +111,6 @@ static int i2c_bus_reg(struct i2c_bit_adapter* b, struct matrox_fb_info* minfo,
|
||||||
snprintf(b->adapter.name, sizeof(b->adapter.name), name,
|
snprintf(b->adapter.name, sizeof(b->adapter.name), name,
|
||||||
minfo->fbcon.node);
|
minfo->fbcon.node);
|
||||||
i2c_set_adapdata(&b->adapter, b);
|
i2c_set_adapdata(&b->adapter, b);
|
||||||
b->adapter.class = class;
|
|
||||||
b->adapter.algo_data = &b->bac;
|
b->adapter.algo_data = &b->bac;
|
||||||
b->adapter.dev.parent = &minfo->pcidev->dev;
|
b->adapter.dev.parent = &minfo->pcidev->dev;
|
||||||
b->bac = matrox_i2c_algo_template;
|
b->bac = matrox_i2c_algo_template;
|
||||||
|
@ -160,27 +158,24 @@ static void* i2c_matroxfb_probe(struct matrox_fb_info* minfo) {
|
||||||
case MGA_2164:
|
case MGA_2164:
|
||||||
err = i2c_bus_reg(&m2info->ddc1, minfo,
|
err = i2c_bus_reg(&m2info->ddc1, minfo,
|
||||||
DDC1B_DATA, DDC1B_CLK,
|
DDC1B_DATA, DDC1B_CLK,
|
||||||
"DDC:fb%u #0", I2C_CLASS_DDC);
|
"DDC:fb%u #0");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
err = i2c_bus_reg(&m2info->ddc1, minfo,
|
err = i2c_bus_reg(&m2info->ddc1, minfo,
|
||||||
DDC1_DATA, DDC1_CLK,
|
DDC1_DATA, DDC1_CLK,
|
||||||
"DDC:fb%u #0", I2C_CLASS_DDC);
|
"DDC:fb%u #0");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (err)
|
if (err)
|
||||||
goto fail_ddc1;
|
goto fail_ddc1;
|
||||||
if (minfo->devflags.dualhead) {
|
if (minfo->devflags.dualhead) {
|
||||||
err = i2c_bus_reg(&m2info->ddc2, minfo,
|
err = i2c_bus_reg(&m2info->ddc2, minfo, DDC2_DATA, DDC2_CLK, "DDC:fb%u #1");
|
||||||
DDC2_DATA, DDC2_CLK,
|
|
||||||
"DDC:fb%u #1", I2C_CLASS_DDC);
|
|
||||||
if (err == -ENODEV) {
|
if (err == -ENODEV) {
|
||||||
printk(KERN_INFO "i2c-matroxfb: VGA->TV plug detected, DDC unavailable.\n");
|
printk(KERN_INFO "i2c-matroxfb: VGA->TV plug detected, DDC unavailable.\n");
|
||||||
} else if (err)
|
} else if (err)
|
||||||
printk(KERN_INFO "i2c-matroxfb: Could not register secondary output i2c bus. Continuing anyway.\n");
|
printk(KERN_INFO "i2c-matroxfb: Could not register secondary output i2c bus. Continuing anyway.\n");
|
||||||
/* Register maven bus even on G450/G550 */
|
/* Register maven bus even on G450/G550 */
|
||||||
err = i2c_bus_reg(&m2info->maven, minfo,
|
err = i2c_bus_reg(&m2info->maven, minfo, MAT_DATA, MAT_CLK, "MAVEN:fb%u");
|
||||||
MAT_DATA, MAT_CLK, "MAVEN:fb%u", 0);
|
|
||||||
if (err)
|
if (err)
|
||||||
printk(KERN_INFO "i2c-matroxfb: Could not register Maven i2c bus. Continuing anyway.\n");
|
printk(KERN_INFO "i2c-matroxfb: Could not register Maven i2c bus. Continuing anyway.\n");
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -252,7 +252,6 @@ static int s3fb_setup_ddc_bus(struct fb_info *info)
|
||||||
strscpy(par->ddc_adapter.name, info->fix.id,
|
strscpy(par->ddc_adapter.name, info->fix.id,
|
||||||
sizeof(par->ddc_adapter.name));
|
sizeof(par->ddc_adapter.name));
|
||||||
par->ddc_adapter.owner = THIS_MODULE;
|
par->ddc_adapter.owner = THIS_MODULE;
|
||||||
par->ddc_adapter.class = I2C_CLASS_DDC;
|
|
||||||
par->ddc_adapter.algo_data = &par->ddc_algo;
|
par->ddc_adapter.algo_data = &par->ddc_algo;
|
||||||
par->ddc_adapter.dev.parent = info->device;
|
par->ddc_adapter.dev.parent = info->device;
|
||||||
par->ddc_algo.setsda = s3fb_ddc_setsda;
|
par->ddc_algo.setsda = s3fb_ddc_setsda;
|
||||||
|
|
|
@ -1267,7 +1267,6 @@ static int tdfxfb_setup_ddc_bus(struct tdfxfb_i2c_chan *chan, const char *name,
|
||||||
|
|
||||||
strscpy(chan->adapter.name, name, sizeof(chan->adapter.name));
|
strscpy(chan->adapter.name, name, sizeof(chan->adapter.name));
|
||||||
chan->adapter.owner = THIS_MODULE;
|
chan->adapter.owner = THIS_MODULE;
|
||||||
chan->adapter.class = I2C_CLASS_DDC;
|
|
||||||
chan->adapter.algo_data = &chan->algo;
|
chan->adapter.algo_data = &chan->algo;
|
||||||
chan->adapter.dev.parent = dev;
|
chan->adapter.dev.parent = dev;
|
||||||
chan->algo.setsda = tdfxfb_ddc_setsda;
|
chan->algo.setsda = tdfxfb_ddc_setsda;
|
||||||
|
|
|
@ -274,7 +274,6 @@ static int tridentfb_setup_ddc_bus(struct fb_info *info)
|
||||||
strscpy(par->ddc_adapter.name, info->fix.id,
|
strscpy(par->ddc_adapter.name, info->fix.id,
|
||||||
sizeof(par->ddc_adapter.name));
|
sizeof(par->ddc_adapter.name));
|
||||||
par->ddc_adapter.owner = THIS_MODULE;
|
par->ddc_adapter.owner = THIS_MODULE;
|
||||||
par->ddc_adapter.class = I2C_CLASS_DDC;
|
|
||||||
par->ddc_adapter.algo_data = &par->ddc_algo;
|
par->ddc_adapter.algo_data = &par->ddc_algo;
|
||||||
par->ddc_adapter.dev.parent = info->device;
|
par->ddc_adapter.dev.parent = info->device;
|
||||||
if (is_oldclock(par->chip_id)) { /* not sure if this check is OK */
|
if (is_oldclock(par->chip_id)) { /* not sure if this check is OK */
|
||||||
|
|
|
@ -201,7 +201,6 @@ static int create_i2c_bus(struct i2c_adapter *adapter,
|
||||||
sprintf(adapter->name, "viafb i2c io_port idx 0x%02x",
|
sprintf(adapter->name, "viafb i2c io_port idx 0x%02x",
|
||||||
adap_cfg->ioport_index);
|
adap_cfg->ioport_index);
|
||||||
adapter->owner = THIS_MODULE;
|
adapter->owner = THIS_MODULE;
|
||||||
adapter->class = I2C_CLASS_DDC;
|
|
||||||
adapter->algo_data = algo;
|
adapter->algo_data = algo;
|
||||||
if (pdev)
|
if (pdev)
|
||||||
adapter->dev.parent = &pdev->dev;
|
adapter->dev.parent = &pdev->dev;
|
||||||
|
|
Loading…
Add table
Reference in a new issue