Re: [U-Boot] [PATCH v3 1/2] wandboard: add Future Eletronics 7" WVGA LCD extension board

2014-05-09 Thread Stefano Babic
On 02/05/2014 00:02, Otavio Salvador wrote:
> This adds support for the 7" WVGA produced by Future Eletronics and
> make it dynamically detect if it is connected or not based on the
> touchscreen controller.
> 
> Signed-off-by: Otavio Salvador 
> ---
> 

Applied after fixing the following compiler warning:

board/wandboard/wandboard.c: In function 'setup_display':
board/wandboard/wandboard.c:336:17: warning: unused variable 'iomux'
[-Wunused-variable]

Best regards,
Stefano Babic


-- 
=
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de
=
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v3 1/2] wandboard: add Future Eletronics 7" WVGA LCD extension board

2014-05-05 Thread Stefano Babic
Hi Otavio,

On 02/05/2014 00:02, Otavio Salvador wrote:
> This adds support for the 7" WVGA produced by Future Eletronics and
> make it dynamically detect if it is connected or not based on the
> touchscreen controller.
> 
> Signed-off-by: Otavio Salvador 
> ---
> 
> Changes in v3:
> - Drop LVDS related code (unused)
> 
> Changes in v2:
> - Drop LDB related code (unused)
> 
>  board/wandboard/wandboard.c | 147 
> 
>  include/configs/wandboard.h |   7 +++
>  2 files changed, 128 insertions(+), 26 deletions(-)
> 
> diff --git a/board/wandboard/wandboard.c b/board/wandboard/wandboard.c
> index f1951dc..311a442 100644
> --- a/board/wandboard/wandboard.c
> +++ b/board/wandboard/wandboard.c
> @@ -1,5 +1,6 @@
>  /*
>   * Copyright (C) 2013 Freescale Semiconductor, Inc.
> + * Copyright (C) 2014 O.S. Systems Software LTDA.
>   *
>   * Author: Fabio Estevam 
>   *
> @@ -15,18 +16,19 @@
>  #include 
>  #include 
>  #include 
> +#include 
>  #include 
> +#include 
>  #include 
>  #include 
>  #include 
>  #include 
> -#include 
>  #include 
>  #include 
>  #include 
> -#include 
>  #include 
>  #include 
> +#include 
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> @@ -41,6 +43,10 @@ DECLARE_GLOBAL_DATA_PTR;
>  #define ENET_PAD_CTRL  (PAD_CTL_PUS_100K_UP |\
>   PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
>  
> +#define I2C_PAD_CTRL (PAD_CTL_PUS_100K_UP |  \
> + PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS |   \
> + PAD_CTL_ODE | PAD_CTL_SRE_FAST)
> +
>  #define USDHC1_CD_GPIO   IMX_GPIO_NR(1, 2)
>  #define USDHC3_CD_GPIO   IMX_GPIO_NR(3, 9)
>  #define ETH_PHY_RESETIMX_GPIO_NR(3, 29)
> @@ -210,41 +216,124 @@ int board_phy_config(struct phy_device *phydev)
>  }
>  
>  #if defined(CONFIG_VIDEO_IPUV3)
> -static struct fb_videomode const hdmi = {
> - .name   = "HDMI",
> - .refresh= 60,
> - .xres   = 1024,
> - .yres   = 768,
> - .pixclock   = 15385,
> - .left_margin= 220,
> - .right_margin   = 40,
> - .upper_margin   = 21,
> - .lower_margin   = 7,
> - .hsync_len  = 60,
> - .vsync_len  = 10,
> - .sync   = FB_SYNC_EXT,
> - .vmode  = FB_VMODE_NONINTERLACED
> +struct i2c_pads_info i2c2_pad_info = {
> + .scl = {
> + .i2c_mode = MX6_PAD_KEY_COL3__I2C2_SCL
> + | MUX_PAD_CTRL(I2C_PAD_CTRL),
> + .gpio_mode = MX6_PAD_KEY_COL3__GPIO4_IO12
> + | MUX_PAD_CTRL(I2C_PAD_CTRL),
> + .gp = IMX_GPIO_NR(4, 12)
> + },
> + .sda = {
> + .i2c_mode = MX6_PAD_KEY_ROW3__I2C2_SDA
> + | MUX_PAD_CTRL(I2C_PAD_CTRL),
> + .gpio_mode = MX6_PAD_KEY_ROW3__GPIO4_IO13
> + | MUX_PAD_CTRL(I2C_PAD_CTRL),
> + .gp = IMX_GPIO_NR(4, 13)
> + }
>  };
>  
> -int board_video_skip(void)
> -{
> - int ret;
> +static iomux_v3_cfg_t const fwadapt_7wvga_pads[] = {
> + MX6_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK,
> + MX6_PAD_DI0_PIN2__IPU1_DI0_PIN02, /* HSync */
> + MX6_PAD_DI0_PIN3__IPU1_DI0_PIN03, /* VSync */
> + MX6_PAD_DI0_PIN4__IPU1_DI0_PIN04
> + | MUX_PAD_CTRL(PAD_CTL_DSE_120ohm), /* Contrast */
> + MX6_PAD_DI0_PIN15__IPU1_DI0_PIN15, /* DISP0_DRDY */
> +
> + MX6_PAD_DISP0_DAT0__IPU1_DISP0_DATA00,
> + MX6_PAD_DISP0_DAT1__IPU1_DISP0_DATA01,
> + MX6_PAD_DISP0_DAT2__IPU1_DISP0_DATA02,
> + MX6_PAD_DISP0_DAT3__IPU1_DISP0_DATA03,
> + MX6_PAD_DISP0_DAT4__IPU1_DISP0_DATA04,
> + MX6_PAD_DISP0_DAT5__IPU1_DISP0_DATA05,
> + MX6_PAD_DISP0_DAT6__IPU1_DISP0_DATA06,
> + MX6_PAD_DISP0_DAT7__IPU1_DISP0_DATA07,
> + MX6_PAD_DISP0_DAT8__IPU1_DISP0_DATA08,
> + MX6_PAD_DISP0_DAT9__IPU1_DISP0_DATA09,
> + MX6_PAD_DISP0_DAT10__IPU1_DISP0_DATA10,
> + MX6_PAD_DISP0_DAT11__IPU1_DISP0_DATA11,
> + MX6_PAD_DISP0_DAT12__IPU1_DISP0_DATA12,
> + MX6_PAD_DISP0_DAT13__IPU1_DISP0_DATA13,
> + MX6_PAD_DISP0_DAT14__IPU1_DISP0_DATA14,
> + MX6_PAD_DISP0_DAT15__IPU1_DISP0_DATA15,
> + MX6_PAD_DISP0_DAT16__IPU1_DISP0_DATA16,
> + MX6_PAD_DISP0_DAT17__IPU1_DISP0_DATA17,
> +
> + MX6_PAD_SD4_DAT2__GPIO2_IO10
> + | MUX_PAD_CTRL(NO_PAD_CTRL), /* DISP0_BKLEN */
> + MX6_PAD_SD4_DAT3__GPIO2_IO11
> + | MUX_PAD_CTRL(NO_PAD_CTRL), /* DISP0_VDDEN */
> +};
>  
> - ret = ipuv3_fb_init(&hdmi, 0, IPU_PIX_FMT_RGB24);
> +static void do_enable_hdmi(struct display_info_t const *dev)
> +{
> + imx_enable_hdmi_phy();
> +}
>  
> - if (ret) {
> - printf("HDMI cannot be configured: %d\n", ret);
> - return ret;
> - }
> +static int detect_i2c(struct display_info_t const *dev)
> +{
> + return (0 == i2c_set_bus_num(dev->bus)) &&
> + (0 == i2c_probe(dev->addr));
> +}
>  
> - imx_enable_hdmi_phy();
> +static void enable_fwadapt_7wvga(st

[U-Boot] [PATCH v3 1/2] wandboard: add Future Eletronics 7" WVGA LCD extension board

2014-05-01 Thread Otavio Salvador
This adds support for the 7" WVGA produced by Future Eletronics and
make it dynamically detect if it is connected or not based on the
touchscreen controller.

Signed-off-by: Otavio Salvador 
---

Changes in v3:
- Drop LVDS related code (unused)

Changes in v2:
- Drop LDB related code (unused)

 board/wandboard/wandboard.c | 147 
 include/configs/wandboard.h |   7 +++
 2 files changed, 128 insertions(+), 26 deletions(-)

diff --git a/board/wandboard/wandboard.c b/board/wandboard/wandboard.c
index f1951dc..311a442 100644
--- a/board/wandboard/wandboard.c
+++ b/board/wandboard/wandboard.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 Freescale Semiconductor, Inc.
+ * Copyright (C) 2014 O.S. Systems Software LTDA.
  *
  * Author: Fabio Estevam 
  *
@@ -15,18 +16,19 @@
 #include 
 #include 
 #include 
+#include 
 #include 
+#include 
 #include 
 #include 
 #include 
 #include 
-#include 
 #include 
 #include 
 #include 
-#include 
 #include 
 #include 
+#include 
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -41,6 +43,10 @@ DECLARE_GLOBAL_DATA_PTR;
 #define ENET_PAD_CTRL  (PAD_CTL_PUS_100K_UP |  \
PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
 
+#define I2C_PAD_CTRL   (PAD_CTL_PUS_100K_UP |  \
+   PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS |   \
+   PAD_CTL_ODE | PAD_CTL_SRE_FAST)
+
 #define USDHC1_CD_GPIO IMX_GPIO_NR(1, 2)
 #define USDHC3_CD_GPIO IMX_GPIO_NR(3, 9)
 #define ETH_PHY_RESET  IMX_GPIO_NR(3, 29)
