{
int r = -ENODEV;
char *idk_lcd = "no";
- uint8_t buf = 0;
+ u8 buf = 0;
/* Only valid for IDKs */
if (board_is_x15() || board_is_am572x_evm())
if (board_is_am571x_idk() && !am571x_idk_needs_lcd())
goto out;
+#ifndef CONFIG_DM_I2C
r = i2c_set_bus_num(OSD_TS_FT_BUS_ADDRESS);
if (r) {
printf("%s: Failed to set bus address to %d: %d\n",
OSD_TS_FT_REG_ID, r);
goto out;
}
+#else
+ struct udevice *dev;
+
+ r = i2c_get_chip_for_busnum(OSD_TS_FT_BUS_ADDRESS,
+ OSD_TS_FT_CHIP_ADDRESS, 1, &dev);
+ if (r) {
+ printf("%s: Failed to get I2C device %d/%d (ret %d)\n",
+ __func__, OSD_TS_FT_BUS_ADDRESS, OSD_TS_FT_CHIP_ADDRESS,
+ r);
+ /* AM572x IDK has no explicit settings for optional LCD kit */
+ if (board_is_am571x_idk())
+ printf("%s: Touch screen detect failed: %d!\n",
+ __func__, r);
+ goto out;
+ }
+
+ /* Read FT ID */
+ r = dm_i2c_reg_read(dev, OSD_TS_FT_REG_ID);
+ if (r < 0) {
+ printf("%s: Touch screen ID read %d:0x%02x[0x%02x] failed:%d\n",
+ __func__, OSD_TS_FT_BUS_ADDRESS, OSD_TS_FT_CHIP_ADDRESS,
+ OSD_TS_FT_REG_ID, r);
+ goto out;
+ }
+ buf = (u8)r;
+#endif
switch (buf) {
case OSD_TS_FT_ID_5606: