forked from rpms/kernel
		
	Add fix for RTC crash on ARMv7 am33xx devices
This commit is contained in:
		
							parent
							
								
									d51e15e2b7
								
							
						
					
					
						commit
						b325251966
					
				| @ -511,6 +511,9 @@ Patch425: arm64-pcie-quirks-xgene.patch | |||||||
| # http://www.spinics.net/lists/linux-tegra/msg26029.html | # http://www.spinics.net/lists/linux-tegra/msg26029.html | ||||||
| Patch426: usb-phy-tegra-Add-38.4MHz-clock-table-entry.patch | Patch426: usb-phy-tegra-Add-38.4MHz-clock-table-entry.patch | ||||||
| 
 | 
 | ||||||
|  | # http://www.spinics.net/lists/linux-omap/msg130698.html | ||||||
|  | Patch427: omap-rtc-fix-am33xx.patch | ||||||
|  | 
 | ||||||
| # http://patchwork.ozlabs.org/patch/587554/ | # http://patchwork.ozlabs.org/patch/587554/ | ||||||
| Patch430: ARM-tegra-usb-no-reset.patch | Patch430: ARM-tegra-usb-no-reset.patch | ||||||
| 
 | 
 | ||||||
| @ -2139,6 +2142,9 @@ fi | |||||||
| # | # | ||||||
| # | # | ||||||
| %changelog | %changelog | ||||||
|  | * Sat Aug 20 2016 Peter Robinson <pbrobinson@fedoraproject.org> | ||||||
|  | - Add fix for RTC crash on ARMv7 am33xx devices | ||||||
|  | 
 | ||||||
| * Fri Aug 19 2016 Justin M. Forbes <jforbes@fedoraproject.org> - 4.8.0-0.rc2.git4.1 | * Fri Aug 19 2016 Justin M. Forbes <jforbes@fedoraproject.org> - 4.8.0-0.rc2.git4.1 | ||||||
| - Linux v4.8-rc2-348-g6040e57 | - Linux v4.8-rc2-348-g6040e57 | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										223
									
								
								omap-rtc-fix-am33xx.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										223
									
								
								omap-rtc-fix-am33xx.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,223 @@ | |||||||
|  | From patchwork Tue Jul 12 17:50:31 2016 | ||||||
|  | Content-Type: text/plain; charset="utf-8" | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Transfer-Encoding: 7bit | ||||||
|  | Subject: [1/4] ARM: OMAP4+: hwmod: Add hwmod flag for | ||||||
|  |  HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET | ||||||
|  | From: Dave Gerlach <d-gerlach@ti.com> | ||||||
|  | X-Patchwork-Id: 9225857 | ||||||
|  | Message-Id: <20160712175034.743-2-d-gerlach@ti.com> | ||||||
|  | To: <linux-arm-kernel@lists.infradead.org>, <linux-omap@vger.kernel.org>, | ||||||
|  |  Tony Lindgren <tony@atomide.com>, Tero Kristo <t-kristo@ti.com> | ||||||
|  | Cc: Lokesh Vutla <lokeshvutla@ti.com>, Olof Johansson <olof@lixom.net>, | ||||||
|  |  Paul Walmsley <paul@pwsan.com>, Arnd Bergmann <arnd@arndb.de>, | ||||||
|  |  Dave Gerlach <d-gerlach@ti.com> | ||||||
|  | Date: Tue, 12 Jul 2016 12:50:31 -0500 | ||||||
|  | 
 | ||||||
|  | Nearly all modules on OMAP4 and newer platforms have clkctrl offsets | ||||||
|  | that are non-zero except for the RTC on am335x. Because we rely on a | ||||||
|  | clkctrl_offset of zero to indicate no clkctrl_offset being present, | ||||||
|  | lets add a HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET flag to use to indicate | ||||||
|  | hwmods that have a valid clkctrl_offset of 0. | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Dave Gerlach <d-gerlach@ti.com> | ||||||
|  | ---
 | ||||||
|  |  arch/arm/mach-omap2/omap_hwmod.h | 4 ++++ | ||||||
|  |  1 file changed, 4 insertions(+) | ||||||
|  | 
 | ||||||
|  | diff --git a/arch/arm/mach-omap2/omap_hwmod.h b/arch/arm/mach-omap2/omap_hwmod.h
 | ||||||
|  | index 4041bad79a9a..78904017f18c 100644
 | ||||||
|  | --- a/arch/arm/mach-omap2/omap_hwmod.h
 | ||||||
|  | +++ b/arch/arm/mach-omap2/omap_hwmod.h
 | ||||||