@@ -210,41 +216,124 @@ int board_phy_config(struct phy_device *phydev)
 }
 
 #if defined(CONFIG_VIDEO_IPUV3)
-static struct fb_videomode const hdmi = {
-   .name   = "HDMI",
-   .refresh= 60,
-   .xres   = 1024,
-   .yres   = 768,
-   .pixclock   = 15385,
-   .left_margin= 220,
-   .right_margin   = 40,
-   .upper_margin   = 21,
-   .lower_margin   = 7,
-   .hsync_len  = 60,
-   .vsync_len  = 10,
-   .sync   = FB_SYNC_EXT,
-   .vmode  = FB_VMODE_NONINTERLACED
+struct i2c_pads_info i2c2_pad_info = {
+   .scl = {
+   .i2c_mode = MX6_PAD_KEY_COL3__I2C2_SCL
+   | MUX_PAD_CTRL(I2C_PAD_CTRL),
+   .gpio_mode = MX6_PAD_KEY_COL3__GPIO4_IO12
+   | MUX_PAD_CTRL(I2C_PAD_CTRL),
+   .gp = IMX_GPIO_NR(4, 12)
+   },
+   .sda = {
+   .i2c_mode = MX6_PAD_KEY_ROW3__I2C2_SDA
+   | MUX_PAD_CTRL(I2C_PAD_CTRL),
+   .gpio_mode = MX6_PAD_KEY_ROW3__GPIO4_IO13
+   | MUX_PAD_CTRL(I2C_PAD_CTRL),
+   .gp = IMX_GPIO_NR(4, 13)
+   }
 };
 
-int board_video_skip(void)
-{
-   int ret;
+static iomux_v3_cfg_t const fwadapt_7wvga_pads[] = {
+   MX6_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK,
+   MX6_PAD_DI0_PIN2__IPU1_DI0_PIN02, /* HSync */
+   MX6_PAD_DI0_PIN3__IPU1_DI0_PIN03, /* VSync */
+   MX6_PAD_DI0_PIN4__IPU1_DI0_PIN04
+   | MUX_PAD_CTRL(PAD_CTL_DSE_120ohm), /* Contrast */
+   MX6_PAD_DI0_PIN15__IPU1_DI0_PIN15, /* DISP0_DRDY */
+
+   MX6_PAD_DISP0_DAT0__IPU1_DISP0_DATA00,
+   MX6_PAD_DISP0_DAT1__IPU1_DISP0_DATA01,
+   MX6_PAD_DISP0_DAT2__IPU1_DISP0_DATA02,
+   MX6_PAD_DISP0_DAT3__IPU1_DISP0_DATA03,
+   MX6_PAD_DISP0_DAT4__IPU1_DISP0_DATA04,
+   MX6_PAD_DISP0_DAT5__IPU1_DISP0_DATA05,
+   MX6_PAD_DISP0_DAT6__IPU1_DISP0_DATA06,
+   MX6_PAD_DISP0_DAT7__IPU1_DISP0_DATA07,
+   MX6_PAD_DISP0_DAT8__IPU1_DISP0_DATA08,
+   MX6_PAD_DISP0_DAT9__IPU1_DISP0_DATA09,
+   MX6_PAD_DISP0_DAT10__IPU1_DISP0_DATA10,
+   MX6_PAD_DISP0_DAT11__IPU1_DISP0_DATA11,
+   MX6_PAD_DISP0_DAT12__IPU1_DISP0_DATA12,
+   MX6_PAD_DISP0_DAT13__IPU1_DISP0_DATA13,
+   MX6_PAD_DISP0_DAT14__IPU1_DISP0_DATA14,
+   MX6_PAD_DISP0_DAT15__IPU1_DISP0_DATA15,
+   MX6_PAD_DISP0_DAT16__IPU1_DISP0_DATA16,
+   MX6_PAD_DISP0_DAT17__IPU1_DISP0_DATA17,
+
+   MX6_PAD_SD4_DAT2__GPIO2_IO10
+   | MUX_PAD_CTRL(NO_PAD_CTRL), /* DISP0_BKLEN */
+   MX6_PAD_SD4_DAT3__GPIO2_IO11
+   | MUX_PAD_CTRL(NO_PAD_CTRL), /* DISP0_VDDEN */
+};
 
-   ret = ipuv3_fb_init(&hdmi, 0, IPU_PIX_FMT_RGB24);
+static void do_enable_hdmi(struct display_info_t const *dev)
+{
+   imx_enable_hdmi_phy();
+}
 
-   if (ret) {
-   printf("HDMI cannot be configured: %d\n", ret);
-   return ret;
-   }
+static int detect_i2c(struct display_info_t const *dev)
+{
+   return (0 == i2c_set_bus_num(dev->bus)) &&
+   (0 == i2c_probe(dev->addr));
+}
 
-   imx_enable_hdmi_phy();
+static void enable_fwadapt_7wvga(struct display_info_t const *dev)
+{
+   imx_iomux_v3_setup_multiple_pads(
+   fwadapt_7wvga_pads,
+   ARRAY_SIZE(fwadapt_7wvga_pads));
 
-   return ret;
+   gpio_direction_output(IMX_GPIO_NR(2, 10), 1);
+