diff mbox

[3/3] ARM: OMAP2+: Let DT say what devices should not to idled or reset

Message ID 1376983966-16490-4-git-send-email-rnayak@ti.com (mailing list archive)
State New, archived
Headers show

Commit Message

Rajendra Nayak Aug. 20, 2013, 7:32 a.m. UTC
Now that we have DT bindings to specify which devices on the SoC should not
be reset or idled, get rid of the same information existing as part of the
hwmod data files and pass this info from DT instead.

For GPMC, the HWMOD_INIT_NO_RESET flag seems to be added in hwmod not due to
any errata around the GPMC IP, but rather because any timings
set by the bootloader are not being correctly programmed by the kernel.
This seems like something that needs to be fixed as part of GPMC driver
in the kernel, and hence the flag is left as is in hwmod, which can be
removed once the driver does what its expected to.

Signed-off-by: Rajendra Nayak <rnayak@ti.com>
---
 arch/arm/boot/dts/am33xx.dtsi              |    2 ++
 arch/arm/boot/dts/omap4.dtsi               |    3 +++
 arch/arm/boot/dts/omap5.dtsi               |    2 ++
 arch/arm/mach-omap2/omap_hwmod_33xx_data.c |    4 ++--
 arch/arm/mach-omap2/omap_hwmod_44xx_data.c |    4 +---
 arch/arm/mach-omap2/omap_hwmod_54xx_data.c |    2 --
 6 files changed, 10 insertions(+), 7 deletions(-)

Comments

Paul Walmsley Oct. 9, 2013, 7:24 a.m. UTC | #1
Hi Benoît, Rajendra,

On Tue, 20 Aug 2013, Rajendra Nayak wrote:

> Now that we have DT bindings to specify which devices on the SoC should not
> be reset or idled, get rid of the same information existing as part of the
> hwmod data files and pass this info from DT instead.
> 
> For GPMC, the HWMOD_INIT_NO_RESET flag seems to be added in hwmod not due to
> any errata around the GPMC IP, but rather because any timings
> set by the bootloader are not being correctly programmed by the kernel.
> This seems like something that needs to be fixed as part of GPMC driver
> in the kernel, and hence the flag is left as is in hwmod, which can be
> removed once the driver does what its expected to.
> 
> Signed-off-by: Rajendra Nayak <rnayak@ti.com>
> ---
>  arch/arm/boot/dts/am33xx.dtsi              |    2 ++
>  arch/arm/boot/dts/omap4.dtsi               |    3 +++
>  arch/arm/boot/dts/omap5.dtsi               |    2 ++
>  arch/arm/mach-omap2/omap_hwmod_33xx_data.c |    4 ++--
>  arch/arm/mach-omap2/omap_hwmod_44xx_data.c |    4 +---
>  arch/arm/mach-omap2/omap_hwmod_54xx_data.c |    2 --
>  6 files changed, 10 insertions(+), 7 deletions(-)

Looking at this one, maybe the best thing for this patch is for Rajendra 
to split it into two patches.  Benoît can merge the DTS patch first, then 
I can merge the hwmod side as a cleanup once the first one goes in.  That 
will avoid conflicts from other DTS and hwmod changes going into the tree.

Rajendra, when you do the split, please add in the DT documentation part 
from patch 2.  Am going to strip that out from the second patch and just 
merge the hwmod changes.

Sound good?


