static int adt7316_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id) { struct adt7316_bus bus = { .client = client, .irq = client->irq, .read = adt7316_i2c_read, .write = adt7316_i2c_write, .multi_read = adt7316_i2c_multi_read, .multi_write = adt7316_i2c_multi_write, }; return adt7316_probe(&client->dev, &bus, id->name); } static const struct i2c_device_id adt7316_i2c_id[] = { { "adt7316", 0 }, { "adt7317", 0 }, { "adt7318", 0 }, { "adt7516", 0 }, { "adt7517", 0 }, { "adt7519", 0 }, { } }; MODULE_DEVICE_TABLE(i2c, adt7316_i2c_id); static const struct of_device_id adt7316_of_match[] = { { .compatible = "adi,adt7316" }, { .compatible = "adi,adt7317" },
static int __devinit adt7316_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id) { struct adt7316_bus bus = { .client = client, .irq = client->irq, .irq_flags = IRQF_TRIGGER_LOW, .read = adt7316_i2c_read, .write = adt7316_i2c_write, .multi_read = adt7316_i2c_multi_read, .multi_write = adt7316_i2c_multi_write, }; return adt7316_probe(&client->dev, &bus, id->name); } static int __devexit adt7316_i2c_remove(struct i2c_client *client) { return adt7316_remove(&client->dev); } static const struct i2c_device_id adt7316_i2c_id[] = { { "adt7316", 0 }, { "adt7317", 0 }, { "adt7318", 0 }, { "adt7516", 0 }, { "adt7517", 0 }, { "adt7519", 0 }, { } }; MODULE_DEVICE_TABLE(i2c, adt7316_i2c_id); #ifdef CONFIG_PM static int adt7316_i2c_suspend(struct i2c_client *client, pm_message_t message) { return adt7316_disable(&client->dev); } static int adt7316_i2c_resume(struct i2c_client *client) { return adt7316_enable(&client->dev); } #else # define adt7316_i2c_suspend NULL # define adt7316_i2c_resume NULL #endif static struct i2c_driver adt7316_driver = { .driver = { .name = "adt7316", .owner = THIS_MODULE, }, .probe = adt7316_i2c_probe, .remove = __devexit_p(adt7316_i2c_remove), .suspend = adt7316_i2c_suspend, .resume = adt7316_i2c_resume, .id_table = adt7316_i2c_id, };
static int adt7316_spi_probe(struct spi_device *spi_dev) { struct adt7316_bus bus = { .client = spi_dev, .irq = spi_dev->irq, .irq_flags = IRQF_TRIGGER_LOW, .read = adt7316_spi_read, .write = adt7316_spi_write, .multi_read = adt7316_spi_multi_read, .multi_write = adt7316_spi_multi_write, }; /* don't exceed max specified SPI CLK frequency */ if (spi_dev->max_speed_hz > ADT7316_SPI_MAX_FREQ_HZ) { dev_err(&spi_dev->dev, "SPI CLK %d Hz?\n", spi_dev->max_speed_hz); return -EINVAL; } /* switch from default I2C protocol to SPI protocol */ adt7316_spi_write(spi_dev, 0, 0); adt7316_spi_write(spi_dev, 0, 0); adt7316_spi_write(spi_dev, 0, 0); return adt7316_probe(&spi_dev->dev, &bus, spi_dev->modalias); } static int adt7316_spi_remove(struct spi_device *spi_dev) { return adt7316_remove(&spi_dev->dev); } static const struct spi_device_id adt7316_spi_id[] = { { "adt7316", 0 }, { "adt7317", 0 }, { "adt7318", 0 }, { "adt7516", 0 }, { "adt7517", 0 }, { "adt7519", 0 }, { } }; MODULE_DEVICE_TABLE(spi, adt7316_spi_id); static struct spi_driver adt7316_driver = { .driver = { .name = "adt7316", .pm = ADT7316_PM_OPS, .owner = THIS_MODULE, }, .probe = adt7316_spi_probe, .remove = adt7316_spi_remove, .id_table = adt7316_spi_id, };
static int adt7316_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id) { struct adt7316_bus bus = { .client = client, .irq = client->irq, .irq_flags = IRQF_TRIGGER_LOW, .read = adt7316_i2c_read, .write = adt7316_i2c_write, .multi_read = adt7316_i2c_multi_read, .multi_write = adt7316_i2c_multi_write, }; return adt7316_probe(&client->dev, &bus, id->name); } static const struct i2c_device_id adt7316_i2c_id[] = { { "adt7316", 0 }, { "adt7317", 0 }, { "adt7318", 0 }, { "adt7516", 0 }, { "adt7517", 0 }, { "adt7519", 0 }, { } }; MODULE_DEVICE_TABLE(i2c, adt7316_i2c_id); static struct i2c_driver adt7316_driver = { .driver = { .name = "adt7316", .pm = ADT7316_PM_OPS, }, .probe = adt7316_i2c_probe, .id_table = adt7316_i2c_id, };