|  | @@ -443,8 +443,12 @@ struct omap_hwmod_omap2_prcm {
 | ||||||
|  |   * HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT: Some IP blocks don't have a PRCM | ||||||
|  |   *     module-level context loss register associated with them; this | ||||||
|  |   *     flag bit should be set in those cases | ||||||
|  | + * HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET: Some IP blocks have a valid CLKCTRL
 | ||||||
|  | + *	offset of zero; this flag bit should be set in those cases to
 | ||||||
|  | + *	distinguish from hwmods that have no clkctrl offset.
 | ||||||
|  |   */ | ||||||
|  |  #define HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT		(1 << 0) | ||||||
|  | +#define HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET		(1 << 1)
 | ||||||
|  |   | ||||||
|  |  /** | ||||||
|  |   * struct omap_hwmod_omap4_prcm - OMAP4-specific PRCM data | ||||||
|  | From patchwork Tue Jul 12 17:50:32 2016 | ||||||
|  | Content-Type: text/plain; charset="utf-8" | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Transfer-Encoding: 7bit | ||||||
|  | Subject: [2/4] ARM: OMAP2+: AM33XX: Add HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET flag | ||||||
|  |  to rtc hwmod | ||||||
|  | From: Dave Gerlach <d-gerlach@ti.com> | ||||||
|  | X-Patchwork-Id: 9225861 | ||||||
|  | Message-Id: <20160712175034.743-3-d-gerlach@ti.com> | ||||||
|  | To: <linux-arm-kernel@lists.infradead.org>, <linux-omap@vger.kernel.org>, | ||||||
|  |  Tony Lindgren <tony@atomide.com>, Tero Kristo <t-kristo@ti.com> | ||||||
|  | Cc: Lokesh Vutla <lokeshvutla@ti.com>, Olof Johansson <olof@lixom.net>, | ||||||
|  |  Paul Walmsley <paul@pwsan.com>, Arnd Bergmann <arnd@arndb.de>, | ||||||
|  |  Dave Gerlach <d-gerlach@ti.com> | ||||||
|  | Date: Tue, 12 Jul 2016 12:50:32 -0500 | ||||||
|  | 
 | ||||||
|  | The RTC hwmod on AM335x family of SoCs is unique in that the | ||||||
|  | clkctrl_offs in the PRCM is 0. We rely on a clkctrl_offs of zero as | ||||||
|  | indicating no clkctrl is present so we must flag this hwmod with | ||||||
|  | HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET to indicate the 0 clkctrl_offs is in | ||||||
|  | fact valid in this case. | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Dave Gerlach <d-gerlach@ti.com> | ||||||
|  | ---
 | ||||||
|  |  arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c | 2 ++ | ||||||
|  |  1 file changed, 2 insertions(+) | ||||||
|  | 
 | ||||||
|  | diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c
 | ||||||
|  | index 55c5878577f4..e2d84aa7f595 100644
 | ||||||
|  | --- a/arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c
 | ||||||
|  | +++ b/arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c
 | ||||||
|  | @@ -29,6 +29,7 @@
 | ||||||
|  |  #define CLKCTRL(oh, clkctrl) ((oh).prcm.omap4.clkctrl_offs = (clkctrl)) | ||||||
|  |  #define RSTCTRL(oh, rstctrl) ((oh).prcm.omap4.rstctrl_offs = (rstctrl)) | ||||||
|  |  #define RSTST(oh, rstst) ((oh).prcm.omap4.rstst_offs = (rstst)) | ||||||
|  | +#define PRCM_FLAGS(oh, flag) ((oh).prcm.omap4.flags = (flag))
 | ||||||
|  |   | ||||||
|  |  /* | ||||||
|  |   * 'l3' class | ||||||
|  | @@ -1296,6 +1297,7 @@ static void omap_hwmod_am33xx_clkctrl(void)
 | ||||||
|  |  	CLKCTRL(am33xx_i2c1_hwmod, AM33XX_CM_WKUP_I2C0_CLKCTRL_OFFSET); | ||||||
|  |  	CLKCTRL(am33xx_wd_timer1_hwmod, AM33XX_CM_WKUP_WDT1_CLKCTRL_OFFSET); | ||||||
|  |  	CLKCTRL(am33xx_rtc_hwmod, AM33XX_CM_RTC_RTC_CLKCTRL_OFFSET); | ||||||
|  | +	PRCM_FLAGS(am33xx_rtc_hwmod, HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET);
 | ||||||
|  |  	CLKCTRL(am33xx_mmc2_hwmod, AM33XX_CM_PER_MMC2_CLKCTRL_OFFSET); | ||||||
|  |  	CLKCTRL(am33xx_gpmc_hwmod, AM33XX_CM_PER_GPMC_CLKCTRL_OFFSET); | ||||||
|  |  	CLKCTRL(am33xx_l4_ls_hwmod, AM33XX_CM_PER_L4LS_CLKCTRL_OFFSET); | ||||||
|  | From patchwork Tue Jul 12 17:50:33 2016 | ||||||
|  | Content-Type: text/plain; charset="utf-8" | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Transfer-Encoding: 7bit | ||||||
|  | Subject: [3/4] ARM: OMAP4+: Have _omap4_wait_target_* check for valid | ||||||
|  |  clkctrl_offs | ||||||
|  | From: Dave Gerlach <d-gerlach@ti.com> | ||||||
|  | X-Patchwork-Id: 9225859 | ||||||
|  | Message-Id: <20160712175034.743-4-d-gerlach@ti.com> | ||||||
|  | To: <linux-arm-kernel@lists.infradead.org>, <linux-omap@vger.kernel.org>, | ||||||
|  |  Tony Lindgren <tony@atomide.com>, Tero Kristo <t-kristo@ti.com> | ||||||
|  | Cc: Lokesh Vutla <lokeshvutla@ti.com>, Olof Johansson <olof@lixom.net>, | ||||||
|  |  Paul Walmsley <paul@pwsan.com>, Arnd Bergmann <arnd@arndb.de>, | ||||||
|  |  Dave Gerlach <d-gerlach@ti.com> | ||||||
|  | Date: Tue, 12 Jul 2016 12:50:33 -0500 | ||||||
|  | 
 | ||||||
|  | Previously the low-level CM call internal to the | ||||||
|  | _omap4_wait_target_ready/disable calls was responsible for checking for | ||||||
|  | a valid clkctrl_offs. Now we must also consider the value of the | ||||||
|  | prcm.omap4.flags because if HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET is set in | ||||||
|  | the flags then clkctrl_offs of 0 is valid. | ||||||
|  | 
 | ||||||
|  | Let's move this check into the _omap4_wait_target_ready/disable where we | ||||||
|  | have access to both the clkctrl_offs and the flags values and simply | ||||||
|  | return 0 without calling the low level CM call at all, which would have | ||||||
|  | returned 0 anyway if the clktrl_offs was zero. | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Dave Gerlach <d-gerlach@ti.com> | ||||||
|  | ---
 | ||||||
|  |  arch/arm/mach-omap2/omap_hwmod.c | 8 ++++++++ | ||||||
|  |  1 file changed, 8 insertions(+) | ||||||
|  | 
 | ||||||
|  | diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
 | ||||||
|  | index 5b709383381c..1052b29697b8 100644
 | ||||||
|  | --- a/arch/arm/mach-omap2/omap_hwmod.c
 | ||||||
|  | +++ b/arch/arm/mach-omap2/omap_hwmod.c
 | ||||||
|  | @@ -1053,6 +1053,10 @@ static int _omap4_wait_target_disable(struct omap_hwmod *oh)
 | ||||||
|  |  	if (oh->flags & HWMOD_NO_IDLEST) | ||||||
|  |  		return 0; | ||||||
|  |   | ||||||
|  | +	if (!oh->prcm.omap4.clkctrl_offs &&
 | ||||||
|  | +	    !(oh->prcm.omap4.flags & HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET))
 | ||||||
|  | +		return 0;
 | ||||||
|  | +
 | ||||||
|  |  	return omap_cm_wait_module_idle(oh->clkdm->prcm_partition, | ||||||
|  |  					oh->clkdm->cm_inst, | ||||||
|  |  					oh->prcm.omap4.clkctrl_offs, 0); | ||||||
|  | @@ -2971,6 +2975,10 @@ static int _omap4_wait_target_ready(struct omap_hwmod *oh)
 | ||||||
|  |  	if (!_find_mpu_rt_port(oh)) | ||||||
|  |  		return 0; | ||||||
|  |   | ||||||
|  | +	if (!oh->prcm.omap4.clkctrl_offs &&
 | ||||||
|  | +	    !(oh->prcm.omap4.flags & HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET))
 | ||||||
|  | +		return 0;
 | ||||||
|  | +
 | ||||||
|  |  	/* XXX check module SIDLEMODE, hardreset status */ | ||||||
|  |   | ||||||
|  |  	return omap_cm_wait_module_ready(oh->clkdm->prcm_partition, | ||||||
|  | From patchwork Tue Jul 12 17:50:34 2016 | ||||||
|  | Content-Type: text/plain; charset="utf-8" | ||||||
|  | MIME-Version: 1.0 | ||||||
|  | Content-Transfer-Encoding: 7bit | ||||||
|  | Subject: [4/4] ARM: OMAP4+: CM: Remove redundant checks for clkctrl_offs of | ||||||
|  |  zero | ||||||
|  | From: Dave Gerlach <d-gerlach@ti.com> | ||||||
|  | X-Patchwork-Id: 9225863 | ||||||
|  | Message-Id: <20160712175034.743-5-d-gerlach@ti.com> | ||||||
|  | To: <linux-arm-kernel@lists.infradead.org>, <linux-omap@vger.kernel.org>, | ||||||
|  |  Tony Lindgren <tony@atomide.com>, Tero Kristo <t-kristo@ti.com> | ||||||
|  | Cc: Lokesh Vutla <lokeshvutla@ti.com>, Olof Johansson <olof@lixom.net>, | ||||||
|  |  Paul Walmsley <paul@pwsan.com>, Arnd Bergmann <arnd@arndb.de>, | ||||||
|  |  Dave Gerlach <d-gerlach@ti.com> | ||||||
|  | Date: Tue, 12 Jul 2016 12:50:34 -0500 | ||||||
|  | 
 | ||||||
|  | Now that we have moved the check for valid clkctrl_offs to the caller of | ||||||
|  | am33xx_cm_wait_module_ready/idle and omap4_cminst_wait_module_ready/idle | ||||||
|  | let's remove the now redundant check for clkctrl_offs from these functions. | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Dave Gerlach <d-gerlach@ti.com> | ||||||
|  | ---
 | ||||||
|  |  arch/arm/mach-omap2/cm33xx.c     | 6 ------ | ||||||
|  |  arch/arm/mach-omap2/cminst44xx.c | 6 ------ | ||||||
|  |  2 files changed, 12 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/arch/arm/mach-omap2/cm33xx.c b/arch/arm/mach-omap2/cm33xx.c
 | ||||||
|  | index c073fb57dd13..6f2d0aec0513 100644
 | ||||||
|  | --- a/arch/arm/mach-omap2/cm33xx.c
 | ||||||
|  | +++ b/arch/arm/mach-omap2/cm33xx.c
 | ||||||
|  | @@ -220,9 +220,6 @@ static int am33xx_cm_wait_module_ready(u8 part, s16 inst, u16 clkctrl_offs,
 | ||||||
|  |  { | ||||||
|  |  	int i = 0; | ||||||
|  |   | ||||||
|  | -	if (!clkctrl_offs)
 | ||||||
|  | -		return 0;
 | ||||||
|  | -
 | ||||||
|  |  	omap_test_timeout(_is_module_ready(inst, clkctrl_offs), | ||||||
|  |  			  MAX_MODULE_READY_TIME, i); | ||||||
|  |   | ||||||
|  | @@ -246,9 +243,6 @@ static int am33xx_cm_wait_module_idle(u8 part, s16 inst, u16 clkctrl_offs,
 | ||||||
|  |  { | ||||||
|  |  	int i = 0; | ||||||
|  |   | ||||||
|  | -	if (!clkctrl_offs)
 | ||||||
|  | -		return 0;
 | ||||||
|  | -
 | ||||||
|  |  	omap_test_timeout((_clkctrl_idlest(inst, clkctrl_offs) == | ||||||
|  |  				CLKCTRL_IDLEST_DISABLED), | ||||||
|  |  				MAX_MODULE_READY_TIME, i); | ||||||
|  | diff --git a/arch/arm/mach-omap2/cminst44xx.c b/arch/arm/mach-omap2/cminst44xx.c
 | ||||||
|  | index 2c0e07ed6b99..2ab27ade136a 100644
 | ||||||
|  | --- a/arch/arm/mach-omap2/cminst44xx.c
 | ||||||
|  | +++ b/arch/arm/mach-omap2/cminst44xx.c
 | ||||||
|  | @@ -278,9 +278,6 @@ static int omap4_cminst_wait_module_ready(u8 part, s16 inst, u16 clkctrl_offs,
 | ||||||
|  |  { | ||||||
|  |  	int i = 0; | ||||||
|  |   | ||||||
|  | -	if (!clkctrl_offs)
 | ||||||
|  | -		return 0;
 | ||||||
|  | -
 | ||||||
|  |  	omap_test_timeout(_is_module_ready(part, inst, clkctrl_offs), | ||||||
|  |  			  MAX_MODULE_READY_TIME, i); | ||||||
|  |   | ||||||
|  | @@ -304,9 +301,6 @@ static int omap4_cminst_wait_module_idle(u8 part, s16 inst, u16 clkctrl_offs,
 | ||||||
|  |  { | ||||||
|  |  	int i = 0; | ||||||
|  |   | ||||||
|  | -	if (!clkctrl_offs)
 | ||||||
|  | -		return 0;
 | ||||||
|  | -
 | ||||||
|  |  	omap_test_timeout((_clkctrl_idlest(part, inst, clkctrl_offs) == | ||||||
|  |  			   CLKCTRL_IDLEST_DISABLED), | ||||||
|  |  			  MAX_MODULE_DISABLE_TIME, i); | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user