- Paul
Rajendra Nayak Oct. 9, 2013, 7:37 a.m. UTC | #2
On Wednesday 09 October 2013 12:54 PM, Paul Walmsley wrote:
> Hi Benoît, Rajendra,
> 
> On Tue, 20 Aug 2013, Rajendra Nayak wrote:
> 
>> Now that we have DT bindings to specify which devices on the SoC should not
>> be reset or idled, get rid of the same information existing as part of the
>> hwmod data files and pass this info from DT instead.
>>
>> For GPMC, the HWMOD_INIT_NO_RESET flag seems to be added in hwmod not due to
>> any errata around the GPMC IP, but rather because any timings
>> set by the bootloader are not being correctly programmed by the kernel.
>> This seems like something that needs to be fixed as part of GPMC driver
>> in the kernel, and hence the flag is left as is in hwmod, which can be
>> removed once the driver does what its expected to.
>>
>> Signed-off-by: Rajendra Nayak <rnayak@ti.com>
>> ---
>>  arch/arm/boot/dts/am33xx.dtsi              |    2 ++
>>  arch/arm/boot/dts/omap4.dtsi               |    3 +++
>>  arch/arm/boot/dts/omap5.dtsi               |    2 ++
>>  arch/arm/mach-omap2/omap_hwmod_33xx_data.c |    4 ++--
>>  arch/arm/mach-omap2/omap_hwmod_44xx_data.c |    4 +---
>>  arch/arm/mach-omap2/omap_hwmod_54xx_data.c |    2 --
>>  6 files changed, 10 insertions(+), 7 deletions(-)
> 
> Looking at this one, maybe the best thing for this patch is for Rajendra 
> to split it into two patches.  Benoît can merge the DTS patch first, then 
> I can merge the hwmod side as a cleanup once the first one goes in.  That 
> will avoid conflicts from other DTS and hwmod changes going into the tree.
> 
> Rajendra, when you do the split, please add in the DT documentation part 
> from patch 2.  Am going to strip that out from the second patch and just 
> merge the hwmod changes.
> 
> Sound good?

Sure Paul, I'll repost the complete series with proper splits such that its
easier for you and Benoit to pick them up independently.

> 
> 
> - Paul
> 

--
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
Benoit Cousson Oct. 9, 2013, 8:19 a.m. UTC | #3
Hi Rajendra,

On 09/10/2013 09:37, Rajendra Nayak wrote:
> On Wednesday 09 October 2013 12:54 PM, Paul Walmsley wrote:
>> Hi Benoît, Rajendra,
>>
>> On Tue, 20 Aug 2013, Rajendra Nayak wrote:
>>
>>> Now that we have DT bindings to specify which devices on the SoC should not
>>> be reset or idled, get rid of the same information existing as part of the
>>> hwmod data files and pass this info from DT instead.
>>>
>>> For GPMC, the HWMOD_INIT_NO_RESET flag seems to be added in hwmod not due to
>>> any errata around the GPMC IP, but rather because any timings
>>> set by the bootloader are not being correctly programmed by the kernel.
>>> This seems like something that needs to be fixed as part of GPMC driver
>>> in the kernel, and hence the flag is left as is in hwmod, which can be
>>> removed once the driver does what its expected to.
>>>
>>> Signed-off-by: Rajendra Nayak <rnayak@ti.com>
>>> ---
>>>   arch/arm/boot/dts/am33xx.dtsi              |    2 ++
>>>   arch/arm/boot/dts/omap4.dtsi               |    3 +++
>>>   arch/arm/boot/dts/omap5.dtsi               |    2 ++
>>>   arch/arm/mach-omap2/omap_hwmod_33xx_data.c |    4 ++--
>>>   arch/arm/mach-omap2/omap_hwmod_44xx_data.c |    4 +---
>>>   arch/arm/mach-omap2/omap_hwmod_54xx_data.c |    2 --
>>>   6 files changed, 10 insertions(+), 7 deletions(-)
>>
>> Looking at this one, maybe the best thing for this patch is for Rajendra
>> to split it into two patches.  Benoît can merge the DTS patch first, then
>> I can merge the hwmod side as a cleanup once the first one goes in.  That
>> will avoid conflicts from other DTS and hwmod changes going into the tree.
>>
>> Rajendra, when you do the split, please add in the DT documentation part
>> from patch 2.  Am going to strip that out from the second patch and just
>> merge the hwmod changes.
>>
>> Sound good?
>
> Sure Paul, I'll repost the complete series with proper splits such that its
> easier for you and Benoit to pick them up independently.

If you could do it soon, I'm about to send an early pull request to Tony 
to avoid the trouble we had last time.

Thanks,
Benoit

