提交 12a917f6 编写于 作者: J Jean Delvare 提交者: Jean Delvare

i2c: Declare more i2c_adapter parent devices

Declare the parent device of i2c_adapter devices each time we can
easily do so. It makes the i2c_adapter appear at the right place in
the device tree, rather than as a platform device.
Signed-off-by: NJean Delvare <khali@linux-fr.org>
Cc: David Brownell <dbrownell@users.sourceforge.net>
Cc: Len Brown <len.brown@intel.com>
Cc: Jordan Crouse <jordan.crouse@amd.com>
Cc: Jody McIntyre <scjody@modernduck.com>
Cc: Stefan Richter <stefanr@s5r6.in-berlin.de>
Cc: v4l-dvb-maintainer@linuxtv.org
Cc: Petr Vandrovec <vandrove@vc.cvut.cz>
上级 beb58aa3
...@@ -340,6 +340,7 @@ static int acpi_ec_hc_add(struct acpi_device *device) ...@@ -340,6 +340,7 @@ static int acpi_ec_hc_add(struct acpi_device *device)
smbus->adapter.owner = THIS_MODULE; smbus->adapter.owner = THIS_MODULE;
smbus->adapter.algo = &acpi_ec_smbus_algorithm; smbus->adapter.algo = &acpi_ec_smbus_algorithm;
smbus->adapter.algo_data = smbus; smbus->adapter.algo_data = smbus;
smbus->adapter.dev.parent = &device->dev;
if (i2c_add_adapter(&smbus->adapter)) { if (i2c_add_adapter(&smbus->adapter)) {
ACPI_DEBUG_PRINT((ACPI_DB_WARN, ACPI_DEBUG_PRINT((ACPI_DB_WARN,
......
...@@ -184,12 +184,14 @@ static int __init amd756_s4882_init(void) ...@@ -184,12 +184,14 @@ static int __init amd756_s4882_init(void)
s4882_algo[0].smbus_xfer = amd756_access_virt0; s4882_algo[0].smbus_xfer = amd756_access_virt0;
s4882_adapter[0] = amd756_smbus; s4882_adapter[0] = amd756_smbus;
s4882_adapter[0].algo = s4882_algo; s4882_adapter[0].algo = s4882_algo;
s4882_adapter[0].dev.parent = amd756_smbus.dev.parent;
for (i = 1; i < 5; i++) { for (i = 1; i < 5; i++) {
s4882_algo[i] = *(amd756_smbus.algo); s4882_algo[i] = *(amd756_smbus.algo);
s4882_adapter[i] = amd756_smbus; s4882_adapter[i] = amd756_smbus;
sprintf(s4882_adapter[i].name, sprintf(s4882_adapter[i].name,
"SMBus 8111 adapter (CPU%d)", i-1); "SMBus 8111 adapter (CPU%d)", i-1);
s4882_adapter[i].algo = s4882_algo+i; s4882_adapter[i].algo = s4882_algo+i;
s4882_adapter[i].dev.parent = amd756_smbus.dev.parent;
} }
s4882_algo[1].smbus_xfer = amd756_access_virt1; s4882_algo[1].smbus_xfer = amd756_access_virt1;
s4882_algo[2].smbus_xfer = amd756_access_virt2; s4882_algo[2].smbus_xfer = amd756_access_virt2;
......
...@@ -727,6 +727,7 @@ static int __devinit iic_probe(struct ocp_device *ocp){ ...@@ -727,6 +727,7 @@ static int __devinit iic_probe(struct ocp_device *ocp){
/* Register it with i2c layer */ /* Register it with i2c layer */
adap = &dev->adap; adap = &dev->adap;
adap->dev.parent = &ocp->dev;
strcpy(adap->name, "IBM IIC"); strcpy(adap->name, "IBM IIC");
i2c_set_adapdata(adap, dev); i2c_set_adapdata(adap, dev);
adap->id = I2C_HW_OCP; adap->id = I2C_HW_OCP;
......
...@@ -520,6 +520,7 @@ mv64xxx_i2c_probe(struct platform_device *pd) ...@@ -520,6 +520,7 @@ mv64xxx_i2c_probe(struct platform_device *pd)
rc = -ENXIO; rc = -ENXIO;
goto exit_unmap_regs; goto exit_unmap_regs;
} }
drv_data->adapter.dev.parent = &pd->dev;
drv_data->adapter.id = I2C_HW_MV64XXX; drv_data->adapter.id = I2C_HW_MV64XXX;
drv_data->adapter.algo = &mv64xxx_i2c_algo; drv_data->adapter.algo = &mv64xxx_i2c_algo;
drv_data->adapter.owner = THIS_MODULE; drv_data->adapter.owner = THIS_MODULE;
......
...@@ -428,7 +428,7 @@ static __init int scx200_acb_probe(struct scx200_acb_iface *iface) ...@@ -428,7 +428,7 @@ static __init int scx200_acb_probe(struct scx200_acb_iface *iface)
} }
static __init struct scx200_acb_iface *scx200_create_iface(const char *text, static __init struct scx200_acb_iface *scx200_create_iface(const char *text,
int index) struct device *dev, int index)
{ {
struct scx200_acb_iface *iface; struct scx200_acb_iface *iface;
struct i2c_adapter *adapter; struct i2c_adapter *adapter;
...@@ -446,6 +446,7 @@ static __init struct scx200_acb_iface *scx200_create_iface(const char *text, ...@@ -446,6 +446,7 @@ static __init struct scx200_acb_iface *scx200_create_iface(const char *text,
adapter->id = I2C_HW_SMBUS_SCX200; adapter->id = I2C_HW_SMBUS_SCX200;
adapter->algo = &scx200_acb_algorithm; adapter->algo = &scx200_acb_algorithm;
adapter->class = I2C_CLASS_HWMON; adapter->class = I2C_CLASS_HWMON;
adapter->dev.parent = dev;
mutex_init(&iface->mutex); mutex_init(&iface->mutex);
...@@ -486,7 +487,7 @@ static __init int scx200_create_pci(const char *text, struct pci_dev *pdev, ...@@ -486,7 +487,7 @@ static __init int scx200_create_pci(const char *text, struct pci_dev *pdev,
struct scx200_acb_iface *iface; struct scx200_acb_iface *iface;
int rc; int rc;
iface = scx200_create_iface(text, 0); iface = scx200_create_iface(text, &pdev->dev, 0);
if (iface == NULL) if (iface == NULL)
return -ENOMEM; return -ENOMEM;
...@@ -524,7 +525,7 @@ static int __init scx200_create_isa(const char *text, unsigned long base, ...@@ -524,7 +525,7 @@ static int __init scx200_create_isa(const char *text, unsigned long base,
struct scx200_acb_iface *iface; struct scx200_acb_iface *iface;
int rc; int rc;
iface = scx200_create_iface(text, index); iface = scx200_create_iface(text, NULL, index);
if (iface == NULL) if (iface == NULL)
return -ENOMEM; return -ENOMEM;
......
...@@ -1434,6 +1434,7 @@ static int __devinit add_card(struct pci_dev *dev, ...@@ -1434,6 +1434,7 @@ static int __devinit add_card(struct pci_dev *dev,
i2c_adapter_data = bit_data; i2c_adapter_data = bit_data;
i2c_ad->algo_data = &i2c_adapter_data; i2c_ad->algo_data = &i2c_adapter_data;
i2c_adapter_data.data = lynx; i2c_adapter_data.data = lynx;
i2c_ad->dev.parent = &dev->dev;
PRINTD(KERN_DEBUG, lynx->id,"original eeprom control: %d", PRINTD(KERN_DEBUG, lynx->id,"original eeprom control: %d",
reg_read(lynx, SERIAL_EEPROM_CONTROL)); reg_read(lynx, SERIAL_EEPROM_CONTROL));
......
...@@ -190,6 +190,7 @@ int flexcop_i2c_init(struct flexcop_device *fc) ...@@ -190,6 +190,7 @@ int flexcop_i2c_init(struct flexcop_device *fc)
fc->i2c_adap.class = I2C_CLASS_TV_DIGITAL; fc->i2c_adap.class = I2C_CLASS_TV_DIGITAL;
fc->i2c_adap.algo = &flexcop_algo; fc->i2c_adap.algo = &flexcop_algo;
fc->i2c_adap.algo_data = NULL; fc->i2c_adap.algo_data = NULL;
fc->i2c_adap.dev.parent = fc->dev;
if ((ret = i2c_add_adapter(&fc->i2c_adap)) < 0) if ((ret = i2c_add_adapter(&fc->i2c_adap)) < 0)
return ret; return ret;
......
...@@ -27,6 +27,7 @@ int dvb_usb_i2c_init(struct dvb_usb_device *d) ...@@ -27,6 +27,7 @@ int dvb_usb_i2c_init(struct dvb_usb_device *d)
#endif #endif
d->i2c_adap.algo = d->props.i2c_algo; d->i2c_adap.algo = d->props.i2c_algo;
d->i2c_adap.algo_data = NULL; d->i2c_adap.algo_data = NULL;
d->i2c_adap.dev.parent = &d->udev->dev;
i2c_set_adapdata(&d->i2c_adap, d); i2c_set_adapdata(&d->i2c_adap, d);
......
...@@ -1690,6 +1690,7 @@ static int ttusb_probe(struct usb_interface *intf, const struct usb_device_id *i ...@@ -1690,6 +1690,7 @@ static int ttusb_probe(struct usb_interface *intf, const struct usb_device_id *i
#endif #endif
ttusb->i2c_adap.algo = &ttusb_dec_algo; ttusb->i2c_adap.algo = &ttusb_dec_algo;
ttusb->i2c_adap.algo_data = NULL; ttusb->i2c_adap.algo_data = NULL;
ttusb->i2c_adap.dev.parent = &udev->dev;
result = i2c_add_adapter(&ttusb->i2c_adap); result = i2c_add_adapter(&ttusb->i2c_adap);
if (result) { if (result) {
......
...@@ -549,6 +549,7 @@ static int cafe_smbus_setup(struct cafe_camera *cam) ...@@ -549,6 +549,7 @@ static int cafe_smbus_setup(struct cafe_camera *cam)
adap->client_unregister = cafe_smbus_detach; adap->client_unregister = cafe_smbus_detach;
adap->algo = &cafe_smbus_algo; adap->algo = &cafe_smbus_algo;
strcpy(adap->name, "cafe_ccic"); strcpy(adap->name, "cafe_ccic");
adap->dev.parent = &cam->pdev->dev;
i2c_set_adapdata(adap, cam); i2c_set_adapdata(adap, cam);
ret = i2c_add_adapter(adap); ret = i2c_add_adapter(adap);
if (ret) if (ret)
......
...@@ -977,6 +977,7 @@ void pvr2_i2c_core_init(struct pvr2_hdw *hdw) ...@@ -977,6 +977,7 @@ void pvr2_i2c_core_init(struct pvr2_hdw *hdw)
memcpy(&hdw->i2c_adap,&pvr2_i2c_adap_template,sizeof(hdw->i2c_adap)); memcpy(&hdw->i2c_adap,&pvr2_i2c_adap_template,sizeof(hdw->i2c_adap));
memcpy(&hdw->i2c_algo,&pvr2_i2c_algo_template,sizeof(hdw->i2c_algo)); memcpy(&hdw->i2c_algo,&pvr2_i2c_algo_template,sizeof(hdw->i2c_algo));
strlcpy(hdw->i2c_adap.name,hdw->name,sizeof(hdw->i2c_adap.name)); strlcpy(hdw->i2c_adap.name,hdw->name,sizeof(hdw->i2c_adap.name));
hdw->i2c_adap.dev.parent = &hdw->usb_dev->dev;
hdw->i2c_adap.algo = &hdw->i2c_algo; hdw->i2c_adap.algo = &hdw->i2c_algo;
hdw->i2c_adap.algo_data = hdw; hdw->i2c_adap.algo_data = hdw;
hdw->i2c_pend_mask = 0; hdw->i2c_pend_mask = 0;
......
...@@ -258,6 +258,7 @@ int usbvision_init_i2c(struct usb_usbvision *usbvision) ...@@ -258,6 +258,7 @@ int usbvision_init_i2c(struct usb_usbvision *usbvision)
sprintf(usbvision->i2c_adap.name + strlen(usbvision->i2c_adap.name), sprintf(usbvision->i2c_adap.name + strlen(usbvision->i2c_adap.name),
" #%d", usbvision->vdev->minor & 0x1f); " #%d", usbvision->vdev->minor & 0x1f);
PDEBUG(DBG_I2C,"Adaptername: %s", usbvision->i2c_adap.name); PDEBUG(DBG_I2C,"Adaptername: %s", usbvision->i2c_adap.name);
usbvision->i2c_adap.dev.parent = &usbvision->dev->dev;
i2c_set_adapdata(&usbvision->i2c_adap, usbvision); i2c_set_adapdata(&usbvision->i2c_adap, usbvision);
i2c_set_clientdata(&usbvision->i2c_client, usbvision); i2c_set_clientdata(&usbvision->i2c_client, usbvision);
......
...@@ -1573,6 +1573,7 @@ static int w9968cf_i2c_init(struct w9968cf_device* cam) ...@@ -1573,6 +1573,7 @@ static int w9968cf_i2c_init(struct w9968cf_device* cam)
memcpy(&cam->i2c_adapter, &adap, sizeof(struct i2c_adapter)); memcpy(&cam->i2c_adapter, &adap, sizeof(struct i2c_adapter));
strcpy(cam->i2c_adapter.name, "w9968cf"); strcpy(cam->i2c_adapter.name, "w9968cf");
cam->i2c_adapter.dev.parent = &cam->usbdev->dev;
i2c_set_adapdata(&cam->i2c_adapter, cam); i2c_set_adapdata(&cam->i2c_adapter, cam);
DBG(6, "Registering I2C adapter with kernel...") DBG(6, "Registering I2C adapter with kernel...")
......
...@@ -843,6 +843,7 @@ zoran_register_i2c (struct zoran *zr) ...@@ -843,6 +843,7 @@ zoran_register_i2c (struct zoran *zr)
sizeof(I2C_NAME(&zr->i2c_adapter)) - 1); sizeof(I2C_NAME(&zr->i2c_adapter)) - 1);
i2c_set_adapdata(&zr->i2c_adapter, zr); i2c_set_adapdata(&zr->i2c_adapter, zr);
zr->i2c_adapter.algo_data = &zr->i2c_algo; zr->i2c_adapter.algo_data = &zr->i2c_algo;
zr->i2c_adapter.dev.parent = &zr->pci_dev->dev;
return i2c_bit_add_bus(&zr->i2c_adapter); return i2c_bit_add_bus(&zr->i2c_adapter);
} }
......
...@@ -115,6 +115,7 @@ static int i2c_bus_reg(struct i2c_bit_adapter* b, struct matrox_fb_info* minfo, ...@@ -115,6 +115,7 @@ static int i2c_bus_reg(struct i2c_bit_adapter* b, struct matrox_fb_info* minfo,
minfo->fbcon.node); minfo->fbcon.node);
i2c_set_adapdata(&b->adapter, b); i2c_set_adapdata(&b->adapter, b);
b->adapter.algo_data = &b->bac; b->adapter.algo_data = &b->bac;
b->adapter.dev.parent = &ACCESS_FBINFO(pcidev)->dev;
b->bac = matrox_i2c_algo_template; b->bac = matrox_i2c_algo_template;
b->bac.data = b; b->bac.data = b;
err = i2c_bit_add_bus(&b->adapter); err = i2c_bit_add_bus(&b->adapter);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册