[PATCH] switch enable UART0 by press [S] switch USBBOOT mode by press [U]

Adam Wang adam at qi-hardware.com
Thu Nov 26 08:36:40 EST 2009


Hi XiangFu,

I like this great patch.
Adam
On Thu, Nov 26, 2009 at 3:48 PM, Xiangfu Liu <xiangfu at qi-hardware.com>wrote:

> ---
>  .../patches/0003-disable-init-gpio-as-uart0.patch  |  130
> ++++++++++++++++++--
>  1 files changed, 117 insertions(+), 13 deletions(-)
>
> diff --git
> a/target/linux/xburst/image/u-boot/patches/0003-disable-init-gpio-as-uart0.patch
> b/target/linux/xburst/image/u-boot/patches/0003-disable-init-gpio-as-uart0.patch
> index f72a87c..e4b00cc 100644
> ---
> a/target/linux/xburst/image/u-boot/patches/0003-disable-init-gpio-as-uart0.patch
> +++
> b/target/linux/xburst/image/u-boot/patches/0003-disable-init-gpio-as-uart0.patch
> @@ -1,29 +1,133 @@
>  diff --git a/board/qi_lb60/qi_lb60.c b/board/qi_lb60/qi_lb60.c
> -index d13f2ab..86c33ba 100644
> +index d13f2ab..30ee73c 100644
>  --- a/board/qi_lb60/qi_lb60.c
>  +++ b/board/qi_lb60/qi_lb60.c
> -@@ -25,9 +25,11 @@ static void gpio_init(void)
> +@@ -25,11 +25,6 @@ static void gpio_init(void)
>        __gpio_as_sdram_32bit();
>
>        /*
>  -       * Initialize UART0 pins
> +-       */
> +-      __gpio_as_uart0();
> +-
> +-      /*
> +        * Initialize LCD pins
> +        */
> +       __gpio_as_lcd_18bit();
> +@@ -43,17 +38,30 @@ static void gpio_init(void)
> +        * Initialize Other pins
> +        */
> +       unsigned int i;
> ++      for (i = 0; i < 7; i++){
> ++              __gpio_as_input(GPIO_KEYIN_BASE + i);
> ++              __gpio_enable_pull(GPIO_KEYIN_BASE + i);
> ++      }
> ++
> +       for (i = 0; i < 8; i++) {
> +               __gpio_as_output(GPIO_KEYOUT_BASE + i);
> +-              __gpio_set_pin(GPIO_KEYOUT_BASE + i);
> ++              __gpio_clear_pin(GPIO_KEYOUT_BASE + i);
> +       }
> +
> +-      for (i = 0; i < 7; i++){
> +-              __gpio_as_input(GPIO_KEYIN_BASE + i);
> +-              __gpio_enable_pull(GPIO_KEYIN_BASE + i);
> ++      /*
>  +       * Initialize UART0 pins, in Ben NanoNote uart0 and keyin8 use the
>  +       * same gpio, init the gpio as uart0 cause a keyboard bug. so for
>  +       * end user we disable the uart0
> -        */
> --      __gpio_as_uart0();
> -+      /* __gpio_as_uart0(); */
> -
> -       /*
> -        * Initialize LCD pins
> -@@ -52,8 +54,8 @@ static void gpio_init(void)
> -               __gpio_as_input(GPIO_KEYIN_BASE + i);
> -               __gpio_enable_pull(GPIO_KEYIN_BASE + i);
> ++       */
> ++      if (__gpio_get_pin(GPIO_KEYIN_BASE + 2) == 0){
> ++              /* if pressed [S] */
> ++              printf("[S] pressed, enable UART0\n");
> ++              __gpio_as_uart0();
> ++      } else {
> ++              printf("[S] not pressed, disable UART0\n");
> ++              __gpio_as_input(GPIO_KEYIN_8);
> ++              __gpio_enable_pull(GPIO_KEYIN_8);
>        }
>  -      /* __gpio_as_input( GPIO_KEYIN_8 ); */
>  -      /* __gpio_enable_pull( GPIO_KEYIN_8 ); */
> -+      __gpio_as_input(GPIO_KEYIN_8);
> -+      __gpio_enable_pull(GPIO_KEYIN_8);
>
>        __gpio_as_output(GPIO_AUDIO_POP);
>        __gpio_set_pin(GPIO_AUDIO_POP);
> +diff --git a/nand_spl/nand_boot_jz4740.c b/nand_spl/nand_boot_jz4740.c
> +index 924a47a..146de19 100644
> +--- a/nand_spl/nand_boot_jz4740.c
> ++++ b/nand_spl/nand_boot_jz4740.c
> +@@ -24,10 +24,8 @@
> + #include <asm/io.h>
> + #include <asm/jz4740.h>
> +
> +-#define KEY_1_OUT       (32 * 3 + 21)
> +-#define KEY_1_IN        (32 * 3 + 19)
> +-#define KEY_2_OUT       (32 * 3 + 25)
> +-#define KEY_2_IN        (32 * 3 + 26)
> ++#define KEY_U_OUT       (32 * 2 + 16)
> ++#define KEY_U_IN        (32 * 3 + 19)
> +
> + /*
> +  * NAND flash definitions
> +@@ -350,40 +348,25 @@ static void gpio_init(void)
> +
> + static int is_usb_boot()
> + {
> +-      int key2,keyh;
> +-
> +-      key2 = 0;
> +-      keyh = 0;
> ++      int keyU = 0;
> +
> +-      __gpio_as_output(KEY_1_OUT);
> +-      __gpio_as_output(KEY_2_OUT);
> +-      __gpio_as_input(KEY_1_IN);
> +-      __gpio_as_input(KEY_2_IN);
> +-      __gpio_disable_pull(KEY_1_IN);
> +-      __gpio_disable_pull(KEY_2_IN);
> ++      __gpio_as_input(KEY_U_IN);
> ++      __gpio_enable_pull(KEY_U_IN);
> +
> +-      __gpio_clear_pin(KEY_1_OUT);
> +-      __gpio_clear_pin(KEY_2_OUT);
> +-
> +-      key2 = __gpio_get_pin(KEY_2_IN);
> +-      keyh = __gpio_get_pin(KEY_1_IN);
> ++      __gpio_as_output(KEY_U_OUT);
> ++      __gpio_clear_pin(KEY_U_OUT);
> +
> +-      if(key2)
> +-              serial_puts("key2");
> +-      else
> +-              serial_puts("key2--");
> ++      keyU = __gpio_get_pin(KEY_U_IN);
> +
> +-      if(keyh)
> +-              serial_puts("keyh");
> ++      if (keyU)
> ++              serial_puts("[U] not pressed\n");
> +       else
> +-              serial_puts("keyh--");
> ++              serial_puts("[U] pressed\n");
> +
> +-
> +-      if( ( key2 == 0 ) && ( keyh == 0 ) )
> ++      if (keyU == 0)
> +               return 1;
> +       else
> +               return 0;
> +-
> + }
> +
> + void nand_boot(void)
> +@@ -402,9 +385,8 @@ void nand_boot(void)
> +       pll_init();
> +       sdram_init();
> +
> +-      int ret = 0;
> +-      ret = is_usb_boot();
> +-      if(ret) {
> ++      if(is_usb_boot()) {
> ++              serial_puts("enter USB BOOT mode\n");
> +               usb_boot();
> +       }
> +
> --
> 1.6.3.3
>
>
> _______________________________________________
> Qi Developer Mailing List
> Mail to list (members only): developer at lists.qi-hardware.com
> Subscribe or Unsubscribe:
> http://lists.qi-hardware.com/cgi-bin/mailman/listinfo/developer
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.en.qi-hardware.com/pipermail/discussion/attachments/20091126/e6a54198/attachment.htm>


More information about the discussion mailing list


interactive