diff options
author | Michael Scott <michael.scott@linaro.org> | 2015-03-04 23:15:59 -0800 |
---|---|---|
committer | Michael Scott <michael.scott@linaro.org> | 2015-03-05 10:03:30 -0800 |
commit | a75435d5fa7275d38771abc1e3a399cbf6ebd0ea (patch) | |
tree | ffc7817e63f4c37eba2dd4499d9078502d56e246 | |
parent | 68374fce20177ad297c362f9e06587c326dfa541 (diff) |
pxa1928_concord: re-add dts cleanup for touchscreen
Simplified source based on Marvell u-boot tag pxa1928_lp5.0.alpha
Change-Id: I25a3781645e695172cadc8582374c2751fe5d364
Signed-off-by: Michael Scott <michael.scott@linaro.org>
-rw-r--r-- | board/Marvell/pxa1928_concord/pxa1928_concord.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/board/Marvell/pxa1928_concord/pxa1928_concord.c b/board/Marvell/pxa1928_concord/pxa1928_concord.c index 0910ad5425..92e3d76bcf 100644 --- a/board/Marvell/pxa1928_concord/pxa1928_concord.c +++ b/board/Marvell/pxa1928_concord/pxa1928_concord.c @@ -376,6 +376,25 @@ int recovery_key_detect(void) #endif #if defined(CONFIG_OF_BOARD_SETUP) +static uchar touch_detect(void) +{ + uchar data; + int ret; + uchar slave_addr[] = {0x22, 0x20, 0x5d, 0xff}; + int index = 0; + + i2c_set_bus_num(4); + while (slave_addr[index] != 0xff) { + ret = i2c_read(slave_addr[index], 0x0, 1, &data, 1); + if (!ret) + return slave_addr[index]; + index++; + } + printf("No touch panel\n"); + + return 0xff; +} + void ft_board_setup(void *devtree, bd_t *bd) { char cmd[128]; @@ -384,6 +403,13 @@ void ft_board_setup(void *devtree, bd_t *bd) sprintf(cmd, "fdt addr 0x%p", devtree); run_command(cmd, 0); + uchar touch_slave = touch_detect(); + run_command("fdt rm /soc/apb@d4000000/i2c@d4033800/gt913@5d", 0); + run_command("fdt rm /soc/apb@d4000000/i2c@d4033800/s3202@720p", 0); + sprintf(cmd, "fdt set /soc/apb@d4000000/i2c@d4033800/s3202@1080p reg <%d>\n", touch_slave); + run_command(cmd, 0); + run_command("fdt set /soc/axi/disp/path1/pn_sclk_clksrc clksrc pll3", 0); + if (3 == board_rev || 4 == board_rev) { run_command("fdt set /soc/apb@d4000000/i2c@d4031000/mpu9250@69 negate_x <1>", 0); run_command("fdt set /soc/apb@d4000000/i2c@d4031000/mpu9250@69 negate_y <1>", 0); |