static enum pmic_ids camera_pmic_probe(void) { /* search by client name */ struct i2c_client *client; if (i2c_find_client_by_name(PMIC_HID_ROHM)) return PMIC_ROHM; client = i2c_find_client_by_name(PMIC_HID_XPOWER); if (client) return PMIC_XPOWER; client = i2c_find_client_by_name(PMIC_HID_TI); if (client) return PMIC_TI; return PMIC_MAX; }
/* * In BTY, ACPI enumination will register all the camera i2c devices * which will cause v4l2_i2c_new_subdev_board() failed called in atomisp * driver. * Here we unregister the devices registered by ACPI */ static void atomisp_unregister_acpi_devices(struct atomisp_platform_data *pdata) { const char *subdev_name[] = { "3-0053", /* FFRD8 lm3554 */ "4-0036", /* ov2722 */ "4-0010", /* imx1xx Sensor*/ "4-0053", /* FFRD10 lm3554 */ "4-0054", /* imx1xx EEPROM*/ "4-000c", /* imx1xx driver*/ "2-0053", /* byt-crv2 lm3554*/ "2-0063", /* byt-crv2 lm3642*/ "2-0010", /* imx1xx driver*/ "2-0036", /* ov2722 driver*/ "2-003c", /* gc2235 driver*/ "2-0010", /* CHT OV5693 */ "4-003c", /* CHT AP1302 */ "1-0053", /* CHT lm3554 */ "4-001f", /* CHT m10mo */ #if 0 "INTCF0B:00", /* From ACPI ov2722 */ "INTCF1A:00", /* From ACPI imx175 */ "INTCF1C:00", /* From ACPI lm3554 */ #endif }; struct device *dev; struct i2c_client *client; struct i2c_board_info board_info; int i; /* search by device name */ for (i = 0; i < ARRAY_SIZE(subdev_name); i++) { dev = bus_find_device_by_name(&i2c_bus_type, NULL, subdev_name[i]); if (dev) { client = to_i2c_client(dev); board_info.flags = client->flags; board_info.addr = client->addr; board_info.irq = client->irq; strlcpy(board_info.type, client->name, sizeof(client->name)); i2c_unregister_device(client); } } #if 0 /* search by client name */ for (i = 0; i < ARRAY_SIZE(subdev_name); i++) { client = i2c_find_client_by_name(subdev_name[i]); if (client) { board_info.flags = client->flags; board_info.addr = client->addr; board_info.irq = client->irq; strlcpy(board_info.type, client->name, sizeof(client->name)); i2c_unregister_device(client); } } #endif }
static enum pmic_ids camera_pmic_probe() { /* search by client name */ struct i2c_client *client; if (spid.hardware_id != BYT_TABLET_BLK_CRV2 || i2c_find_client_by_name(PMIC_HID_ROHM)) return PMIC_ROHM; client = i2c_find_client_by_name(PMIC_HID_XPOWER); if (client) return PMIC_XPOWER; client = i2c_find_client_by_name(PMIC_HID_TI); if (client) return PMIC_TI; return PMIC_MAX; }