--
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
Rajendra Nayak Oct. 9, 2013, 8:49 a.m. UTC | #4
On Wednesday 09 October 2013 01:49 PM, Benoit Cousson wrote:
> Hi Rajendra,
> 
> On 09/10/2013 09:37, Rajendra Nayak wrote:
>> On Wednesday 09 October 2013 12:54 PM, Paul Walmsley wrote:
>>> Hi Benoît, Rajendra,
>>>
>>> On Tue, 20 Aug 2013, Rajendra Nayak wrote:
>>>
>>>> Now that we have DT bindings to specify which devices on the SoC should not
>>>> be reset or idled, get rid of the same information existing as part of the
>>>> hwmod data files and pass this info from DT instead.
>>>>
>>>> For GPMC, the HWMOD_INIT_NO_RESET flag seems to be added in hwmod not due to
>>>> any errata around the GPMC IP, but rather because any timings
>>>> set by the bootloader are not being correctly programmed by the kernel.
>>>> This seems like something that needs to be fixed as part of GPMC driver
>>>> in the kernel, and hence the flag is left as is in hwmod, which can be
>>>> removed once the driver does what its expected to.
>>>>
>>>> Signed-off-by: Rajendra Nayak <rnayak@ti.com>
>>>> ---
>>>>   arch/arm/boot/dts/am33xx.dtsi              |    2 ++
>>>>   arch/arm/boot/dts/omap4.dtsi               |    3 +++
>>>>   arch/arm/boot/dts/omap5.dtsi               |    2 ++
>>>>   arch/arm/mach-omap2/omap_hwmod_33xx_data.c |    4 ++--
>>>>   arch/arm/mach-omap2/omap_hwmod_44xx_data.c |    4 +---
>>>>   arch/arm/mach-omap2/omap_hwmod_54xx_data.c |    2 --
>>>>   6 files changed, 10 insertions(+), 7 deletions(-)
>>>
>>> Looking at this one, maybe the best thing for this patch is for Rajendra
>>> to split it into two patches.  Benoît can merge the DTS patch first, then
>>> I can merge the hwmod side as a cleanup once the first one goes in.  That
>>> will avoid conflicts from other DTS and hwmod changes going into the tree.
>>>
>>> Rajendra, when you do the split, please add in the DT documentation part
>>> from patch 2.  Am going to strip that out from the second patch and just
>>> merge the hwmod changes.
>>>
>>> Sound good?
>>
>> Sure Paul, I'll repost the complete series with proper splits such that its
>> easier for you and Benoit to pick them up independently.
> 
> If you could do it soon, I'm about to send an early pull request to Tony to avoid the trouble we had last time.

I am sending them right-away Benoit.

> 
> Thanks,
> Benoit
> 

--
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
diff mbox

Patch

diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
index 38b446b..402d373 100644
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -492,6 +492,7 @@ 
 			reg = <0x44d00000 0x4000	/* M3 UMEM */
 			       0x44d80000 0x2000>;	/* M3 DMEM */
 			ti,hwmods = "wkup_m3";
