Cleanup Beagleboard DVI reset gpio
Subsystems (3)
PATCH 1/1 Cleanup Beagleboard DVI reset gpio
This removes several boot warnings from board-omap3beagle.c:
- gpio_request: gpio--22 (DVI reset) status -22
- Unable to get DVI reset GPIO
There is a combination of leftover code and revision confusion. Additionally, xM support is currently a hack.
For original Beagleboard this removes the double initialization of GPIO 170, properly configures it as an output, and wraps the initialization in an if block so that xM does not attempt to request it.
For Beagleboard xM it removes reference to GPIO 129 which was part of rev A1 and A2 designs, but never functioned. It then properly assigns beagle_dvi_device.reset_gpio in beagle_twl_gpio_setup and removes the hack of initializing it high.
Unfortunately, there is no way to tell the difference between xM A2 and A3. However, GPIO 129 does not function on rev A1 and A2, and the TWL GPIO used on A3 and beyond is not used on rev A1 and A2, there are no problems created by this fix.
Tested on Beagleboard-xM Rev C1 and Beagleboard Rev B4.
--- arch/arm/mach-omap2/board-omap3beagle.c | 35 +++++++++++++++++-------------- 1 file changed, 19 insertions(+), 16 deletions(-)
arch/arm/mach-omap2/board-omap3beagle.c +19 -16
@@ -86,7 +86,7 @@ static struct { } beagle_config = { .mmc1_gpio_wp = -EINVAL, .usb_pwr_level = GPIOF_OUT_INIT_LOW, - .reset_gpio = 129, + .reset_gpio = -EINVAL, .usr_button_gpio = 4, };
@@ -238,12 +238,17 @@ static struct omap_dss_board_info beagle_dss_data = {static void __init beagle_display_init (void ) { -int r; - - r =gpio_request_one (beagle_dvi_device.reset_gpio,GPIOF_OUT_INIT_LOW , -"DVI reset" ); -if (r <0 ) -printk (KERN_ERR "Unable to get DVI reset GPIO\n" ); +if (beagle_config.reset_gpio != -EINVAL ) { +int r; + +omap_mux_init_gpio (beagle_config.reset_gpio,OMAP_PIN_OUTPUT ); + r =gpio_request_one (beagle_config.reset_gpio, +GPIOF_OUT_INIT_LOW ,"DVI reset" ); +if (r <0 ) +printk (KERN_ERR "Unable to get DVI reset GPIO\n" ); +else + beagle_dvi_device.reset_gpio = beagle_config.reset_gpio; + } }#include "sdram-micron-mt46h32m32lf-6.h"
@@ -296,11 +301,14 @@ static int beagle_twl_gpio_setup(struct device *dev,if (r)pr_err ("%s: unable to configure nDVI_PWR_EN\n" , __func__); - r =gpio_request_one (gpio +2 ,GPIOF_OUT_INIT_HIGH , -"DVI_LDO_EN" ); + + r =gpio_request_one (gpio +2 ,GPIOF_OUT_INIT_LOW , +"DVI_PU" );if (r) -pr_err ("%s: unable to configure DVI_LDO_EN\n" , - __func__); +pr_err ("%s: unable to get DVI_PU GPIO\n" , __func__); +else + beagle_dvi_device.reset_gpio = gpio +2 ; + }else {/* * REVISIT: need ehci-omap hooks for external VBUS
@@ -309,7 +317,6 @@ static int beagle_twl_gpio_setup(struct device *dev,if (gpio_request_one (gpio +1 ,GPIOF_IN ,"EHCI_nOC" ))pr_err ("%s: unable to configure EHCI_nOC\n" , __func__); } - beagle_dvi_device.reset_gpio = beagle_config.reset_gpio;gpio_request_one (gpio +TWL4030_GPIO_MAX , beagle_config.usb_pwr_level,"nEN_USB_PWR" );
@@ -540,10 +547,6 @@ static void __init omap3_beagle_init(void)omap_sdrc_init (mt46h32m32lf6_sdrc_params, mt46h32m32lf6_sdrc_params); -omap_mux_init_gpio (170 ,OMAP_PIN_INPUT ); -/* REVISIT leave DVI powered down until it's needed ... */ -gpio_request_one (170 ,GPIOF_OUT_INIT_HIGH ,"DVI_nPD" ); -usb_musb_init (NULL );usbhs_init (&usbhs_bdata); omap_nand_flash_init(NAND_BUSWIDTH_16, omap3beagle_nand_partitions,
Signature · 1 line
1.7.9.5
Hi Russ,
Quoted 34 lines · Russ Dill
This removes several boot warnings from
board-omap3beagle.c:-
gpio_request: gpio--22 (DVI reset) status -22
- Unable to get DVI reset GPIOThere is a combination of leftover code and revision confusion. Additionally, xM support is currently a hack.
For original Beagleboard this removes the double initialization of GPIO 170, properly configures it as an output, and wraps the initialization in an if block so that xM does not attempt to request it.
For Beagleboard xM it removes reference to GPIO 129 which was part of rev A1 and A2 designs, but never functioned. It then properly assigns beagle_dvi_device.reset_gpio in
beagle_twl_gpio_setupand removes the hack of initializing it high.Unfortunately, there is no way to tell the difference between xM A2 and A3. However, GPIO 129 does not function on rev A1 and A2, and the TWL GPIO used on A3 and beyond is not used on rev A1 and A2, there are no problems created by this fix.
Tested on Beagleboard-xM Rev C1 and Beagleboard Rev B4.
Signed-off-by Russ Dill <[email protected]>--- arch/arm/mach-omap2/board-omap3beagle.c | 35 +++++++++++++++++-------------- 1 file changed, 19 insertions(+), 16 deletions(-)arch/arm/mach-omap2/board-omap3beagle.c +0
-0
arch/arm/mach-omap2/board-omap3beagle.c static struct { · line 89
Quoted 5 lines
arch/arm/mach-omap2/board-omap3beagle.c +1
-1@@ -86,7 +86,7 @@ static struct { } beagle_config = { .mmc1_gpio_wp = -EINVAL, .usb_pwr_level = GPIOF_OUT_INIT_LOW, - .reset_gpio = 129, + .reset_gpio = -EINVAL,
While, you are at this one, can you please add a comment on what device does this gpio reset?
Quoted 4 lines
arch/arm/mach-omap2/board-omap3beagle.c +0
-0.usr_button_gpio = 4, };
arch/arm/mach-omap2/board-omap3beagle.c static struct omap_dss_board_info beagle_dss_data = { · line 241
Quoted 10 lines
arch/arm/mach-omap2/board-omap3beagle.c +1
-6@@ -238,12 +238,17 @@ static struct omap_dss_board_info beagle_dss_data = {static void __init beagle_display_init (void ) { -int r; - - r =gpio_request_one (beagle_dvi_device.reset_gpio,GPIOF_OUT_INIT_LOW , -"DVI reset" ); -if (r <0 ) -printk (KERN_ERR "Unable to get DVI reset GPIO\n" ); +if (beagle_config.reset_gpio != -EINVAL ) {
Should this be:
if (gpio_is_valid(beagle_config.reset_gpio)) {
?
Quoted 51 lines
arch/arm/mach-omap2/board-omap3beagle.c +17
-9+int r; + +omap_mux_init_gpio (beagle_config.reset_gpio,OMAP_PIN_OUTPUT ); + r =gpio_request_one (beagle_config.reset_gpio, +GPIOF_OUT_INIT_LOW ,"DVI reset" ); +if (r <0 ) +printk (KERN_ERR "Unable to get DVI reset GPIO\n" ); +else + beagle_dvi_device.reset_gpio = beagle_config.reset_gpio; + } }#include "sdram-micron-mt46h32m32lf-6.h" @@ -296,11 +301,14 @@ static int beagle_twl_gpio_setup(struct device *dev,if (r)pr_err ("%s: unable to configure nDVI_PWR_EN\n" , __func__); - r =gpio_request_one (gpio +2 ,GPIOF_OUT_INIT_HIGH , -"DVI_LDO_EN" ); + + r =gpio_request_one (gpio +2 ,GPIOF_OUT_INIT_LOW , +"DVI_PU" );if (r) -pr_err ("%s: unable to configure DVI_LDO_EN\n" , - __func__); +pr_err ("%s: unable to get DVI_PU GPIO\n" , __func__); +else + beagle_dvi_device.reset_gpio = gpio +2 ; + }else {/* * REVISIT: need ehci-omap hooks for external VBUS @@ -309,7 +317,6 @@ static int beagle_twl_gpio_setup(struct device *dev,if (gpio_request_one (gpio +1 ,GPIOF_IN ,"EHCI_nOC" ))pr_err ("%s: unable to configure EHCI_nOC\n" , __func__); } - beagle_dvi_device.reset_gpio = beagle_config.reset_gpio;gpio_request_one (gpio +TWL4030_GPIO_MAX , beagle_config.usb_pwr_level,"nEN_USB_PWR" );@@ -540,10 +547,6 @@ static void __init omap3_beagle_init(void)omap_sdrc_init (mt46h32m32lf6_sdrc_params, mt46h32m32lf6_sdrc_params); -omap_mux_init_gpio (170 ,OMAP_PIN_INPUT ); -/* REVISIT leave DVI powered down until it's needed ... */ -gpio_request_one (170 ,GPIOF_OUT_INIT_HIGH ,"DVI_nPD" ); -usb_musb_init (NULL );usbhs_init (&usbhs_bdata); omap_nand_flash_init(NAND_BUSWIDTH_16, omap3beagle_nand_partitions,
Signature · 2 lines
Regards, Igor.
PATCH v2 1/1 Cleanup Beagleboard DVI reset gpio
This removes several boot warnings from board-omap3beagle.c:
- gpio_request: gpio--22 (DVI reset) status -22
- Unable to get DVI reset GPIO
There is a combination of leftover code and revision confusion. Additionally, xM support is currently a hack.
For original Beagleboard this removes the double initialization of GPIO 170, properly configures it as an output, and wraps the initialization in an if block so that xM does not attempt to request it.
For Beagleboard xM it removes reference to GPIO 129 which was part of rev A1 and A2 designs, but never functioned. It then properly assigns beagle_dvi_device.reset_gpio in beagle_twl_gpio_setup and removes the hack of initializing it high. Additionally, it uses gpio_set_value_cansleep since this GPIO is connected through i2c.
Unfortunately, there is no way to tell the difference between xM A2 and A3. However, GPIO 129 does not function on rev A1 and A2, and the TWL GPIO used on A3 and beyond is not used on rev A1 and A2, there are no problems created by this fix.
v2
- Rename reset_gpio to dvi_reset_gpio to self document
- Use gpio_set_value_cansleep since TWL gpio can sleep
- Use gpio_is_valid instead of -EINVAL check
Tested on Beagleboard-xM Rev C1 and Beagleboard Rev B4.
--- arch/arm/mach-omap2/board-omap3beagle.c | 41 +++++++++++++++++-------------- 1 file changed, 22 insertions(+), 19 deletions(-)
arch/arm/mach-omap2/board-omap3beagle.c +22 -19
@@ -87,7 +87,7 @@ static struct { } beagle_config = { .mmc1_gpio_wp = -EINVAL, .usb_pwr_level = GPIOF_OUT_INIT_LOW, - .reset_gpio = 129, + .reset_gpio = -EINVAL, .usr_button_gpio = 4, .mmc_caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, };
@@ -196,7 +196,7 @@ static struct mtd_partition omap3beagle_nand_partitions[] = {static int beagle_enable_dvi (struct omap_dss_device *dssdev) {if (gpio_is_valid (dssdev->reset_gpio)) -gpio_set_value (dssdev->reset_gpio,1 ); +gpio_set_value_cansleep (dssdev->reset_gpio,1 );return 0 ; }
@@ -204,7 +204,7 @@ static int beagle_enable_dvi(struct omap_dss_device *dssdev)static void beagle_disable_dvi (struct omap_dss_device *dssdev) {if (gpio_is_valid (dssdev->reset_gpio)) -gpio_set_value (dssdev->reset_gpio,0 ); +gpio_set_value_cansleep (dssdev->reset_gpio,0 ); }static struct panel_dvi_platform_data dvi_panel = {
@@ -242,12 +242,17 @@ static struct omap_dss_board_info beagle_dss_data = {static void __init beagle_display_init (void ) { -int r; - - r =gpio_request_one (beagle_dvi_device.reset_gpio,GPIOF_OUT_INIT_LOW , -"DVI reset" ); -if (r <0 ) -printk (KERN_ERR "Unable to get DVI reset GPIO\n" ); +if (gpio_is_valid (beagle_config.reset_gpio)) { +int r; + +omap_mux_init_gpio (beagle_config.reset_gpio,OMAP_PIN_OUTPUT ); + r =gpio_request_one (beagle_config.reset_gpio, +GPIOF_OUT_INIT_LOW ,"DVI reset" ); +if (r <0 ) +printk (KERN_ERR "Unable to get DVI reset GPIO\n" ); +else + beagle_dvi_device.reset_gpio = beagle_config.reset_gpio; + } }#include "sdram-micron-mt46h32m32lf-6.h"
@@ -299,11 +304,14 @@ static int beagle_twl_gpio_setup(struct device *dev,if (r)pr_err ("%s: unable to configure nDVI_PWR_EN\n" , __func__); - r =gpio_request_one (gpio +2 ,GPIOF_OUT_INIT_HIGH , -"DVI_LDO_EN" ); + + r =gpio_request_one (gpio +2 ,GPIOF_OUT_INIT_LOW , +"DVI_PU" );if (r) -pr_err ("%s: unable to configure DVI_LDO_EN\n" , - __func__); +pr_err ("%s: unable to get DVI_PU GPIO\n" , __func__); +else + beagle_dvi_device.reset_gpio = gpio +2 ; + }else {/* * REVISIT: need ehci-omap hooks for external VBUS
@@ -312,7 +320,6 @@ static int beagle_twl_gpio_setup(struct device *dev,if (gpio_request_one (gpio +1 ,GPIOF_IN ,"EHCI_nOC" ))pr_err ("%s: unable to configure EHCI_nOC\n" , __func__); } - beagle_dvi_device.reset_gpio = beagle_config.reset_gpio;gpio_request_one (gpio +TWL4030_GPIO_MAX , beagle_config.usb_pwr_level,"nEN_USB_PWR" );
@@ -524,7 +531,7 @@ static void __init omap3_beagle_init(void)omap3_mux_init (board_mux,OMAP_PACKAGE_CBB );omap3_beagle_init_rev (); -if (beagle_config.mmc1_gpio_wp != -EINVAL ) +if (gpio_is_valid (beagle_config.mmc1_gpio_wp))omap_mux_init_gpio (beagle_config.mmc1_gpio_wp,OMAP_PIN_INPUT ); mmc[0 ].caps = beagle_config.mmc_caps;omap_hsmmc_init (mmc);
@@ -540,10 +547,6 @@ static void __init omap3_beagle_init(void)omap_sdrc_init (mt46h32m32lf6_sdrc_params, mt46h32m32lf6_sdrc_params); -omap_mux_init_gpio (170 ,OMAP_PIN_INPUT ); -/* REVISIT leave DVI powered down until it's needed ... */ -gpio_request_one (170 ,GPIOF_OUT_INIT_HIGH ,"DVI_nPD" ); -usb_musb_init (NULL );usbhs_init (&usbhs_bdata); omap_nand_flash_init(NAND_BUSWIDTH_16, omap3beagle_nand_partitions,
Signature · 1 line
1.7.9.5
Hi Russ,
Quoted 4 lines · Russ Dill
This removes several boot warnings from
board-omap3beagle.c:-
gpio_request: gpio--22 (DVI reset) status -22
- Unable to get DVI reset GPIO
Thanks for your patches and revies on the list! It's much appreciated.
Some requests for upstream-bound OMAP patches:
1) subject/shortlog prefix should be ARM: OMAP: [subsystem]: ... e.g. for this one ARM: OMAP: Beagleboard: cleanup DVI reset GPIO
2) please Cc: [email protected] as well
Thanks,
Kevin
PATCH 1/1 ARM: OMAP: Cleanup Beagleboard DVI reset gpio
This removes several boot warnings from board-omap3beagle.c:
- gpio_request: gpio--22 (DVI reset) status -22
- Unable to get DVI reset GPIO
There is a combination of leftover code and revision confusion. Additionally, xM support is currently a hack.
For original Beagleboard this removes the double initialization of GPIO 170, properly configures it as an output, and wraps the initialization in an if block so that xM does not attempt to request it.
For Beagleboard xM it removes reference to GPIO 129 which was part of rev A1 and A2 designs, but never functioned. It then properly assigns beagle_dvi_device.reset_gpio in beagle_twl_gpio_setup and removes the hack of initializing it high. Additionally, it uses gpio_set_value_cansleep since this GPIO is connected through i2c.
Unfortunately, there is no way to tell the difference between xM A2 and A3. However, GPIO 129 does not function on rev A1 and A2, and the TWL GPIO used on A3 and beyond is not used on rev A1 and A2, there are no problems created by this fix.
v3
- Change patch title to include 'ARM: OMAP:'
- Actually rename reset_gpio to dvi_reset_gpio
v2
- Rename reset_gpio to dvi_reset_gpio to self document
- Use gpio_set_value_cansleep since TWL gpio can sleep
- Use gpio_is_valid instead of -EINVAL check
Tested on Beagleboard-xM Rev C1 and Beagleboard Rev B4.
--- arch/arm/mach-omap2/board-omap3beagle.c | 49 ++++++++++++++++--------------- 1 file changed, 26 insertions(+), 23 deletions(-)
arch/arm/mach-omap2/board-omap3beagle.c +26 -23
@@ -81,13 +81,13 @@ static u8 omap3_beagle_version;static struct {int mmc1_gpio_wp;int usb_pwr_level; -int reset_gpio; +int dvi_reset_gpio;int usr_button_gpio;int mmc_caps; } beagle_config = { .mmc1_gpio_wp = -EINVAL , .usb_pwr_level =GPIOF_OUT_INIT_LOW , - .reset_gpio =129 , + .dvi_reset_gpio = -EINVAL , .usr_button_gpio =4 , .mmc_caps =MMC_CAP_4_BIT_DATA |MMC_CAP_8_BIT_DATA , };
@@ -126,21 +126,21 @@ static void __init omap3_beagle_init_rev(void)printk (KERN_INFO "OMAP3 Beagle Rev: Ax/Bx\n" ); omap3_beagle_version =OMAP3BEAGLE_BOARD_AXBX ; beagle_config.mmc1_gpio_wp =29 ; - beagle_config.reset_gpio =170 ; + beagle_config.dvi_reset_gpio =170 ; beagle_config.usr_button_gpio =7 ;break ;case 6 :printk (KERN_INFO "OMAP3 Beagle Rev: C1/C2/C3\n" ); omap3_beagle_version =OMAP3BEAGLE_BOARD_C1_3 ; beagle_config.mmc1_gpio_wp =23 ; - beagle_config.reset_gpio =170 ; + beagle_config.dvi_reset_gpio =170 ; beagle_config.usr_button_gpio =7 ;break ;case 5 :printk (KERN_INFO "OMAP3 Beagle Rev: C4\n" ); omap3_beagle_version =OMAP3BEAGLE_BOARD_C4 ; beagle_config.mmc1_gpio_wp =23 ; - beagle_config.reset_gpio =170 ; + beagle_config.dvi_reset_gpio =170 ; beagle_config.usr_button_gpio =7 ;break ;case 0 :
@@ -196,7 +196,7 @@ static struct mtd_partition omap3beagle_nand_partitions[] = {static int beagle_enable_dvi (struct omap_dss_device *dssdev) {if (gpio_is_valid (dssdev->reset_gpio)) -gpio_set_value (dssdev->reset_gpio,1 ); +gpio_set_value_cansleep (dssdev->reset_gpio,1 );return 0 ; }
@@ -204,7 +204,7 @@ static int beagle_enable_dvi(struct omap_dss_device *dssdev)static void beagle_disable_dvi (struct omap_dss_device *dssdev) {if (gpio_is_valid (dssdev->reset_gpio)) -gpio_set_value (dssdev->reset_gpio,0 ); +gpio_set_value_cansleep (dssdev->reset_gpio,0 ); }static struct panel_dvi_platform_data dvi_panel = {
@@ -242,12 +242,17 @@ static struct omap_dss_board_info beagle_dss_data = {static void __init beagle_display_init (void ) { -int r; - - r =gpio_request_one (beagle_dvi_device.reset_gpio,GPIOF_OUT_INIT_LOW , -"DVI reset" ); -if (r <0 ) -printk (KERN_ERR "Unable to get DVI reset GPIO\n" ); +if (gpio_is_valid (beagle_config.dvi_reset_gpio)) { +int r; + +omap_mux_init_gpio (beagle_config.dvi_reset_gpio,OMAP_PIN_OUTPUT ); + r =gpio_request_one (beagle_config.dvi_reset_gpio, +GPIOF_OUT_INIT_LOW ,"DVI reset" ); +if (r <0 ) +printk (KERN_ERR "Unable to get DVI reset GPIO\n" ); +else + beagle_dvi_device.reset_gpio = beagle_config.dvi_reset_gpio; + } }#include "sdram-micron-mt46h32m32lf-6.h"
@@ -299,11 +304,14 @@ static int beagle_twl_gpio_setup(struct device *dev,if (r)pr_err ("%s: unable to configure nDVI_PWR_EN\n" , __func__); - r =gpio_request_one (gpio +2 ,GPIOF_OUT_INIT_HIGH , -"DVI_LDO_EN" ); + + r =gpio_request_one (gpio +2 ,GPIOF_OUT_INIT_LOW , +"DVI_PU" );if (r) -pr_err ("%s: unable to configure DVI_LDO_EN\n" , - __func__); +pr_err ("%s: unable to get DVI_PU GPIO\n" , __func__); +else + beagle_dvi_device.reset_gpio = gpio +2 ; + }else {/* * REVISIT: need ehci-omap hooks for external VBUS
@@ -312,7 +320,6 @@ static int beagle_twl_gpio_setup(struct device *dev,if (gpio_request_one (gpio +1 ,GPIOF_IN ,"EHCI_nOC" ))pr_err ("%s: unable to configure EHCI_nOC\n" , __func__); } - beagle_dvi_device.reset_gpio = beagle_config.reset_gpio;gpio_request_one (gpio +TWL4030_GPIO_MAX , beagle_config.usb_pwr_level,"nEN_USB_PWR" );
@@ -524,7 +531,7 @@ static void __init omap3_beagle_init(void)omap3_mux_init (board_mux,OMAP_PACKAGE_CBB );omap3_beagle_init_rev (); -if (beagle_config.mmc1_gpio_wp != -EINVAL ) +if (gpio_is_valid (beagle_config.mmc1_gpio_wp))omap_mux_init_gpio (beagle_config.mmc1_gpio_wp,OMAP_PIN_INPUT ); mmc[0 ].caps = beagle_config.mmc_caps;omap_hsmmc_init (mmc);
@@ -540,10 +547,6 @@ static void __init omap3_beagle_init(void)omap_sdrc_init (mt46h32m32lf6_sdrc_params, mt46h32m32lf6_sdrc_params); -omap_mux_init_gpio (170 ,OMAP_PIN_INPUT ); -/* REVISIT leave DVI powered down until it's needed ... */ -gpio_request_one (170 ,GPIOF_OUT_INIT_HIGH ,"DVI_nPD" ); -usb_musb_init (NULL );usbhs_init (&usbhs_bdata); omap_nand_flash_init(NAND_BUSWIDTH_16, omap3beagle_nand_partitions,
Signature · 1 line
1.7.9.5
Tony Lindgren
maintainerPATCH 1/1 ARM: OMAP: Cleanup Beagleboard DVI reset gpio
Hi Tomi,
Quoted 18 lines · Russ Dill
This removes several boot warnings from
board-omap3beagle.c:-
gpio_request: gpio--22 (DVI reset) status -22
- Unable to get DVI reset GPIOThere is a combination of leftover code and revision confusion. Additionally, xM support is currently a hack.
For original Beagleboard this removes the double initialization of GPIO 170, properly configures it as an output, and wraps the initialization in an if block so that xM does not attempt to request it.
For Beagleboard xM it removes reference to GPIO 129 which was part of rev A1 and A2 designs, but never functioned. It then properly assigns beagle_dvi_device.reset_gpio in
beagle_twl_gpio_setupand removes the hack of initializing it high. Additionally, it usesgpio_set_value_cansleepsince this GPIO is connected through i2c.
Quoted 4 lines
Unfortunately, there is no way to tell the difference between xM A2 and A3. However, GPIO 129 does not function on rev A1 and A2, and the TWL GPIO used on A3 and beyond is not used on rev A1 and A2, there are no problems created by this fix.
Can you check if this needs updates for your clean up patches?
Regards,
Tony
Quoted 157 lines
v3
- Change patch title to include 'ARM: OMAP:'
- Actually renamereset_gpiotodvi_reset_gpiov2
- Renamereset_gpiotodvi_reset_gpioto self document
- Usegpio_set_value_cansleepsince TWL gpio can sleep
- Usegpio_is_validinstead of-EINVALcheckTested on Beagleboard-xM Rev C1 and Beagleboard Rev B4.
Signed-off-by Russ Dill <[email protected]>--- arch/arm/mach-omap2/board-omap3beagle.c | 49 ++++++++++++++++--------------- 1 file changed, 26 insertions(+), 23 deletions(-)arch/arm/mach-omap2/board-omap3beagle.c +26
-23@@ -81,13 +81,13 @@ static u8 omap3_beagle_version;static struct {int mmc1_gpio_wp;int usb_pwr_level; -int reset_gpio; +int dvi_reset_gpio;int usr_button_gpio;int mmc_caps; } beagle_config = { .mmc1_gpio_wp = -EINVAL , .usb_pwr_level =GPIOF_OUT_INIT_LOW , - .reset_gpio =129 , + .dvi_reset_gpio = -EINVAL , .usr_button_gpio =4 , .mmc_caps =MMC_CAP_4_BIT_DATA |MMC_CAP_8_BIT_DATA , };@@ -126,21 +126,21 @@ static void __init omap3_beagle_init_rev(void)printk (KERN_INFO "OMAP3 Beagle Rev: Ax/Bx\n" ); omap3_beagle_version =OMAP3BEAGLE_BOARD_AXBX ; beagle_config.mmc1_gpio_wp =29 ; - beagle_config.reset_gpio =170 ; + beagle_config.dvi_reset_gpio =170 ; beagle_config.usr_button_gpio =7 ;break ;case 6 :printk (KERN_INFO "OMAP3 Beagle Rev: C1/C2/C3\n" ); omap3_beagle_version =OMAP3BEAGLE_BOARD_C1_3 ; beagle_config.mmc1_gpio_wp =23 ; - beagle_config.reset_gpio =170 ; + beagle_config.dvi_reset_gpio =170 ; beagle_config.usr_button_gpio =7 ;break ;case 5 :printk (KERN_INFO "OMAP3 Beagle Rev: C4\n" ); omap3_beagle_version =OMAP3BEAGLE_BOARD_C4 ; beagle_config.mmc1_gpio_wp =23 ; - beagle_config.reset_gpio =170 ; + beagle_config.dvi_reset_gpio =170 ; beagle_config.usr_button_gpio =7 ;break ;case 0 :@@ -196,7 +196,7 @@ static struct mtd_partition omap3beagle_nand_partitions[] = {static int beagle_enable_dvi (struct omap_dss_device *dssdev) {if (gpio_is_valid (dssdev->reset_gpio)) -gpio_set_value (dssdev->reset_gpio,1 ); +gpio_set_value_cansleep (dssdev->reset_gpio,1 );return 0 ; }@@ -204,7 +204,7 @@ static int beagle_enable_dvi(struct omap_dss_device *dssdev)static void beagle_disable_dvi (struct omap_dss_device *dssdev) {if (gpio_is_valid (dssdev->reset_gpio)) -gpio_set_value (dssdev->reset_gpio,0 ); +gpio_set_value_cansleep (dssdev->reset_gpio,0 ); }static struct panel_dvi_platform_data dvi_panel = {@@ -242,12 +242,17 @@ static struct omap_dss_board_info beagle_dss_data = {static void __init beagle_display_init (void ) { -int r; - - r =gpio_request_one (beagle_dvi_device.reset_gpio,GPIOF_OUT_INIT_LOW , -"DVI reset" ); -if (r <0 ) -printk (KERN_ERR "Unable to get DVI reset GPIO\n" ); +if (gpio_is_valid (beagle_config.dvi_reset_gpio)) { +int r; + +omap_mux_init_gpio (beagle_config.dvi_reset_gpio,OMAP_PIN_OUTPUT ); + r =gpio_request_one (beagle_config.dvi_reset_gpio, +GPIOF_OUT_INIT_LOW ,"DVI reset" ); +if (r <0 ) +printk (KERN_ERR "Unable to get DVI reset GPIO\n" ); +else + beagle_dvi_device.reset_gpio = beagle_config.dvi_reset_gpio; + } }#include "sdram-micron-mt46h32m32lf-6.h" @@ -299,11 +304,14 @@ static int beagle_twl_gpio_setup(struct device *dev,if (r)pr_err ("%s: unable to configure nDVI_PWR_EN\n" , __func__); - r =gpio_request_one (gpio +2 ,GPIOF_OUT_INIT_HIGH , -"DVI_LDO_EN" ); + + r =gpio_request_one (gpio +2 ,GPIOF_OUT_INIT_LOW , +"DVI_PU" );if (r) -pr_err ("%s: unable to configure DVI_LDO_EN\n" , - __func__); +pr_err ("%s: unable to get DVI_PU GPIO\n" , __func__); +else + beagle_dvi_device.reset_gpio = gpio +2 ; + }else {/* * REVISIT: need ehci-omap hooks for external VBUS @@ -312,7 +320,6 @@ static int beagle_twl_gpio_setup(struct device *dev,if (gpio_request_one (gpio +1 ,GPIOF_IN ,"EHCI_nOC" ))pr_err ("%s: unable to configure EHCI_nOC\n" , __func__); } - beagle_dvi_device.reset_gpio = beagle_config.reset_gpio;gpio_request_one (gpio +TWL4030_GPIO_MAX , beagle_config.usb_pwr_level,"nEN_USB_PWR" );@@ -524,7 +531,7 @@ static void __init omap3_beagle_init(void)omap3_mux_init (board_mux,OMAP_PACKAGE_CBB );omap3_beagle_init_rev (); -if (beagle_config.mmc1_gpio_wp != -EINVAL ) +if (gpio_is_valid (beagle_config.mmc1_gpio_wp))omap_mux_init_gpio (beagle_config.mmc1_gpio_wp,OMAP_PIN_INPUT ); mmc[0 ].caps = beagle_config.mmc_caps;omap_hsmmc_init (mmc);@@ -540,10 +547,6 @@ static void __init omap3_beagle_init(void)omap_sdrc_init (mt46h32m32lf6_sdrc_params, mt46h32m32lf6_sdrc_params); -omap_mux_init_gpio (170 ,OMAP_PIN_INPUT ); -/* REVISIT leave DVI powered down until it's needed ... */ -gpio_request_one (170 ,GPIOF_OUT_INIT_HIGH ,"DVI_nPD" ); -usb_musb_init (NULL );usbhs_init (&usbhs_bdata); omap_nand_flash_init(NAND_BUSWIDTH_16, omap3beagle_nand_partitions,Signature · 6 lines
1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 1/1 ARM: OMAP: Cleanup Beagleboard DVI reset gpio
Quoted 21 lines · Tony Lindgren
Hi Tomi,
Quoted 18 lines · Russ Dill
This removes several boot warnings from
board-omap3beagle.c:?-
gpio_request: gpio--22 (DVI reset) status -22
?- Unable to get DVI reset GPIOThere is a combination of leftover code and revision confusion. Additionally, xM support is currently a hack.
For original Beagleboard this removes the double initialization of GPIO 170, properly configures it as an output, and wraps the initialization in an if block so that xM does not attempt to request it.
For Beagleboard xM it removes reference to GPIO 129 which was part of rev A1 and A2 designs, but never functioned. It then properly assigns beagle_dvi_device.reset_gpio in
beagle_twl_gpio_setupand removes the hack of initializing it high. Additionally, it usesgpio_set_value_cansleepsince this GPIO is connected through i2c.
Quoted 6 lines
Quoted 4 lines
Unfortunately, there is no way to tell the difference between xM A2 and A3. However, GPIO 129 does not function on rev A1 and A2, and the TWL GPIO used on A3 and beyond is not used on rev A1 and A2, there are no problems created by this fix.
Can you check if this needs updates for your clean up patches?
I'm not sure what you mean, can you be more specific?
Tony Lindgren
maintainerPATCH 1/1 ARM: OMAP: Cleanup Beagleboard DVI reset gpio
Quoted 22 lines · Russ Dill
Quoted 21 lines · Tony Lindgren
Hi Tomi,
Quoted 18 lines · Russ Dill
This removes several boot warnings from
board-omap3beagle.c:?-
gpio_request: gpio--22 (DVI reset) status -22
?- Unable to get DVI reset GPIOThere is a combination of leftover code and revision confusion. Additionally, xM support is currently a hack.
For original Beagleboard this removes the double initialization of GPIO 170, properly configures it as an output, and wraps the initialization in an if block so that xM does not attempt to request it.
For Beagleboard xM it removes reference to GPIO 129 which was part of rev A1 and A2 designs, but never functioned. It then properly assigns beagle_dvi_device.reset_gpio in
beagle_twl_gpio_setupand removes the hack of initializing it high. Additionally, it usesgpio_set_value_cansleepsince this GPIO is connected through i2c.
Quoted 8 lines
Quoted 6 lines
Quoted 4 lines
Unfortunately, there is no way to tell the difference between xM A2 and A3. However, GPIO 129 does not function on rev A1 and A2, and the TWL GPIO used on A3 and beyond is not used on rev A1 and A2, there are no problems created by this fix.
Can you check if this needs updates for your clean up patches?
I'm not sure what you mean, can you be more specific?
Tomi has a DSS clean-up series posted that affects the board-*.c files.
Regards,
Tony
PATCH 1/1 ARM: OMAP: Cleanup Beagleboard DVI reset gpio
Quoted 28 lines · Tony Lindgren
Quoted 27 lines · Russ Dill
Quoted 26 lines · Tony Lindgren
Hi Tomi,
Quoted 22 lines · Russ Dill
This removes several boot warnings from
board-omap3beagle.c:?-
gpio_request: gpio--22 (DVI reset) status -22
?- Unable to get DVI reset GPIOThere is a combination of leftover code and revision confusion. Additionally, xM support is currently a hack.
For original Beagleboard this removes the double initialization of GPIO 170, properly configures it as an output, and wraps the initialization in an if block so that xM does not attempt to request it.
For Beagleboard xM it removes reference to GPIO 129 which was part of rev A1 and A2 designs, but never functioned. It then properly assigns beagle_dvi_device.reset_gpio in
beagle_twl_gpio_setupand removes the hack of initializing it high. Additionally, it usesgpio_set_value_cansleepsince this GPIO is connected through i2c.Unfortunately, there is no way to tell the difference between xM A2 and A3. However, GPIO 129 does not function on rev A1 and A2, and the TWL GPIO used on A3 and beyond is not used on rev A1 and A2, there are no problems created by this fix.
Quoted 6 lines
Quoted 3 lines
Quoted 1 line
Can you check if this needs updates for your clean up patches?
I'm not sure what you mean, can you be more specific?
Tomi has a DSS clean-up series posted that affects the board-*.c files.
Yes, it conflicts pretty bad but, it's fairly straightforward to fixup. Additionally, the 'OMAPDSS: panel-dvi: add PD gpio handling' needs to be changed to use gpio_set_value_cansleep (replied to patch in separate email).
PATCH v4 1/1 ARM: OMAP: Cleanup Beagleboard DVI reset gpio
In reply to Tony LindgrenThis removes several boot warnings from board-omap3beagle.c:
- gpio_request: gpio--22 (DVI reset) status -22
- Unable to get DVI reset GPIO
There is a combination of leftover code and revision confusion. Additionally, xM support is currently a hack.
For original Beagleboard this removes the double initialization of GPIO 170, properly configures it as an output, and wraps the initialization in an if block so that xM does not attempt to request it.
For Beagleboard xM it removes reference to GPIO 129 which was part of rev A1 and A2 designs, but never functioned. It then properly assigns beagle_dvi_device.reset_gpio in beagle_twl_gpio_setup and removes the hack of initializing it high. Additionally, it uses gpio_set_value_cansleep since this GPIO is connected through i2c.
Unfortunately, there is no way to tell the difference between xM A2 and A3. However, GPIO 129 does not function on rev A1 and A2, and the TWL GPIO used on A3 and beyond is not used on rev A1 and A2, there are no problems created by this fix.
v4
- Rebase onto git://gitorious.org/linux-omap-dss2/linux.git for-l-o-3.5
- Use dvi_pd_gpio instead of reset_gpio to match with new naming
v3
- Change patch title to include 'ARM: OMAP:'
- Actually rename reset_gpio to dvi_reset_gpio
v2
- Rename reset_gpio to dvi_reset_gpio to self document
- Use gpio_set_value_cansleep since TWL gpio can sleep
- Use gpio_is_valid instead of -EINVAL check
Tested on Beagleboard-xM Rev C1 and Beagleboard Rev B4.
--- arch/arm/mach-omap2/board-omap3beagle.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-)
arch/arm/mach-omap2/board-omap3beagle.c +12 -16
@@ -81,13 +81,13 @@ static u8 omap3_beagle_version;static struct {int mmc1_gpio_wp;int usb_pwr_level; -int reset_gpio; +int dvi_pd_gpio;int usr_button_gpio;int mmc_caps; } beagle_config = { .mmc1_gpio_wp = -EINVAL , .usb_pwr_level =GPIOF_OUT_INIT_LOW , - .reset_gpio =129 , + .dvi_pd_gpio = -EINVAL , .usr_button_gpio =4 , .mmc_caps =MMC_CAP_4_BIT_DATA |MMC_CAP_8_BIT_DATA , };
@@ -126,21 +126,21 @@ static void __init omap3_beagle_init_rev(void)printk (KERN_INFO "OMAP3 Beagle Rev: Ax/Bx\n" ); omap3_beagle_version =OMAP3BEAGLE_BOARD_AXBX ; beagle_config.mmc1_gpio_wp =29 ; - beagle_config.reset_gpio =170 ; + beagle_config.dvi_pd_gpio =170 ; beagle_config.usr_button_gpio =7 ;break ;case 6 :printk (KERN_INFO "OMAP3 Beagle Rev: C1/C2/C3\n" ); omap3_beagle_version =OMAP3BEAGLE_BOARD_C1_3 ; beagle_config.mmc1_gpio_wp =23 ; - beagle_config.reset_gpio =170 ; + beagle_config.dvi_pd_gpio =170 ; beagle_config.usr_button_gpio =7 ;break ;case 5 :printk (KERN_INFO "OMAP3 Beagle Rev: C4\n" ); omap3_beagle_version =OMAP3BEAGLE_BOARD_C4 ; beagle_config.mmc1_gpio_wp =23 ; - beagle_config.reset_gpio =170 ; + beagle_config.dvi_pd_gpio =170 ; beagle_config.usr_button_gpio =7 ;break ;case 0 :
@@ -273,11 +273,9 @@ static int beagle_twl_gpio_setup(struct device *dev,if (r)pr_err ("%s: unable to configure nDVI_PWR_EN\n" , __func__); - r =gpio_request_one (gpio +2 ,GPIOF_OUT_INIT_HIGH , -"DVI_LDO_EN" ); -if (r) -pr_err ("%s: unable to configure DVI_LDO_EN\n" , - __func__); + + beagle_config.dvi_pd_gpio = gpio +2 ; + }else {/* * REVISIT: need ehci-omap hooks for external VBUS
@@ -286,7 +284,7 @@ static int beagle_twl_gpio_setup(struct device *dev,if (gpio_request_one (gpio +1 ,GPIOF_IN ,"EHCI_nOC" ))pr_err ("%s: unable to configure EHCI_nOC\n" , __func__); } - dvi_panel.power_down_gpio = beagle_config.reset_gpio; + dvi_panel.power_down_gpio = beagle_config.dvi_pd_gpio;gpio_request_one (gpio +TWL4030_GPIO_MAX , beagle_config.usb_pwr_level,"nEN_USB_PWR" );
@@ -498,7 +496,7 @@ static void __init omap3_beagle_init(void)omap3_mux_init (board_mux,OMAP_PACKAGE_CBB );omap3_beagle_init_rev (); -if (beagle_config.mmc1_gpio_wp != -EINVAL ) +if (gpio_is_valid (beagle_config.mmc1_gpio_wp))omap_mux_init_gpio (beagle_config.mmc1_gpio_wp,OMAP_PIN_INPUT ); mmc[0 ].caps = beagle_config.mmc_caps;omap_hsmmc_init (mmc);
@@ -509,15 +507,13 @@ static void __init omap3_beagle_init(void)platform_add_devices (omap3_beagle_devices,ARRAY_SIZE (omap3_beagle_devices)); +if (gpio_is_valid (beagle_config.dvi_pd_gpio)) +omap_mux_init_gpio (beagle_config.dvi_pd_gpio,OMAP_PIN_OUTPUT );omap_display_init (&beagle_dss_data);omap_serial_init ();omap_sdrc_init (mt46h32m32lf6_sdrc_params, mt46h32m32lf6_sdrc_params); -omap_mux_init_gpio (170 ,OMAP_PIN_INPUT ); -/* REVISIT leave DVI powered down until it's needed ... */ -gpio_request_one (170 ,GPIOF_OUT_INIT_HIGH ,"DVI_nPD" ); -usb_musb_init (NULL );usbhs_init (&usbhs_bdata); omap_nand_flash_init(NAND_BUSWIDTH_16, omap3beagle_nand_partitions,
Signature · 1 line
1.7.10
PATCH v4 1/1 ARM: OMAP: Cleanup Beagleboard DVI reset gpio
Quoted 18 lines · Russ Dill
This removes several boot warnings from
board-omap3beagle.c:-
gpio_request: gpio--22 (DVI reset) status -22
- Unable to get DVI reset GPIOThere is a combination of leftover code and revision confusion. Additionally, xM support is currently a hack.
For original Beagleboard this removes the double initialization of GPIO 170, properly configures it as an output, and wraps the initialization in an if block so that xM does not attempt to request it.
For Beagleboard xM it removes reference to GPIO 129 which was part of rev A1 and A2 designs, but never functioned. It then properly assigns beagle_dvi_device.reset_gpio in
beagle_twl_gpio_setupand removes the hack of initializing it high. Additionally, it usesgpio_set_value_cansleepsince this GPIO is connected through i2c.
Quoted 8 lines
Unfortunately, there is no way to tell the difference between xM A2 and A3. However, GPIO 129 does not function on rev A1 and A2, and the TWL GPIO used on A3 and beyond is not used on rev A1 and A2, there are no problems created by this fix.
v4
- Rebase ontogit://gitorious.org/linux-omap-dss2/linux.gitfor-l-o-3.5
- Usedvi_pd_gpioinstead ofreset_gpioto match with new naming
Hmm, was this rebased correctly? It doesn't apply to for-l-o-3.5 branch.
Tomi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120521/dd8eec00/attachment.sig>
PATCH v4 1/1 ARM: OMAP: Cleanup Beagleboard DVI reset gpio
Quoted 24 lines · Tomi Valkeinen
Quoted 23 lines · Russ Dill
This removes several boot warnings from
board-omap3beagle.c:?-
gpio_request: gpio--22 (DVI reset) status -22
?- Unable to get DVI reset GPIOThere is a combination of leftover code and revision confusion. Additionally, xM support is currently a hack.
For original Beagleboard this removes the double initialization of GPIO 170, properly configures it as an output, and wraps the initialization in an if block so that xM does not attempt to request it.
For Beagleboard xM it removes reference to GPIO 129 which was part of rev A1 and A2 designs, but never functioned. It then properly assigns beagle_dvi_device.reset_gpio in
beagle_twl_gpio_setupand removes the hack of initializing it high. Additionally, it usesgpio_set_value_cansleepsince this GPIO is connected through i2c.Unfortunately, there is no way to tell the difference between xM A2 and A3. However, GPIO 129 does not function on rev A1 and A2, and the TWL GPIO used on A3 and beyond is not used on rev A1 and A2, there are no problems created by this fix.
Quoted 5 lines
Quoted 3 lines
v4
?- Rebase ontogit://gitorious.org/linux-omap-dss2/linux.gitfor-l-o-3.5 ?- Usedvi_pd_gpioinstead ofreset_gpioto match with new namingHmm, was this rebased correctly? It doesn't apply to for-l-o-3.5 branch.
It sits on top of for-l-o-3.5 and '[OMAP] Mark Beagleboard-xM MMC bus as 4-bit'. You can cherry-pick 1afb82e4 before applying, or I can drop that patch from the series and resend.