Linux设备驱动剖析之IIC(一)
Linux设备驱动剖析之IIC(一)
写在前面
Linux IIC子系统体系结构
__init i2c_init(
retval = bus_register(& i2c_adapter_compat_class = class_compat_register( (! retval = -
retval = i2c_add_driver(&
bus_unregister(& }
bus_type i2c_bus_type = .name = .match = .probe = .remove = .shutdown = .pm = & };
i2c_device_match( device *dev, device_driver * i2c_client *client = i2c_driver *
(!
driver =
(driver-> i2c_match_id(driver->id_table, client) !=
}
i2c_device_id *i2c_match_id( i2c_device_id * i2c_client * (id->name[ (strcmp(client->name, id->name) == id++ }
i2c_device_probe( device * i2c_client *client = i2c_driver *
(!
driver = to_i2c_driver(dev-> (!driver->probe || !driver-> - client->driver = (!device_can_wakeup(&client-> device_init_wakeup(&client-> client->flags & dev_dbg(dev,
status = driver->probe(client, i2c_match_id(driver-> client->driver = }
platform_driver s3c24xx_i2c_driver = .probe = .remove = .id_table = .driver = .owner = .name = .pm =
__init i2c_adap_s3c_init( platform_driver_register(& subsys_initcall(i2c_adap_s3c_init);
s3c24xx_i2c_probe( platform_device * s3c24xx_i2c * s3c2410_platform_i2c * resource *
pdata = pdev-> (! dev_err(&pdev->dev, -
i2c = kzalloc(( (! dev_err(&pdev->dev, -
strlcpy(i2c->adap.name, , (i2c-> i2c->adap.owner = i2c->adap.algo = & i2c->adap.retries = i2c->adap. = I2C_CLASS_HWMON | i2c->tx_setup =
spin_lock_init(&i2c-> init_waitqueue_head(&i2c->
i2c->dev = &pdev-> i2c->clk = clk_get(&pdev->dev, (IS_ERR(i2c-> dev_err(&pdev->dev, ret = -
dev_dbg(&pdev->dev, , i2c->
clk_enable(i2c->
res = platform_get_resource(pdev, IORESOURCE_MEM, (res == dev_err(&pdev->dev, ret = -
i2c->ioarea = request_mem_region(res-> pdev->
(i2c->ioarea == dev_err(&pdev->dev, ret = -
i2c->regs = ioremap(res->
(i2c->regs == dev_err(&pdev->dev, ret = -
dev_dbg(&pdev->dev, i2c->regs, i2c->
i2c->adap.algo_data = i2c->adap.dev.parent = &pdev->
ret = (ret !=
i2c->irq = ret = platform_get_irq(pdev, (ret <= dev_err(&pdev->dev,
ret = request_irq(i2c-> dev_name(&pdev->
(ret != dev_err(&pdev->dev,