Message ID | 1485436049-19754-6-git-send-email-rogerq@ti.com |
---|---|
State | New |
Headers | show |
Series | am57xx-idk LCD and am571x-idk 6 port ethernet pinmux | expand |
[...] > diff --git a/include/configs/ti_omap5_common.h b/include/configs/ti_omap5_common.h > index 6de19c2..1fa2f82 100644 > --- a/include/configs/ti_omap5_common.h > +++ b/include/configs/ti_omap5_common.h > @@ -91,16 +91,22 @@ > "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ > "if test $board_name = beagle_x15_revb1; then " \ > "setenv fdtfile am57xx-beagle-x15-revb1.dtb; fi;" \ > - "if test $board_name = am572x_idk; then " \ > - "setenv fdtfile am572x-idk.dtb; fi;" \ > "if test $board_name = am57xx_evm; then " \ > "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ > "if test $board_name = am57xx_evm_reva3; then " \ > "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ > + "if test $board_name = am572x_idk && test $idk_lcd = no; then " \ > + "setenv fdtfile am572x-idk.dtb; fi;" \ > + "if test $board_name = am572x_idk && test $idk_lcd = osd101t2045; then " \ > + "setenv fdtfile am572x-idk-lcd-osd.dtb; fi;" \ > + "if test $board_name = am572x_idk && test $idk_lcd = osd101t2587; then " \ > + "setenv fdtfile am572x-idk-lcd-osd101t2587.dtb; fi;" \ > "if test $board_name = am571x_idk && test $idk_lcd = no; then " \ > "setenv fdtfile am571x-idk.dtb; fi;" \ > "if test $board_name = am571x_idk && test $idk_lcd = osd101t2045; then " \ > "setenv fdtfile am571x-idk-lcd-osd.dtb; fi;" \ > + "if test $board_name = am571x_idk && test $idk_lcd = osd101t2587; then " \ > + "setenv fdtfile am571x-idk-lcd-osd101t2587.dtb; fi;" \ please drop the fdt selection from your patches. upstream will be using dt overlay for these variations. rest of the detection code is ok to go. --- Regards, Nishanth Menon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
On Thu, Jan 26, 2017 at 03:07:27PM +0200, Roger Quadros wrote: > From: Nishanth Menon <nm@ti.com> > > AM571x IDK and AM572x IDK have optional LCD Kits that can be purchased. > These can be one of OSD101T2045 or the newer OSD101T2587. The LCD panel > itself has no registers that can be used to identify the panel, however, > the touchscreen controllers on the panels are different. > > Hence to ease user experience, we can use the touch screen controller's > ID information to detect what kind of panel we use and select the > appropriate kernel dtb for the platform configuration. > > NOTE: AM572x IDK default configuration is for LCD Connectivity, however > the AM571x IDK has a jumper (J51) that needs to be mounted for the IDK > to operate with LCD (Vs two PRUSS ethernet port option). > > Touchscreen ID information is documented in: > http://www.osddisplays.com/TI/OSD101T2587-53TS_A.1.pdf > > Acked-by: Lokesh Vutla <lokeshvutla@ti.com> > Signed-off-by: Nishanth Menon <nm@ti.com> > Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com> > Signed-off-by: Roger Quadros <rogerq@ti.com> Reviewed-by: Tom Rini <trini@konsulko.com> -- Tom _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
On 26/01/17 19:33, menon.nishanth@gmail.com wrote: > [...] > > >> diff --git a/include/configs/ti_omap5_common.h b/include/configs/ti_omap5_common.h >> index 6de19c2..1fa2f82 100644 >> --- a/include/configs/ti_omap5_common.h >> +++ b/include/configs/ti_omap5_common.h >> @@ -91,16 +91,22 @@ >> "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ >> "if test $board_name = beagle_x15_revb1; then " \ >> "setenv fdtfile am57xx-beagle-x15-revb1.dtb; fi;" \ >> - "if test $board_name = am572x_idk; then " \ >> - "setenv fdtfile am572x-idk.dtb; fi;" \ >> "if test $board_name = am57xx_evm; then " \ >> "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ >> "if test $board_name = am57xx_evm_reva3; then " \ >> "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ >> + "if test $board_name = am572x_idk && test $idk_lcd = no; then " \ >> + "setenv fdtfile am572x-idk.dtb; fi;" \ >> + "if test $board_name = am572x_idk && test $idk_lcd = osd101t2045; then " \ >> + "setenv fdtfile am572x-idk-lcd-osd.dtb; fi;" \ >> + "if test $board_name = am572x_idk && test $idk_lcd = osd101t2587; then " \ >> + "setenv fdtfile am572x-idk-lcd-osd101t2587.dtb; fi;" \ >> "if test $board_name = am571x_idk && test $idk_lcd = no; then " \ >> "setenv fdtfile am571x-idk.dtb; fi;" \ >> "if test $board_name = am571x_idk && test $idk_lcd = osd101t2045; then " \ >> "setenv fdtfile am571x-idk-lcd-osd.dtb; fi;" \ >> + "if test $board_name = am571x_idk && test $idk_lcd = osd101t2587; then " \ >> + "setenv fdtfile am571x-idk-lcd-osd101t2587.dtb; fi;" \ > > > please drop the fdt selection from your patches. upstream will be > using dt overlay for these variations. rest of the detection code is > ok to go. > OK. Just to clarify, dt overlay code will use the idk_lcd variable to patch the DT right? cheeers, -roger _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
On Fri, Jan 27, 2017 at 2:54 AM, Roger Quadros <rogerq@ti.com> wrote: > On 26/01/17 19:33, menon.nishanth@gmail.com wrote: >> [...] >> >> >>> diff --git a/include/configs/ti_omap5_common.h b/include/configs/ti_omap5_common.h >>> index 6de19c2..1fa2f82 100644 >>> --- a/include/configs/ti_omap5_common.h >>> +++ b/include/configs/ti_omap5_common.h >>> @@ -91,16 +91,22 @@ >>> "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ >>> "if test $board_name = beagle_x15_revb1; then " \ >>> "setenv fdtfile am57xx-beagle-x15-revb1.dtb; fi;" \ >>> - "if test $board_name = am572x_idk; then " \ >>> - "setenv fdtfile am572x-idk.dtb; fi;" \ >>> "if test $board_name = am57xx_evm; then " \ >>> "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ >>> "if test $board_name = am57xx_evm_reva3; then " \ >>> "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ >>> + "if test $board_name = am572x_idk && test $idk_lcd = no; then " \ >>> + "setenv fdtfile am572x-idk.dtb; fi;" \ >>> + "if test $board_name = am572x_idk && test $idk_lcd = osd101t2045; then " \ >>> + "setenv fdtfile am572x-idk-lcd-osd.dtb; fi;" \ >>> + "if test $board_name = am572x_idk && test $idk_lcd = osd101t2587; then " \ >>> + "setenv fdtfile am572x-idk-lcd-osd101t2587.dtb; fi;" \ >>> "if test $board_name = am571x_idk && test $idk_lcd = no; then " \ >>> "setenv fdtfile am571x-idk.dtb; fi;" \ >>> "if test $board_name = am571x_idk && test $idk_lcd = osd101t2045; then " \ >>> "setenv fdtfile am571x-idk-lcd-osd.dtb; fi;" \ >>> + "if test $board_name = am571x_idk && test $idk_lcd = osd101t2587; then " \ >>> + "setenv fdtfile am571x-idk-lcd-osd101t2587.dtb; fi;" \ >> >> >> please drop the fdt selection from your patches. upstream will be >> using dt overlay for these variations. rest of the detection code is >> ok to go. >> > > OK. > Just to clarify, dt overlay code will use the idk_lcd variable to patch the DT right? That'd make sense. Regards, Nishanth Menon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c index 81ad86c..9ec0448 100644 --- a/board/ti/am57xx/board.c +++ b/board/ti/am57xx/board.c @@ -54,6 +54,19 @@ DECLARE_GLOBAL_DATA_PTR; /* GPIO 7_11 */ #define GPIO_DDR_VTT_EN 203 +/* Touch screen controller to identify the LCD */ +#define OSD_TS_FT_BUS_ADDRESS 0 +#define OSD_TS_FT_CHIP_ADDRESS 0x38 +#define OSD_TS_FT_REG_ID 0xA3 +/* + * Touchscreen IDs for various OSD panels + * Ref: http://www.osddisplays.com/TI/OSD101T2587-53TS_A.1.pdf + */ +/* Used on newer osd101t2587 Panels */ +#define OSD_TS_FT_ID_5x46 0x54 +/* Used on older osd101t2045 Panels */ +#define OSD_TS_FT_ID_5606 0x08 + #define SYSINFO_BOARD_NAME_MAX_LEN 45 #define TPS65903X_PRIMARY_SECONDARY_PAD2 0xFB @@ -473,10 +486,64 @@ int board_init(void) return 0; } -int board_late_init(void) +void am57x_idk_lcd_detect(void) { - char *idk_lcd; + int r = -ENODEV; + char *idk_lcd = "no"; + uint8_t buf = 0; + + /* Only valid for IDKs */ + if (board_is_x15() || board_is_am572x_evm()) + return; + + /* Only AM571x IDK has gpio control detect.. so check that */ + if (board_is_am571x_idk() && !am571x_idk_needs_lcd()) + goto out; + + r = i2c_set_bus_num(OSD_TS_FT_BUS_ADDRESS); + if (r) { + printf("%s: Failed to set bus address to %d: %d\n", + __func__, OSD_TS_FT_BUS_ADDRESS, r); + goto out; + } + r = i2c_probe(OSD_TS_FT_CHIP_ADDRESS); + if (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 = i2c_read(OSD_TS_FT_CHIP_ADDRESS, OSD_TS_FT_REG_ID, 1, &buf, 1); + if (r) { + 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; + } + + switch (buf) { + case OSD_TS_FT_ID_5606: + idk_lcd = "osd101t2045"; + break; + case OSD_TS_FT_ID_5x46: + idk_lcd = "osd101t2587"; + break; + default: + printf("%s: Unidentifed Touch screen ID 0x%02x\n", + __func__, buf); + /* we will let default be "no lcd" */ + } +out: + setenv("idk_lcd", idk_lcd); + return; +} +int board_late_init(void) +{ setup_board_eeprom_env(); u8 val; @@ -505,12 +572,7 @@ int board_late_init(void) palmas_i2c_write_u8(TPS65903X_CHIP_P1, TPS65903X_PRIMARY_SECONDARY_PAD2, val); - /* TBD: Add LCD panel detection once information is available */ - if (am571x_idk_needs_lcd()) - idk_lcd = "osd101t2045"; /* Default to legacy LCD */ - else - idk_lcd = "no"; - setenv("idk_lcd", idk_lcd); + am57x_idk_lcd_detect(); #if !defined(CONFIG_SPL_BUILD) board_ti_set_ethaddr(2); diff --git a/include/configs/ti_omap5_common.h b/include/configs/ti_omap5_common.h index 6de19c2..1fa2f82 100644 --- a/include/configs/ti_omap5_common.h +++ b/include/configs/ti_omap5_common.h @@ -91,16 +91,22 @@ "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ "if test $board_name = beagle_x15_revb1; then " \ "setenv fdtfile am57xx-beagle-x15-revb1.dtb; fi;" \ - "if test $board_name = am572x_idk; then " \ - "setenv fdtfile am572x-idk.dtb; fi;" \ "if test $board_name = am57xx_evm; then " \ "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ "if test $board_name = am57xx_evm_reva3; then " \ "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ + "if test $board_name = am572x_idk && test $idk_lcd = no; then " \ + "setenv fdtfile am572x-idk.dtb; fi;" \ + "if test $board_name = am572x_idk && test $idk_lcd = osd101t2045; then " \ + "setenv fdtfile am572x-idk-lcd-osd.dtb; fi;" \ + "if test $board_name = am572x_idk && test $idk_lcd = osd101t2587; then " \ + "setenv fdtfile am572x-idk-lcd-osd101t2587.dtb; fi;" \ "if test $board_name = am571x_idk && test $idk_lcd = no; then " \ "setenv fdtfile am571x-idk.dtb; fi;" \ "if test $board_name = am571x_idk && test $idk_lcd = osd101t2045; then " \ "setenv fdtfile am571x-idk-lcd-osd.dtb; fi;" \ + "if test $board_name = am571x_idk && test $idk_lcd = osd101t2587; then " \ + "setenv fdtfile am571x-idk-lcd-osd101t2587.dtb; fi;" \ "if test $fdtfile = undefined; then " \ "echo WARNING: Could not determine device tree to use; fi; \0" \ DFUARGS \