+			ti,no-reset;
 		};
 
 		elm: elm@48080000 {
@@ -522,6 +523,7 @@ 
 		gpmc: gpmc@50000000 {
 			compatible = "ti,am3352-gpmc";
 			ti,hwmods = "gpmc";
+			ti,no-idle;
 			reg = <0x50000000 0x2000>;
 			interrupts = <100>;
 			gpmc,num-cs = <7>;
diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi
index 22d9f2b..9e22399 100644
--- a/arch/arm/boot/dts/omap4.dtsi
+++ b/arch/arm/boot/dts/omap4.dtsi
@@ -214,6 +214,7 @@ 
 			gpmc,num-cs = <8>;
 			gpmc,num-waitpins = <4>;
 			ti,hwmods = "gpmc";
+			ti,no-idle;
 		};
 
 		uart1: serial@4806a000 {
@@ -492,6 +493,7 @@ 
 			reg = <0x4c000000 0x100>;
 			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
 			ti,hwmods = "emif1";
+			ti,no-idle;
 			phy-type = <1>;
 			hw-caps-read-idle-ctrl;
 			hw-caps-ll-interface;
@@ -503,6 +505,7 @@ 
 			reg = <0x4d000000 0x100>;
 			interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
 			ti,hwmods = "emif2";
+			ti,no-idle;
 			phy-type = <1>;
 			hw-caps-read-idle-ctrl;
 			hw-caps-ll-interface;
diff --git a/arch/arm/boot/dts/omap5.dtsi b/arch/arm/boot/dts/omap5.dtsi
index e643620..85d20af 100644
--- a/arch/arm/boot/dts/omap5.dtsi
+++ b/arch/arm/boot/dts/omap5.dtsi
@@ -607,6 +607,7 @@ 
 		emif1: emif@0x4c000000 {
 			compatible	= "ti,emif-4d5";
 			ti,hwmods	= "emif1";
+			ti,no-idle;
 			phy-type	= <2>; /* DDR PHY type: Intelli PHY */
 			reg = <0x4c000000 0x400>;
 			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
@@ -618,6 +619,7 @@ 
 		emif2: emif@0x4d000000 {
 			compatible	= "ti,emif-4d5";
 			ti,hwmods	= "emif2";
+			ti,no-idle;
 			phy-type	= <2>; /* DDR PHY type: Intelli PHY */
 			reg = <0x4d000000 0x400>;
 			interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
index d4f0531..f34612b 100644
--- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
@@ -198,7 +198,7 @@  static struct omap_hwmod am33xx_wkup_m3_hwmod = {
 	.class		= &am33xx_wkup_m3_hwmod_class,
 	.clkdm_name	= "l4_wkup_aon_clkdm",
 	/* Keep hardreset asserted */
-	.flags		= HWMOD_INIT_NO_RESET | HWMOD_NO_IDLEST,
+	.flags		= HWMOD_NO_IDLEST,
 	.main_clk	= "dpll_core_m4_div2_ck",
 	.prcm		= {
 		.omap4	= {
@@ -926,7 +926,7 @@  static struct omap_hwmod am33xx_gpmc_hwmod = {
 	.name		= "gpmc",
 	.class		= &am33xx_gpmc_hwmod_class,
 	.clkdm_name	= "l3s_clkdm",
-	.flags		= (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
+	.flags		= HWMOD_INIT_NO_RESET,
 	.main_clk	= "l3s_gclk",
 	.prcm		= {
 		.omap4	= {
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index 1e5b12c..a507a70 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -914,7 +914,6 @@  static struct omap_hwmod omap44xx_emif1_hwmod = {
 	.name		= "emif1",
 	.class		= &omap44xx_emif_hwmod_class,
 	.clkdm_name	= "l3_emif_clkdm",
-	.flags		= HWMOD_INIT_NO_IDLE,
 	.main_clk	= "ddrphy_ck",
 	.prcm = {
 		.omap4 = {
@@ -930,7 +929,6 @@  static struct omap_hwmod omap44xx_emif2_hwmod = {
 	.name		= "emif2",
 	.class		= &omap44xx_emif_hwmod_class,
 	.clkdm_name	= "l3_emif_clkdm",
-	.flags		= HWMOD_INIT_NO_IDLE,
 	.main_clk	= "ddrphy_ck",
 	.prcm = {
 		.omap4 = {
@@ -1184,7 +1182,7 @@  static struct omap_hwmod omap44xx_gpmc_hwmod = {
 	 * the kernel from the board file or DT data.
 	 * HWMOD_INIT_NO_RESET should be removed ASAP.
 	 */
-	.flags		= HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
+	.flags		= HWMOD_INIT_NO_RESET,
 	.prcm = {
 		.omap4 = {
 			.clkctrl_offs = OMAP4_CM_L3_2_GPMC_CLKCTRL_OFFSET,
diff --git a/arch/arm/mach-omap2/omap_hwmod_54xx_data.c b/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
index 5483c6d..2cdc194 100644
--- a/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
@@ -353,7 +353,6 @@  static struct omap_hwmod omap54xx_emif1_hwmod = {
 	.name		= "emif1",
 	.class		= &omap54xx_emif_hwmod_class,
 	.clkdm_name	= "emif_clkdm",
-	.flags		= HWMOD_INIT_NO_IDLE,
 	.main_clk	= "dpll_core_h11x2_ck",
 	.prcm = {
 		.omap4 = {
@@ -369,7 +368,6 @@  static struct omap_hwmod omap54xx_emif2_hwmod = {
 	.name		= "emif2",
 	.class		= &omap54xx_emif_hwmod_class,
 	.clkdm_name	= "emif_clkdm",
-	.flags		= HWMOD_INIT_NO_IDLE,
 	.main_clk	= "dpll_core_h11x2_ck",
 	.prcm = {
 		.omap4 = {