aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Scott <michael.scott@linaro.org>2015-03-04 23:15:59 -0800
committerMichael Scott <michael.scott@linaro.org>2015-03-05 10:03:30 -0800
commita75435d5fa7275d38771abc1e3a399cbf6ebd0ea (patch)
treeffc7817e63f4c37eba2dd4499d9078502d56e246
parent68374fce20177ad297c362f9e06587c326dfa541 (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.c26
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);