aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-bsp/u-boot/u-boot-v2012.04.01/0003-MX53-add-function-to-set-SATA-clock-to-internal.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-bsp/u-boot/u-boot-v2012.04.01/0003-MX53-add-function-to-set-SATA-clock-to-internal.patch')
-rw-r--r--recipes-bsp/u-boot/u-boot-v2012.04.01/0003-MX53-add-function-to-set-SATA-clock-to-internal.patch77
1 files changed, 77 insertions, 0 deletions
diff --git a/recipes-bsp/u-boot/u-boot-v2012.04.01/0003-MX53-add-function-to-set-SATA-clock-to-internal.patch b/recipes-bsp/u-boot/u-boot-v2012.04.01/0003-MX53-add-function-to-set-SATA-clock-to-internal.patch
new file mode 100644
index 0000000..2a4eb94
--- /dev/null
+++ b/recipes-bsp/u-boot/u-boot-v2012.04.01/0003-MX53-add-function-to-set-SATA-clock-to-internal.patch
@@ -0,0 +1,77 @@
+From b22729b27625107061733c718cb49a394fd41a4a Mon Sep 17 00:00:00 2001
+From: Stefano Babic <sbabic@denx.de>
+Date: Wed, 22 Feb 2012 00:24:38 +0000
+Subject: [PATCH 03/56] MX53: add function to set SATA clock to internal
+
+The MX53 SATA interface can use an internal clock (USB PHY1)
+instead of an external clock. This is an undocumented feature, but used
+on most Freescale's evaluation boards, such as MX53-loco.
+
+As stated by Freescale's support:
+
+Fuses (but not pins) may be used to configure SATA clocks.
+Particularly the i.MX53 Fuse_Map contains the next information
+about configuring SATA clocks :
+ SATA_ALT_REF_CLK[1:0] (offset 0x180C)
+
+'00' - 100MHz (External)
+'01' - 50MHz (External)
+'10' - 120MHz, internal (USB PHY)
+'11' - Reserved
+
+Signed-off-by: Stefano Babic <sbabic@denx.de>
+CC: Fabio Estevam <fabio.estevam@freescale.com>
+---
+ arch/arm/cpu/armv7/mx5/clock.c | 24 ++++++++++++++++++++++++
+ arch/arm/include/asm/arch-mx5/clock.h | 1 +
+ 2 files changed, 25 insertions(+)
+
+diff --git a/arch/arm/cpu/armv7/mx5/clock.c b/arch/arm/cpu/armv7/mx5/clock.c
+index 8f8d01c..d769a4d 100644
+--- a/arch/arm/cpu/armv7/mx5/clock.c
++++ b/arch/arm/cpu/armv7/mx5/clock.c
+@@ -399,6 +399,30 @@ u32 imx_get_fecclk(void)
+ return mxc_get_clock(MXC_IPG_CLK);
+ }
+
++#ifdef CONFIG_MX53
++/*
++ * The clock for the external interface can be set to use internal clock
++ * if fuse bank 4, row 3, bit 2 is set.
++ * This is an undocumented feature and it was confirmed by Freescale's support:
++ * Fuses (but not pins) may be used to configure SATA clocks.
++ * Particularly the i.MX53 Fuse_Map contains the next information
++ * about configuring SATA clocks : SATA_ALT_REF_CLK[1:0] (offset 0x180C)
++ * '00' - 100MHz (External)
++ * '01' - 50MHz (External)
++ * '10' - 120MHz, internal (USB PHY)
++ * '11' - Reserved
++*/
++void mxc_set_sata_internal_clock(void)
++{
++ u32 *tmp_base =
++ (u32 *)(IIM_BASE_ADDR + 0x180c);
++
++ set_usb_phy1_clk();
++
++ writel((readl(tmp_base) & (~0x7)) | 0x4, tmp_base);
++}
++#endif
++
+ /*
+ * Dump some core clockes.
+ */
+diff --git a/arch/arm/include/asm/arch-mx5/clock.h b/arch/arm/include/asm/arch-mx5/clock.h
+index f9f82f3..e822809 100644
+--- a/arch/arm/include/asm/arch-mx5/clock.h
++++ b/arch/arm/include/asm/arch-mx5/clock.h
+@@ -45,5 +45,6 @@ void set_usb_phy2_clk(void);
+ void enable_usb_phy2_clk(unsigned char enable);
+ void set_usboh3_clk(void);
+ void enable_usboh3_clk(unsigned char enable);
++void mxc_set_sata_internal_clock(void);
+
+ #endif /* __ASM_ARCH_CLOCK_H */
+--
+1.7.10
+