浏览代码

efika: Fix board id detection

Current code is assuming that gpio_get_value() is returning 0 or 1 but it
should be checking if the value is 0 or not. Not doing it properly is breaking
the detection of the board (and thus the reboot of efika mx to2) when using
the new mxc gpio driver, which relies on basic mmio gpio.

Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Arnaud Patard (Rtp) 14 年之前
父节点
当前提交
fbd60a7e87
共有 2 个文件被更改,包括 5 次插入5 次删除
  1. 3 3
      arch/arm/mach-mx5/board-mx51_efikamx.c
  2. 2 2
      arch/arm/mach-mx5/board-mx51_efikasb.c

+ 3 - 3
arch/arm/mach-mx5/board-mx51_efikamx.c

@@ -108,9 +108,9 @@ static void __init mx51_efikamx_board_id(void)
 	gpio_request(EFIKAMX_PCBID2, "pcbid2");
 	gpio_request(EFIKAMX_PCBID2, "pcbid2");
 	gpio_direction_input(EFIKAMX_PCBID2);
 	gpio_direction_input(EFIKAMX_PCBID2);
 
 
-	id = gpio_get_value(EFIKAMX_PCBID0);
-	id |= gpio_get_value(EFIKAMX_PCBID1) << 1;
-	id |= gpio_get_value(EFIKAMX_PCBID2) << 2;
+	id = gpio_get_value(EFIKAMX_PCBID0) ? 1 : 0;
+	id |= (gpio_get_value(EFIKAMX_PCBID1) ? 1 : 0) << 1;
+	id |= (gpio_get_value(EFIKAMX_PCBID2) ? 1 : 0) << 2;
 
 
 	switch (id) {
 	switch (id) {
 	case 7:
 	case 7:

+ 2 - 2
arch/arm/mach-mx5/board-mx51_efikasb.c

@@ -232,8 +232,8 @@ static void __init mx51_efikasb_board_id(void)
 	gpio_request(EFIKASB_PCBID1, "pcb id1");
 	gpio_request(EFIKASB_PCBID1, "pcb id1");
 	gpio_direction_input(EFIKASB_PCBID1);
 	gpio_direction_input(EFIKASB_PCBID1);
 
 
-	id = gpio_get_value(EFIKASB_PCBID0);
-	id |= gpio_get_value(EFIKASB_PCBID1) << 1;
+	id = gpio_get_value(EFIKASB_PCBID0) ? 1 : 0;
+	id |= (gpio_get_value(EFIKASB_PCBID1) ? 1 : 0) << 1;
 
 
 	switch (id) {
 	switch (id) {
 	default:
 	default: