Patchwork omap3: Adding vdd_sdi regulator supply to OMAP3EVM

login
register
mail settings
Submitter Bryan Wu
Date Feb. 17, 2011, 8:11 a.m.
Message ID <1297930274-16278-1-git-send-email-bryan.wu@canonical.com>
Download mbox | patch
Permalink /patch/83426/
State New
Headers show

Comments

Bryan Wu - Feb. 17, 2011, 8:11 a.m.
From: Mathieu J. Poirier <mathieu.poirier@canonical.com>

https://bugs.launchpad.net/bugs/630885

When booting, the omapdss subsystem is looking for a regulator named
"vdds_sdi". When the regulator is not found the initialisation sequence
is aborted resulting in omapfb not finding a display to work with.  This
patch allows the omapfb sub system to complete its initialisation
properly and enable LCD display. The problem was fixed by lumping a
"vdds_sdi" with the already existing "vdds_dsi" regulator. This fix
takes its root from work done on the Beagle board and the Pandora board.

Signed-off-by: Mathieu Poirier <mathieu.poirier@canonical.com>
Signed-off-by: Andy Whitcroft <apw@canonical.com>
Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
---
 arch/arm/mach-omap2/board-omap3evm.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)
Bryan Wu - Feb. 21, 2011, 7:02 a.m.
Hi, would you guys take a look at this?

Thanks,
-Bryan

On Thu, Feb 17, 2011 at 4:11 PM, Bryan Wu <bryan.wu@canonical.com> wrote:
> From: Mathieu J. Poirier <mathieu.poirier@canonical.com>
>
> https://bugs.launchpad.net/bugs/630885
>
> When booting, the omapdss subsystem is looking for a regulator named
> "vdds_sdi". When the regulator is not found the initialisation sequence
> is aborted resulting in omapfb not finding a display to work with.  This
> patch allows the omapfb sub system to complete its initialisation
> properly and enable LCD display. The problem was fixed by lumping a
> "vdds_sdi" with the already existing "vdds_dsi" regulator. This fix
> takes its root from work done on the Beagle board and the Pandora board.
>
> Signed-off-by: Mathieu Poirier <mathieu.poirier@canonical.com>
> Signed-off-by: Andy Whitcroft <apw@canonical.com>
> Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
> ---
>  arch/arm/mach-omap2/board-omap3evm.c |   10 ++++++----
>  1 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
> index c2a0fca..8b8eb36 100644
> --- a/arch/arm/mach-omap2/board-omap3evm.c
> +++ b/arch/arm/mach-omap2/board-omap3evm.c
> @@ -521,8 +521,10 @@ static struct regulator_init_data omap3_evm_vdac = {
>  };
>
>  /* VPLL2 for digital video outputs */
> -static struct regulator_consumer_supply omap3_evm_vpll2_supply =
> -       REGULATOR_SUPPLY("vdds_dsi", "omapdss");
> +static struct regulator_consumer_supply omap3_evm_vdds_supplies[] = {
> +       REGULATOR_SUPPLY("vdds_sdi", "omapdss"),
> +       REGULATOR_SUPPLY("vdds_dsi", "omapdss"),
> +};
>
>  static struct regulator_init_data omap3_evm_vpll2 = {
>        .constraints = {
> @@ -534,8 +536,8 @@ static struct regulator_init_data omap3_evm_vpll2 = {
>                .valid_ops_mask         = REGULATOR_CHANGE_MODE
>                                        | REGULATOR_CHANGE_STATUS,
>        },
> -       .num_consumer_supplies  = 1,
> -       .consumer_supplies      = &omap3_evm_vpll2_supply,
> +       .num_consumer_supplies  = ARRAY_SIZE(omap3_evm_vdds_supplies),
> +       .consumer_supplies      = omap3_evm_vdds_supplies,
>  };
>
>  static struct twl4030_platform_data omap3evm_twldata = {
> --
> 1.7.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
archit taneja - Feb. 21, 2011, 8:24 a.m.
Hi,

On Monday 21 February 2011 12:32 PM, Bryan Wu wrote:
> Hi, would you guys take a look at this?
>
> Thanks,
> -Bryan
>
> On Thu, Feb 17, 2011 at 4:11 PM, Bryan Wu<bryan.wu@canonical.com>  wrote:
>> From: Mathieu J. Poirier<mathieu.poirier@canonical.com>
>>
>> https://bugs.launchpad.net/bugs/630885
>>
>> When booting, the omapdss subsystem is looking for a regulator named
>> "vdds_sdi". When the regulator is not found the initialisation sequence
>> is aborted resulting in omapfb not finding a display to work with.  This
>> patch allows the omapfb sub system to complete its initialisation
>> properly and enable LCD display. The problem was fixed by lumping a
>> "vdds_sdi" with the already existing "vdds_dsi" regulator. This fix
>> takes its root from work done on the Beagle board and the Pandora board.
>>
>> Signed-off-by: Mathieu Poirier<mathieu.poirier@canonical.com>
>> Signed-off-by: Andy Whitcroft<apw@canonical.com>
>> Signed-off-by: Bryan Wu<bryan.wu@canonical.com>
>> ---
>>   arch/arm/mach-omap2/board-omap3evm.c |   10 ++++++----
>>   1 files changed, 6 insertions(+), 4 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
>> index c2a0fca..8b8eb36 100644
>> --- a/arch/arm/mach-omap2/board-omap3evm.c
>> +++ b/arch/arm/mach-omap2/board-omap3evm.c
>> @@ -521,8 +521,10 @@ static struct regulator_init_data omap3_evm_vdac = {
>>   };
>>
>>   /* VPLL2 for digital video outputs */
>> -static struct regulator_consumer_supply omap3_evm_vpll2_supply =
>> -       REGULATOR_SUPPLY("vdds_dsi", "omapdss");
>> +static struct regulator_consumer_supply omap3_evm_vdds_supplies[] = {
>> +       REGULATOR_SUPPLY("vdds_sdi", "omapdss"),
>> +       REGULATOR_SUPPLY("vdds_dsi", "omapdss"),
>> +};

I agree that this is needed. Currently, in omap_dss_probe() in core.c we 
call sdi_init even if its not selected in menuconfig. The same goes for 
other modules.

There is no harm adding this as. But we will probably need a cleaner way 
to handle initialization of the DSS interface modules in the DSS2 code.

Regards,
Archit
Tomi Valkeinen - Feb. 21, 2011, 9:08 a.m.
Hi,

On Thu, 2011-02-17 at 08:11 +0000, Bryan Wu wrote:
> From: Mathieu J. Poirier <mathieu.poirier@canonical.com>
> 
> https://bugs.launchpad.net/bugs/630885
> 
> When booting, the omapdss subsystem is looking for a regulator named
> "vdds_sdi". When the regulator is not found the initialisation sequence
> is aborted resulting in omapfb not finding a display to work with.  This
> patch allows the omapfb sub system to complete its initialisation
> properly and enable LCD display. The problem was fixed by lumping a
> "vdds_sdi" with the already existing "vdds_dsi" regulator. This fix
> takes its root from work done on the Beagle board and the Pandora board.

This isn't a correct fix.

If we would add the sdi regulator to remove the problem we would need to
add the sdi regulator to all boards, not just EVM.

However, I wouldn't go adding them. The proper fix is to make sdi.c only
use the regulator if SDI is actually used. Currently it tries to acquire
it always.

A simple "fix" for this is to disable SDI from Kconfig, presuming you
don't have boards that use SDI interface. N900 is the only board that I
know of which uses SDI.

 Tomi

Patch

diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index c2a0fca..8b8eb36 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -521,8 +521,10 @@  static struct regulator_init_data omap3_evm_vdac = {
 };
 
 /* VPLL2 for digital video outputs */
-static struct regulator_consumer_supply omap3_evm_vpll2_supply =
-	REGULATOR_SUPPLY("vdds_dsi", "omapdss");
+static struct regulator_consumer_supply omap3_evm_vdds_supplies[] = {
+	REGULATOR_SUPPLY("vdds_sdi", "omapdss"),
+	REGULATOR_SUPPLY("vdds_dsi", "omapdss"),
+};
 
 static struct regulator_init_data omap3_evm_vpll2 = {
 	.constraints = {
@@ -534,8 +536,8 @@  static struct regulator_init_data omap3_evm_vpll2 = {
 		.valid_ops_mask		= REGULATOR_CHANGE_MODE
 					| REGULATOR_CHANGE_STATUS,
 	},
-	.num_consumer_supplies	= 1,
-	.consumer_supplies	= &omap3_evm_vpll2_supply,
+	.num_consumer_supplies	= ARRAY_SIZE(omap3_evm_vdds_supplies),
+	.consumer_supplies	= omap3_evm_vdds_supplies,
 };
 
 static struct twl4030_platform_data omap3evm_twldata = {