* [PATCH 01/41] mfd: dbx500-prcmu: Correctly reorder PRCMU clock identifiers
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
@ 2013-09-18 12:13 ` Lee Jones
2013-09-18 12:23 ` Linus Walleij
2013-09-18 12:13 ` [PATCH 02/41] mfd: dbx500-prcmu: Move PRCMU numerical clock identifiers into DT include file Lee Jones
` (39 subsequent siblings)
40 siblings, 1 reply; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:13 UTC (permalink / raw)
To: linux-arm-kernel
... as stipulated by the Hardware Specification document.
Acked-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
include/linux/mfd/dbx500-prcmu.h | 135 ++++++++++++++++++++-------------------
1 file changed, 71 insertions(+), 64 deletions(-)
diff --git a/include/linux/mfd/dbx500-prcmu.h b/include/linux/mfd/dbx500-prcmu.h
index ca0790f..87667d4 100644
--- a/include/linux/mfd/dbx500-prcmu.h
+++ b/include/linux/mfd/dbx500-prcmu.h
@@ -97,70 +97,77 @@ enum prcmu_wakeup_index {
/*
* Clock identifiers.
*/
-enum prcmu_clock {
- PRCMU_SGACLK,
- PRCMU_UARTCLK,
- PRCMU_MSP02CLK,
- PRCMU_MSP1CLK,
- PRCMU_I2CCLK,
- PRCMU_SDMMCCLK,
- PRCMU_SPARE1CLK,
- PRCMU_SLIMCLK,
- PRCMU_PER1CLK,
- PRCMU_PER2CLK,
- PRCMU_PER3CLK,
- PRCMU_PER5CLK,
- PRCMU_PER6CLK,
- PRCMU_PER7CLK,
- PRCMU_LCDCLK,
- PRCMU_BMLCLK,
- PRCMU_HSITXCLK,
- PRCMU_HSIRXCLK,
- PRCMU_HDMICLK,
- PRCMU_APEATCLK,
- PRCMU_APETRACECLK,
- PRCMU_MCDECLK,
- PRCMU_IPI2CCLK,
- PRCMU_DSIALTCLK,
- PRCMU_DMACLK,
- PRCMU_B2R2CLK,
- PRCMU_TVCLK,
- PRCMU_SSPCLK,
- PRCMU_RNGCLK,
- PRCMU_UICCCLK,
- PRCMU_PWMCLK,
- PRCMU_IRDACLK,
- PRCMU_IRRCCLK,
- PRCMU_SIACLK,
- PRCMU_SVACLK,
- PRCMU_ACLK,
- PRCMU_HVACLK, /* Ux540 only */
- PRCMU_G1CLK, /* Ux540 only */
- PRCMU_SDMMCHCLK,
- PRCMU_CAMCLK,
- PRCMU_BML8580CLK,
- PRCMU_NUM_REG_CLOCKS,
- PRCMU_SYSCLK = PRCMU_NUM_REG_CLOCKS,
- PRCMU_CDCLK,
- PRCMU_TIMCLK,
- PRCMU_PLLSOC0,
- PRCMU_PLLSOC1,
- PRCMU_ARMSS,
- PRCMU_PLLDDR,
- PRCMU_PLLDSI,
- PRCMU_DSI0CLK,
- PRCMU_DSI1CLK,
- PRCMU_DSI0ESCCLK,
- PRCMU_DSI1ESCCLK,
- PRCMU_DSI2ESCCLK,
- /* LCD DSI PLL - Ux540 only */
- PRCMU_PLLDSI_LCD,
- PRCMU_DSI0CLK_LCD,
- PRCMU_DSI1CLK_LCD,
- PRCMU_DSI0ESCCLK_LCD,
- PRCMU_DSI1ESCCLK_LCD,
- PRCMU_DSI2ESCCLK_LCD,
-};
+#define ARMCLK 0
+#define PRCMU_ACLK 1
+#define PRCMU_SVAMMCSPCLK 2
+#define PRCMU_SDMMCHCLK 2 /* DBx540 only. */
+#define PRCMU_SIACLK 3
+#define PRCMU_SIAMMDSPCLK 3 /* DBx540 only. */
+#define PRCMU_SGACLK 4
+#define PRCMU_UARTCLK 5
+#define PRCMU_MSP02CLK 6
+#define PRCMU_MSP1CLK 7
+#define PRCMU_I2CCLK 8
+#define PRCMU_SDMMCCLK 9
+#define PRCMU_SLIMCLK 10
+#define PRCMU_CAMCLK 10 /* DBx540 only. */
+#define PRCMU_PER1CLK 11
+#define PRCMU_PER2CLK 12
+#define PRCMU_PER3CLK 13
+#define PRCMU_PER5CLK 14
+#define PRCMU_PER6CLK 15
+#define PRCMU_PER7CLK 16
+#define PRCMU_LCDCLK 17
+#define PRCMU_BMLCLK 18
+#define PRCMU_HSITXCLK 19
+#define PRCMU_HSIRXCLK 20
+#define PRCMU_HDMICLK 21
+#define PRCMU_APEATCLK 22
+#define PRCMU_APETRACECLK 23
+#define PRCMU_MCDECLK 24
+#define PRCMU_IPI2CCLK 25
+#define PRCMU_DSIALTCLK 26
+#define PRCMU_DMACLK 27
+#define PRCMU_B2R2CLK 28
+#define PRCMU_TVCLK 29
+#define SPARE_UNIPROCLK 30
+#define PRCMU_SSPCLK 31
+#define PRCMU_RNGCLK 32
+#define PRCMU_UICCCLK 33
+#define PRCMU_G1CLK 34 /* DBx540 only. */
+#define PRCMU_HVACLK 35 /* DBx540 only. */
+#define PRCMU_SPARE1CLK 36
+#define PRCMU_SPARE2CLK 37
+
+#define PRCMU_NUM_REG_CLOCKS 38
+
+#define PRCMU_RTCCLK PRCMU_NUM_REG_CLOCKS
+#define PRCMU_SYSCLK 39
+#define PRCMU_CDCLK 40
+#define PRCMU_TIMCLK 41
+#define PRCMU_PLLSOC0 42
+#define PRCMU_PLLSOC1 43
+#define PRCMU_ARMSS 44
+#define PRCMU_PLLDDR 45
+#define PRCMU_BML8580CLK 46
+
+/* DSI Clocks */
+#define PRCMU_PLLDSI 47
+#define PRCMU_DSI0CLK 48
+#define PRCMU_DSI1CLK 49
+#define PRCMU_DSI0ESCCLK 50
+#define PRCMU_DSI1ESCCLK 51
+#define PRCMU_DSI2ESCCLK 52
+
+/* LCD DSI PLL - Ux540 only */
+#define PRCMU_PLLDSI_LCD 53
+#define PRCMU_DSI0CLK_LCD 54
+#define PRCMU_DSI1CLK_LCD 55
+#define PRCMU_DSI0ESCCLK_LCD 56
+#define PRCMU_DSI1ESCCLK_LCD 57
+#define PRCMU_DSI2ESCCLK_LCD 58
+
+#define PRCMU_NUM_CLKS 59
/**
* enum prcmu_wdog_id - PRCMU watchdog IDs
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 02/41] mfd: dbx500-prcmu: Move PRCMU numerical clock identifiers into DT include file
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
2013-09-18 12:13 ` [PATCH 01/41] mfd: dbx500-prcmu: Correctly reorder PRCMU clock identifiers Lee Jones
@ 2013-09-18 12:13 ` Lee Jones
2013-09-18 12:24 ` Linus Walleij
2013-09-18 12:14 ` [PATCH 03/41] mfd: dbx500: Remove any mention of the BML8580CLK Lee Jones
` (38 subsequent siblings)
40 siblings, 1 reply; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:13 UTC (permalink / raw)
To: linux-arm-kernel
These are required to request DBx500 PRCMU clocks from Device Tree. The
numbers used are taken directly from the Hardware Specification document.
We're moving them from the DBx500 PRCMU include file into the DT include
directory and referencing them from the former via a #include.
Acked-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
include/dt-bindings/mfd/dbx500-prcmu.h | 84 ++++++++++++++++++++++++++++++++++
include/linux/mfd/dbx500-prcmu.h | 77 +------------------------------
2 files changed, 86 insertions(+), 75 deletions(-)
create mode 100644 include/dt-bindings/mfd/dbx500-prcmu.h
diff --git a/include/dt-bindings/mfd/dbx500-prcmu.h b/include/dt-bindings/mfd/dbx500-prcmu.h
new file mode 100644
index 0000000..b7ee8c9
--- /dev/null
+++ b/include/dt-bindings/mfd/dbx500-prcmu.h
@@ -0,0 +1,84 @@
+/*
+ * This header provides constants for the PRCMU bindings.
+ *
+ */
+
+#ifndef _DT_BINDINGS_MFD_PRCMU_H
+#define _DT_BINDINGS_MFD_PRCMU_H
+
+/*
+ * Clock identifiers.
+ */
+#define ARMCLK 0
+#define PRCMU_ACLK 1
+#define PRCMU_SVAMMCSPCLK 2
+#define PRCMU_SDMMCHCLK 2 /* DBx540 only. */
+#define PRCMU_SIACLK 3
+#define PRCMU_SIAMMDSPCLK 3 /* DBx540 only. */
+#define PRCMU_SGACLK 4
+#define PRCMU_UARTCLK 5
+#define PRCMU_MSP02CLK 6
+#define PRCMU_MSP1CLK 7
+#define PRCMU_I2CCLK 8
+#define PRCMU_SDMMCCLK 9
+#define PRCMU_SLIMCLK 10
+#define PRCMU_CAMCLK 10 /* DBx540 only. */
+#define PRCMU_PER1CLK 11
+#define PRCMU_PER2CLK 12
+#define PRCMU_PER3CLK 13
+#define PRCMU_PER5CLK 14
+#define PRCMU_PER6CLK 15
+#define PRCMU_PER7CLK 16
+#define PRCMU_LCDCLK 17
+#define PRCMU_BMLCLK 18
+#define PRCMU_HSITXCLK 19
+#define PRCMU_HSIRXCLK 20
+#define PRCMU_HDMICLK 21
+#define PRCMU_APEATCLK 22
+#define PRCMU_APETRACECLK 23
+#define PRCMU_MCDECLK 24
+#define PRCMU_IPI2CCLK 25
+#define PRCMU_DSIALTCLK 26
+#define PRCMU_DMACLK 27
+#define PRCMU_B2R2CLK 28
+#define PRCMU_TVCLK 29
+#define SPARE_UNIPROCLK 30
+#define PRCMU_SSPCLK 31
+#define PRCMU_RNGCLK 32
+#define PRCMU_UICCCLK 33
+#define PRCMU_G1CLK 34 /* DBx540 only. */
+#define PRCMU_HVACLK 35 /* DBx540 only. */
+#define PRCMU_SPARE1CLK 36
+#define PRCMU_SPARE2CLK 37
+
+#define PRCMU_NUM_REG_CLOCKS 38
+
+#define PRCMU_RTCCLK PRCMU_NUM_REG_CLOCKS
+#define PRCMU_SYSCLK 39
+#define PRCMU_CDCLK 40
+#define PRCMU_TIMCLK 41
+#define PRCMU_PLLSOC0 42
+#define PRCMU_PLLSOC1 43
+#define PRCMU_ARMSS 44
+#define PRCMU_PLLDDR 45
+#define PRCMU_BML8580CLK 46
+
+/* DSI Clocks */
+#define PRCMU_PLLDSI 47
+#define PRCMU_DSI0CLK 48
+#define PRCMU_DSI1CLK 49
+#define PRCMU_DSI0ESCCLK 50
+#define PRCMU_DSI1ESCCLK 51
+#define PRCMU_DSI2ESCCLK 52
+
+/* LCD DSI PLL - Ux540 only */
+#define PRCMU_PLLDSI_LCD 53
+#define PRCMU_DSI0CLK_LCD 54
+#define PRCMU_DSI1CLK_LCD 55
+#define PRCMU_DSI0ESCCLK_LCD 56
+#define PRCMU_DSI1ESCCLK_LCD 57
+#define PRCMU_DSI2ESCCLK_LCD 58
+
+#define PRCMU_NUM_CLKS 59
+
+#endif
diff --git a/include/linux/mfd/dbx500-prcmu.h b/include/linux/mfd/dbx500-prcmu.h
index 87667d4..060e112 100644
--- a/include/linux/mfd/dbx500-prcmu.h
+++ b/include/linux/mfd/dbx500-prcmu.h
@@ -12,6 +12,8 @@
#include <linux/notifier.h>
#include <linux/err.h>
+#include <dt-bindings/mfd/dbx500-prcmu.h> /* For clock identifiers */
+
/* Offset for the firmware version within the TCPM */
#define DB8500_PRCMU_FW_VERSION_OFFSET 0xA4
#define DBX540_PRCMU_FW_VERSION_OFFSET 0xA8
@@ -94,81 +96,6 @@ enum prcmu_wakeup_index {
#define PRCMU_CLKSRC_ARMCLKFIX 0x46
#define PRCMU_CLKSRC_HDMICLK 0x47
-/*
- * Clock identifiers.
- */
-#define ARMCLK 0
-#define PRCMU_ACLK 1
-#define PRCMU_SVAMMCSPCLK 2
-#define PRCMU_SDMMCHCLK 2 /* DBx540 only. */
-#define PRCMU_SIACLK 3
-#define PRCMU_SIAMMDSPCLK 3 /* DBx540 only. */
-#define PRCMU_SGACLK 4
-#define PRCMU_UARTCLK 5
-#define PRCMU_MSP02CLK 6
-#define PRCMU_MSP1CLK 7
-#define PRCMU_I2CCLK 8
-#define PRCMU_SDMMCCLK 9
-#define PRCMU_SLIMCLK 10
-#define PRCMU_CAMCLK 10 /* DBx540 only. */
-#define PRCMU_PER1CLK 11
-#define PRCMU_PER2CLK 12
-#define PRCMU_PER3CLK 13
-#define PRCMU_PER5CLK 14
-#define PRCMU_PER6CLK 15
-#define PRCMU_PER7CLK 16
-#define PRCMU_LCDCLK 17
-#define PRCMU_BMLCLK 18
-#define PRCMU_HSITXCLK 19
-#define PRCMU_HSIRXCLK 20
-#define PRCMU_HDMICLK 21
-#define PRCMU_APEATCLK 22
-#define PRCMU_APETRACECLK 23
-#define PRCMU_MCDECLK 24
-#define PRCMU_IPI2CCLK 25
-#define PRCMU_DSIALTCLK 26
-#define PRCMU_DMACLK 27
-#define PRCMU_B2R2CLK 28
-#define PRCMU_TVCLK 29
-#define SPARE_UNIPROCLK 30
-#define PRCMU_SSPCLK 31
-#define PRCMU_RNGCLK 32
-#define PRCMU_UICCCLK 33
-#define PRCMU_G1CLK 34 /* DBx540 only. */
-#define PRCMU_HVACLK 35 /* DBx540 only. */
-#define PRCMU_SPARE1CLK 36
-#define PRCMU_SPARE2CLK 37
-
-#define PRCMU_NUM_REG_CLOCKS 38
-
-#define PRCMU_RTCCLK PRCMU_NUM_REG_CLOCKS
-#define PRCMU_SYSCLK 39
-#define PRCMU_CDCLK 40
-#define PRCMU_TIMCLK 41
-#define PRCMU_PLLSOC0 42
-#define PRCMU_PLLSOC1 43
-#define PRCMU_ARMSS 44
-#define PRCMU_PLLDDR 45
-#define PRCMU_BML8580CLK 46
-
-/* DSI Clocks */
-#define PRCMU_PLLDSI 47
-#define PRCMU_DSI0CLK 48
-#define PRCMU_DSI1CLK 49
-#define PRCMU_DSI0ESCCLK 50
-#define PRCMU_DSI1ESCCLK 51
-#define PRCMU_DSI2ESCCLK 52
-
-/* LCD DSI PLL - Ux540 only */
-#define PRCMU_PLLDSI_LCD 53
-#define PRCMU_DSI0CLK_LCD 54
-#define PRCMU_DSI1CLK_LCD 55
-#define PRCMU_DSI0ESCCLK_LCD 56
-#define PRCMU_DSI1ESCCLK_LCD 57
-#define PRCMU_DSI2ESCCLK_LCD 58
-
-#define PRCMU_NUM_CLKS 59
-
/**
* enum prcmu_wdog_id - PRCMU watchdog IDs
* @PRCMU_WDOG_ALL: use all timers
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 03/41] mfd: dbx500: Remove any mention of the BML8580CLK
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
2013-09-18 12:13 ` [PATCH 01/41] mfd: dbx500-prcmu: Correctly reorder PRCMU clock identifiers Lee Jones
2013-09-18 12:13 ` [PATCH 02/41] mfd: dbx500-prcmu: Move PRCMU numerical clock identifiers into DT include file Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 04/41] ARM: ux500: Add PRCMU clock node to DBx500 Device Tree Lee Jones
` (37 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
The platform which it pertains to is no longer supported and is actually
causing some confusion in the new common clock implementation. A recent
patch removed its use in the clock driver, let's take out the definitions
too.
Acked-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/mfd/db8500-prcmu.c | 1 -
drivers/mfd/dbx500-prcmu-regs.h | 1 -
include/dt-bindings/mfd/dbx500-prcmu.h | 27 +++++++++++++--------------
3 files changed, 13 insertions(+), 16 deletions(-)
diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c
index 3c157faee..ed79d7b 100644
--- a/drivers/mfd/db8500-prcmu.c
+++ b/drivers/mfd/db8500-prcmu.c
@@ -480,7 +480,6 @@ struct clk_mgt clk_mgt[PRCMU_NUM_REG_CLOCKS] = {
CLK_MGT_ENTRY(PER6CLK, PLL_DIV, true),
CLK_MGT_ENTRY(PER7CLK, PLL_DIV, true),
CLK_MGT_ENTRY(LCDCLK, PLL_FIX, true),
- CLK_MGT_ENTRY(BML8580CLK, PLL_DIV, true),
CLK_MGT_ENTRY(BMLCLK, PLL_DIV, true),
CLK_MGT_ENTRY(HSITXCLK, PLL_DIV, true),
CLK_MGT_ENTRY(HSIRXCLK, PLL_DIV, true),
diff --git a/drivers/mfd/dbx500-prcmu-regs.h b/drivers/mfd/dbx500-prcmu-regs.h
index 4f6f0fa..7cc32a8 100644
--- a/drivers/mfd/dbx500-prcmu-regs.h
+++ b/drivers/mfd/dbx500-prcmu-regs.h
@@ -32,7 +32,6 @@
#define PRCM_PER7CLK_MGT (0x040)
#define PRCM_LCDCLK_MGT (0x044)
#define PRCM_BMLCLK_MGT (0x04C)
-#define PRCM_BML8580CLK_MGT (0x108)
#define PRCM_HSITXCLK_MGT (0x050)
#define PRCM_HSIRXCLK_MGT (0x054)
#define PRCM_HDMICLK_MGT (0x058)
diff --git a/include/dt-bindings/mfd/dbx500-prcmu.h b/include/dt-bindings/mfd/dbx500-prcmu.h
index b7ee8c9..552a2d1 100644
--- a/include/dt-bindings/mfd/dbx500-prcmu.h
+++ b/include/dt-bindings/mfd/dbx500-prcmu.h
@@ -61,24 +61,23 @@
#define PRCMU_PLLSOC1 43
#define PRCMU_ARMSS 44
#define PRCMU_PLLDDR 45
-#define PRCMU_BML8580CLK 46
/* DSI Clocks */
-#define PRCMU_PLLDSI 47
-#define PRCMU_DSI0CLK 48
-#define PRCMU_DSI1CLK 49
-#define PRCMU_DSI0ESCCLK 50
-#define PRCMU_DSI1ESCCLK 51
-#define PRCMU_DSI2ESCCLK 52
+#define PRCMU_PLLDSI 46
+#define PRCMU_DSI0CLK 47
+#define PRCMU_DSI1CLK 48
+#define PRCMU_DSI0ESCCLK 49
+#define PRCMU_DSI1ESCCLK 50
+#define PRCMU_DSI2ESCCLK 51
/* LCD DSI PLL - Ux540 only */
-#define PRCMU_PLLDSI_LCD 53
-#define PRCMU_DSI0CLK_LCD 54
-#define PRCMU_DSI1CLK_LCD 55
-#define PRCMU_DSI0ESCCLK_LCD 56
-#define PRCMU_DSI1ESCCLK_LCD 57
-#define PRCMU_DSI2ESCCLK_LCD 58
+#define PRCMU_PLLDSI_LCD 52
+#define PRCMU_DSI0CLK_LCD 53
+#define PRCMU_DSI1CLK_LCD 54
+#define PRCMU_DSI0ESCCLK_LCD 55
+#define PRCMU_DSI1ESCCLK_LCD 56
+#define PRCMU_DSI2ESCCLK_LCD 57
-#define PRCMU_NUM_CLKS 59
+#define PRCMU_NUM_CLKS 58
#endif
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 04/41] ARM: ux500: Add PRCMU clock node to DBx500 Device Tree
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (2 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 03/41] mfd: dbx500: Remove any mention of the BML8580CLK Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 05/41] ARM: ux500: Supply the DMA clock lookup to the DBX500 DT Lee Jones
` (36 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index a152945..2c64c85 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -10,6 +10,7 @@
*/
#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/mfd/dbx500-prcmu.h>
#include "skeleton.dtsi"
/ {
@@ -42,6 +43,14 @@
interrupts = <0 7 IRQ_TYPE_LEVEL_HIGH>;
};
+ clocks {
+ compatible = "stericsson,u8500-clks";
+
+ prcmu_clk: prcmu-clock {
+ #clock-cells = <1>;
+ };
+ };
+
timer at a0410600 {
compatible = "arm,cortex-a9-twd-timer";
reg = <0xa0410600 0x20>;
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 05/41] ARM: ux500: Supply the DMA clock lookup to the DBX500 DT
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (3 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 04/41] ARM: ux500: Add PRCMU clock node to DBx500 Device Tree Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 06/41] ARM: ux500: Add PRCC Peripheral clock node to DBx500 Device Tree Lee Jones
` (35 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 2c64c85..0bb8ed7 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -229,6 +229,8 @@
#dma-cells = <3>;
memcpy-channels = <56 57 58 59 60>;
+
+ clocks = <&prcmu_clk PRCMU_DMACLK>;
};
prcmu: prcmu at 80157000 {
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 06/41] ARM: ux500: Add PRCC Peripheral clock node to DBx500 Device Tree
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (4 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 05/41] ARM: ux500: Supply the DMA clock lookup to the DBX500 DT Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 07/41] ARM: ux500: Supply the GPIO clocks lookup to the DBX500 DT Lee Jones
` (34 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 0bb8ed7..8a80eb4 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -49,6 +49,10 @@
prcmu_clk: prcmu-clock {
#clock-cells = <1>;
};
+
+ prcc_pclk: prcc-periph-clock {
+ #clock-cells = <2>;
+ };
};
timer at a0410600 {
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 07/41] ARM: ux500: Supply the GPIO clocks lookup to the DBX500 DT
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (5 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 06/41] ARM: ux500: Add PRCC Peripheral clock node to DBx500 Device Tree Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 08/41] ARM: ux500: Supply the USB clock " Lee Jones
` (33 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 8a80eb4..089b446 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -78,6 +78,8 @@
gpio-controller;
#gpio-cells = <2>;
gpio-bank = <0>;
+
+ clocks = <&prcc_pclk 1 9>;
};
gpio1: gpio at 8012e080 {
@@ -91,6 +93,8 @@
gpio-controller;
#gpio-cells = <2>;
gpio-bank = <1>;
+
+ clocks = <&prcc_pclk 1 9>;
};
gpio2: gpio at 8000e000 {
@@ -104,6 +108,8 @@
gpio-controller;
#gpio-cells = <2>;
gpio-bank = <2>;
+
+ clocks = <&prcc_pclk 3 8>;
};
gpio3: gpio at 8000e080 {
@@ -117,6 +123,8 @@
gpio-controller;
#gpio-cells = <2>;
gpio-bank = <3>;
+
+ clocks = <&prcc_pclk 3 8>;
};
gpio4: gpio at 8000e100 {
@@ -130,6 +138,8 @@
gpio-controller;
#gpio-cells = <2>;
gpio-bank = <4>;
+
+ clocks = <&prcc_pclk 3 8>;
};
gpio5: gpio at 8000e180 {
@@ -143,6 +153,8 @@
gpio-controller;
#gpio-cells = <2>;
gpio-bank = <5>;
+
+ clocks = <&prcc_pclk 3 8>;
};
gpio6: gpio at 8011e000 {
@@ -156,6 +168,8 @@
gpio-controller;
#gpio-cells = <2>;
gpio-bank = <6>;
+
+ clocks = <&prcc_pclk 2 1>;
};
gpio7: gpio at 8011e080 {
@@ -169,6 +183,8 @@
gpio-controller;
#gpio-cells = <2>;
gpio-bank = <7>;
+
+ clocks = <&prcc_pclk 2 1>;
};
gpio8: gpio at a03fe000 {
@@ -182,6 +198,8 @@
gpio-controller;
#gpio-cells = <2>;
gpio-bank = <8>;
+
+ clocks = <&prcc_pclk 6 1>;
};
pinctrl {
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 08/41] ARM: ux500: Supply the USB clock lookup to the DBX500 DT
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (6 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 07/41] ARM: ux500: Supply the GPIO clocks lookup to the DBX500 DT Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 09/41] ARM: ux500: Supply the Ethernet clock lookup to Snowball's DT Lee Jones
` (32 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 089b446..2c1051d 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -241,6 +241,8 @@
"iep_6_14", "oep_6_14",
"iep_7_15", "oep_7_15",
"iep_8", "oep_8";
+
+ clocks = <&prcc_pclk 5 0>;
};
dma: dma-controller at 801C0000 {
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 09/41] ARM: ux500: Supply the Ethernet clock lookup to Snowball's DT
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (7 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 08/41] ARM: ux500: Supply the USB clock " Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 10/41] ARM: ux500: Add PRCC Kernel clock node to DBx500 Device Tree Lee Jones
` (31 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/snowball.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/snowball.dts b/arch/arm/boot/dts/snowball.dts
index 49824be..e2a71bb 100644
--- a/arch/arm/boot/dts/snowball.dts
+++ b/arch/arm/boot/dts/snowball.dts
@@ -111,12 +111,13 @@
vdd33a-supply = <&en_3v3_reg>;
vddvario-supply = <&db8500_vape_reg>;
-
reg-shift = <1>;
reg-io-width = <2>;
smsc,force-internal-phy;
smsc,irq-active-high;
smsc,irq-push-pull;
+
+ clocks = <&prcc_pclk 3 0>;
};
};
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 10/41] ARM: ux500: Add PRCC Kernel clock node to DBx500 Device Tree
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (8 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 09/41] ARM: ux500: Supply the Ethernet clock lookup to Snowball's DT Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 11/41] ARM: ux500: Supply the I2C clocks lookup to the DBX500 DT Lee Jones
` (30 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 2c1051d..5e91063 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -53,6 +53,10 @@
prcc_pclk: prcc-periph-clock {
#clock-cells = <2>;
};
+
+ prcc_kclk: prcc-kernel-clock {
+ #clock-cells = <2>;
+ };
};
timer at a0410600 {
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 11/41] ARM: ux500: Supply the I2C clocks lookup to the DBX500 DT
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (9 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 10/41] ARM: ux500: Add PRCC Kernel clock node to DBx500 Device Tree Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 12/41] ARM: ux500: Supply the UART " Lee Jones
` (29 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 5e91063..0742e55 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -577,6 +577,8 @@
v-i2c-supply = <&db8500_vape_reg>;
clock-frequency = <400000>;
+ clocks = <&prcc_kclk 3 3>, <&prcc_pclk 3 3>;
+ clock-names = "i2cclk", "apb_pclk";
};
i2c at 80122000 {
@@ -590,6 +592,9 @@
v-i2c-supply = <&db8500_vape_reg>;
clock-frequency = <400000>;
+
+ clocks = <&prcc_kclk 1 2>, <&prcc_pclk 1 2>;
+ clock-names = "i2cclk", "apb_pclk";
};
i2c at 80128000 {
@@ -603,6 +608,9 @@
v-i2c-supply = <&db8500_vape_reg>;
clock-frequency = <400000>;
+
+ clocks = <&prcc_kclk 1 6>, <&prcc_pclk 1 6>;
+ clock-names = "i2cclk", "apb_pclk";
};
i2c at 80110000 {
@@ -616,6 +624,9 @@
v-i2c-supply = <&db8500_vape_reg>;
clock-frequency = <400000>;
+
+ clocks = <&prcc_kclk 2 0>, <&prcc_pclk 2 0>;
+ clock-names = "i2cclk", "apb_pclk";
};
i2c at 8012a000 {
@@ -629,6 +640,9 @@
v-i2c-supply = <&db8500_vape_reg>;
clock-frequency = <400000>;
+
+ clocks = <&prcc_kclk 1 9>, <&prcc_pclk 1 9>;
+ clock-names = "i2cclk", "apb_pclk";
};
ssp at 80002000 {
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 12/41] ARM: ux500: Supply the UART clocks lookup to the DBX500 DT
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (10 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 11/41] ARM: ux500: Supply the I2C clocks lookup to the DBX500 DT Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 13/41] ARM: ux500: Supply the SDI (MMC) " Lee Jones
` (28 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 0742e55..13ea13e 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -663,6 +663,9 @@
<&dma 13 0 0x0>; /* Logical - MemToDev */
dma-names = "rx", "tx";
+ clocks = <&prcc_kclk 1 0>, <&prcc_pclk 1 0>;
+ clock-names = "uart", "apb_pclk";
+
status = "disabled";
};
@@ -675,6 +678,9 @@
<&dma 12 0 0x0>; /* Logical - MemToDev */
dma-names = "rx", "tx";
+ clocks = <&prcc_kclk 1 1>, <&prcc_pclk 1 1>;
+ clock-names = "uart", "apb_pclk";
+
status = "disabled";
};
@@ -687,6 +693,9 @@
<&dma 11 0 0x0>; /* Logical - MemToDev */
dma-names = "rx", "tx";
+ clocks = <&prcc_kclk 3 6>, <&prcc_pclk 3 6>;
+ clock-names = "uart", "apb_pclk";
+
status = "disabled";
};
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 13/41] ARM: ux500: Supply the SDI (MMC) clocks lookup to the DBX500 DT
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (11 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 12/41] ARM: ux500: Supply the UART " Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 14/41] ARM: ux500: Supply the MSP (Audio) " Lee Jones
` (27 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 13ea13e..75c0646 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -708,6 +708,9 @@
<&dma 29 0 0x0>; /* Logical - MemToDev */
dma-names = "rx", "tx";
+ clocks = <&prcc_kclk 1 5>, <&prcc_pclk 1 5>;
+ clock-names = "sdi", "apb_pclk";
+
status = "disabled";
};
@@ -720,6 +723,9 @@
<&dma 32 0 0x0>; /* Logical - MemToDev */
dma-names = "rx", "tx";
+ clocks = <&prcc_kclk 2 4>, <&prcc_pclk 2 6>;
+ clock-names = "sdi", "apb_pclk";
+
status = "disabled";
};
@@ -732,6 +738,9 @@
<&dma 28 0 0x0>; /* Logical - MemToDev */
dma-names = "rx", "tx";
+ clocks = <&prcc_kclk 3 4>, <&prcc_pclk 3 4>;
+ clock-names = "sdi", "apb_pclk";
+
status = "disabled";
};
@@ -739,6 +748,10 @@
compatible = "arm,pl18x", "arm,primecell";
reg = <0x80119000 0x1000>;
interrupts = <0 59 IRQ_TYPE_LEVEL_HIGH>;
+
+ clocks = <&prcc_kclk 2 5>, <&prcc_pclk 2 7>;
+ clock-names = "sdi", "apb_pclk";
+
status = "disabled";
};
@@ -751,6 +764,9 @@
<&dma 42 0 0x0>; /* Logical - MemToDev */
dma-names = "rx", "tx";
+ clocks = <&prcc_kclk 2 2>, <&prcc_pclk 2 4>;
+ clock-names = "sdi", "apb_pclk";
+
status = "disabled";
};
@@ -758,6 +774,10 @@
compatible = "arm,pl18x", "arm,primecell";
reg = <0x80008000 0x1000>;
interrupts = <0 100 IRQ_TYPE_LEVEL_HIGH>;
+
+ clocks = <&prcc_kclk 3 7>, <&prcc_pclk 3 7>;
+ clock-names = "sdi", "apb_pclk";
+
status = "disabled";
};
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 14/41] ARM: ux500: Supply the MSP (Audio) clocks lookup to the DBX500 DT
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (12 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 13/41] ARM: ux500: Supply the SDI (MMC) " Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 15/41] ARM: ux500: Add RTC (fixed-frequency) clock node to DBx500 Device Tree Lee Jones
` (26 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 75c0646..8857dd1 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -786,6 +786,10 @@
reg = <0x80123000 0x1000>;
interrupts = <0 31 IRQ_TYPE_LEVEL_HIGH>;
v-ape-supply = <&db8500_vape_reg>;
+
+ clocks = <&prcc_kclk 1 3>, <&prcc_pclk 1 3>;
+ clock-names = "msp", "apb_pclk";
+
status = "disabled";
};
@@ -794,6 +798,10 @@
reg = <0x80124000 0x1000>;
interrupts = <0 62 IRQ_TYPE_LEVEL_HIGH>;
v-ape-supply = <&db8500_vape_reg>;
+
+ clocks = <&prcc_kclk 1 4>, <&prcc_pclk 1 4>;
+ clock-names = "msp", "apb_pclk";
+
status = "disabled";
};
@@ -803,6 +811,10 @@
reg = <0x80117000 0x1000>;
interrupts = <0 98 IRQ_TYPE_LEVEL_HIGH>;
v-ape-supply = <&db8500_vape_reg>;
+
+ clocks = <&prcc_kclk 2 3>, <&prcc_pclk 2 5>;
+ clock-names = "msp", "apb_pclk";
+
status = "disabled";
};
@@ -811,6 +823,10 @@
reg = <0x80125000 0x1000>;
interrupts = <0 62 IRQ_TYPE_LEVEL_HIGH>;
v-ape-supply = <&db8500_vape_reg>;
+
+ clocks = <&prcc_kclk 1 10>, <&prcc_pclk 1 11>;
+ clock-names = "msp", "apb_pclk";
+
status = "disabled";
};
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 15/41] ARM: ux500: Add RTC (fixed-frequency) clock node to DBx500 Device Tree
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (13 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 14/41] ARM: ux500: Supply the MSP (Audio) " Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 16/41] ARM: ux500: Supply the RTC clock lookup to the DBX500 DT Lee Jones
` (25 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 8857dd1..77ea36f 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -57,6 +57,10 @@
prcc_kclk: prcc-kernel-clock {
#clock-cells = <2>;
};
+
+ rtc_clk: rtc32k-clock {
+ #clock-cells = <0>;
+ };
};
timer at a0410600 {
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 16/41] ARM: ux500: Supply the RTC clock lookup to the DBX500 DT
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (14 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 15/41] ARM: ux500: Add RTC (fixed-frequency) clock node to DBx500 Device Tree Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 17/41] ARM: ux500: Add TWD (fixed-factor) clock node to DBx500 Device Tree Lee Jones
` (24 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 77ea36f..81cdfcf 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -73,6 +73,9 @@
compatible = "arm,rtc-pl031", "arm,primecell";
reg = <0x80154000 0x1000>;
interrupts = <0 18 IRQ_TYPE_LEVEL_HIGH>;
+
+ clocks = <&rtc_clk>;
+ clock-names = "apb_pclk";
};
gpio0: gpio at 8012e000 {
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 17/41] ARM: ux500: Add TWD (fixed-factor) clock node to DBx500 Device Tree
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (15 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 16/41] ARM: ux500: Supply the RTC clock lookup to the DBX500 DT Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 18/41] ARM: ux500: Supply the TWD Timer clock lookup to the DBX500 DT Lee Jones
` (23 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 81cdfcf..9adc4e5 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -61,6 +61,10 @@
rtc_clk: rtc32k-clock {
#clock-cells = <0>;
};
+
+ smp_twd_clk: smp-twd-clock {
+ #clock-cells = <0>;
+ };
};
timer at a0410600 {
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 18/41] ARM: ux500: Supply the TWD Timer clock lookup to the DBX500 DT
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (16 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 17/41] ARM: ux500: Add TWD (fixed-factor) clock node to DBx500 Device Tree Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 19/41] ARM: ux500: Add a DT node for the Nomadik System Timer (MTU0) Lee Jones
` (22 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 9adc4e5..5c3ff94 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -71,6 +71,8 @@
compatible = "arm,cortex-a9-twd-timer";
reg = <0xa0410600 0x20>;
interrupts = <1 13 0x304>; /* IRQ level high per-CPU */
+
+ clocks = <&smp_twd_clk>;
};
rtc at 80154000 {
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 19/41] ARM: ux500: Add a DT node for the Nomadik System Timer (MTU0)
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (17 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 18/41] ARM: ux500: Supply the TWD Timer clock lookup to the DBX500 DT Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 20/41] ARM: ux500: Don't attempt to enable the Nomadik System Timer twice Lee Jones
` (21 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
The MTU0 is required for full booting of the system. The driver has
been previously DT:ed and is in use on the Nomadik platform, but we
also need to enable it on ux500 based systems.
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 5c3ff94..0d2d5d0 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -43,6 +43,7 @@
interrupts = <0 7 IRQ_TYPE_LEVEL_HIGH>;
};
+
clocks {
compatible = "stericsson,u8500-clks";
@@ -67,6 +68,16 @@
};
};
+ mtu at a03c6000 {
+ /* Nomadik System Timer */
+ compatible = "st,nomadik-mtu";
+ reg = <0xa03c6000 0x1000>;
+ interrupts = <0 4 IRQ_TYPE_LEVEL_HIGH>;
+
+ clocks = <&prcmu_clk PRCMU_TIMCLK>, <&prcc_pclk 6 6>;
+ clock-names = "timclk", "apb_pclk";
+ };
+
timer at a0410600 {
compatible = "arm,cortex-a9-twd-timer";
reg = <0xa0410600 0x20>;
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 20/41] ARM: ux500: Don't attempt to enable the Nomadik System Timer twice
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (18 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 19/41] ARM: ux500: Add a DT node for the Nomadik System Timer (MTU0) Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 21/41] clk: ux500: Remove BML8580 clock Lee Jones
` (20 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
When booting with DT enabled we already call clocksource_of_init(),
which in turn calls the OF version of nmdk_timer_init().
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/mach-ux500/timer.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-ux500/timer.c b/arch/arm/mach-ux500/timer.c
index b6bd0ef..05a4ff7 100644
--- a/arch/arm/mach-ux500/timer.c
+++ b/arch/arm/mach-ux500/timer.c
@@ -97,8 +97,8 @@ dt_fail:
* sched_clock with higher rating then MTU since is always-on.
*
*/
-
- nmdk_timer_init(mtu_timer_base, IRQ_MTU0);
+ if (!of_have_populated_dt())
+ nmdk_timer_init(mtu_timer_base, IRQ_MTU0);
clksrc_dbx500_prcmu_init(prcmu_timer_base);
ux500_twd_init();
}
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 21/41] clk: ux500: Remove BML8580 clock
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (19 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 20/41] ARM: ux500: Don't attempt to enable the Nomadik System Timer twice Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 22/41] clk: ux500: Copy u8500_clk_init() ready for DT enablement Lee Jones
` (19 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
There is no mention of the PRCMU_BML8580CLK in any of the Design
Specifications for the chips supported in Mainline. In fact, where it
is incorrectly used in the u8540 clock definition driver it would
have the side effect of using the incorrect clock management address
([PRCM_BML8580CLK_MGT] 0x108 instead of the correct value 0x04C).
Acked-by: Mike Turquette <mturquette@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/clk/ux500/u8540_clk.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/clk/ux500/u8540_clk.c b/drivers/clk/ux500/u8540_clk.c
index f262588..20c8add 100644
--- a/drivers/clk/ux500/u8540_clk.c
+++ b/drivers/clk/ux500/u8540_clk.c
@@ -83,7 +83,7 @@ void u8540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
clk_register_clkdev(clk, NULL, "lcd");
clk_register_clkdev(clk, "lcd", "mcde");
- clk = clk_reg_prcmu_opp_gate("bmlclk", NULL, PRCMU_BML8580CLK,
+ clk = clk_reg_prcmu_opp_gate("bmlclk", NULL, PRCMU_BMLCLK,
CLK_IS_ROOT);
clk_register_clkdev(clk, NULL, "bml");
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 22/41] clk: ux500: Copy u8500_clk_init() ready for DT enablement
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (20 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 21/41] clk: ux500: Remove BML8580 clock Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-19 12:31 ` Lee Jones
2013-09-20 20:59 ` Linus Walleij
2013-09-18 12:14 ` [PATCH 23/41] clk: ux500: Provide u8500_clk with skeleton Device Tree support Lee Jones
` (18 subsequent siblings)
40 siblings, 2 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Here we're using the old clock initialisation function as a template.
It's necessary to remove all of the clk_register_clkdev() calls as
they don't make sense when booting with Device Tree.
Cc: Mike Turquette <mturquette@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/clk/ux500/Makefile | 1 +
drivers/clk/ux500/u8500_of_clk.c | 381 ++++++++++++++++++++++++++++++++
include/linux/platform_data/clk-ux500.h | 3 +
3 files changed, 385 insertions(+)
create mode 100644 drivers/clk/ux500/u8500_of_clk.c
diff --git a/drivers/clk/ux500/Makefile b/drivers/clk/ux500/Makefile
index c6a806e..521483f 100644
--- a/drivers/clk/ux500/Makefile
+++ b/drivers/clk/ux500/Makefile
@@ -8,6 +8,7 @@ obj-y += clk-prcmu.o
obj-y += clk-sysctrl.o
# Clock definitions
+obj-y += u8500_of_clk.o
obj-y += u8500_clk.o
obj-y += u9540_clk.o
obj-y += u8540_clk.o
diff --git a/drivers/clk/ux500/u8500_of_clk.c b/drivers/clk/ux500/u8500_of_clk.c
new file mode 100644
index 0000000..ceebce6
--- /dev/null
+++ b/drivers/clk/ux500/u8500_of_clk.c
@@ -0,0 +1,381 @@
+/*
+ * Clock definitions for u8500 platform.
+ *
+ * Copyright (C) 2012 ST-Ericsson SA
+ * Author: Ulf Hansson <ulf.hansson@linaro.org>
+ *
+ * License terms: GNU General Public License (GPL) version 2
+ */
+
+#include <linux/clk.h>
+#include <linux/clkdev.h>
+#include <linux/clk-provider.h>
+#include <linux/mfd/dbx500-prcmu.h>
+#include <linux/platform_data/clk-ux500.h>
+#include "clk.h"
+
+void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
+ u32 clkrst5_base, u32 clkrst6_base)
+{
+ struct prcmu_fw_version *fw_version;
+ const char *sgaclk_parent = NULL;
+ struct clk *clk;
+
+ /* Clock sources */
+ clk = clk_reg_prcmu_gate("soc0_pll", NULL, PRCMU_PLLSOC0,
+ CLK_IS_ROOT|CLK_IGNORE_UNUSED);
+
+ clk = clk_reg_prcmu_gate("soc1_pll", NULL, PRCMU_PLLSOC1,
+ CLK_IS_ROOT|CLK_IGNORE_UNUSED);
+
+ clk = clk_reg_prcmu_gate("ddr_pll", NULL, PRCMU_PLLDDR,
+ CLK_IS_ROOT|CLK_IGNORE_UNUSED);
+
+ /* FIXME: Add sys, ulp and int clocks here. */
+
+ clk = clk_register_fixed_rate(NULL, "rtc32k", "NULL",
+ CLK_IS_ROOT|CLK_IGNORE_UNUSED,
+ 32768);
+
+ /* PRCMU clocks */
+ fw_version = prcmu_get_fw_version();
+ if (fw_version != NULL) {
+ switch (fw_version->project) {
+ case PRCMU_FW_PROJECT_U8500_C2:
+ case PRCMU_FW_PROJECT_U8520:
+ case PRCMU_FW_PROJECT_U8420:
+ sgaclk_parent = "soc0_pll";
+ break;
+ default:
+ break;
+ }
+ }
+
+ if (sgaclk_parent)
+ clk = clk_reg_prcmu_gate("sgclk", sgaclk_parent,
+ PRCMU_SGACLK, 0);
+ else
+ clk = clk_reg_prcmu_gate("sgclk", NULL,
+ PRCMU_SGACLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("uartclk", NULL, PRCMU_UARTCLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("msp02clk", NULL, PRCMU_MSP02CLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("msp1clk", NULL, PRCMU_MSP1CLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("i2cclk", NULL, PRCMU_I2CCLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("slimclk", NULL, PRCMU_SLIMCLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("per1clk", NULL, PRCMU_PER1CLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("per2clk", NULL, PRCMU_PER2CLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("per3clk", NULL, PRCMU_PER3CLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("per5clk", NULL, PRCMU_PER5CLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("per6clk", NULL, PRCMU_PER6CLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("per7clk", NULL, PRCMU_PER7CLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_scalable("lcdclk", NULL, PRCMU_LCDCLK, 0,
+ CLK_IS_ROOT|CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcmu_opp_gate("bmlclk", NULL, PRCMU_BMLCLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_scalable("hsitxclk", NULL, PRCMU_HSITXCLK, 0,
+ CLK_IS_ROOT|CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcmu_scalable("hsirxclk", NULL, PRCMU_HSIRXCLK, 0,
+ CLK_IS_ROOT|CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcmu_scalable("hdmiclk", NULL, PRCMU_HDMICLK, 0,
+ CLK_IS_ROOT|CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcmu_gate("apeatclk", NULL, PRCMU_APEATCLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("apetraceclk", NULL, PRCMU_APETRACECLK,
+ CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("mcdeclk", NULL, PRCMU_MCDECLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_opp_gate("ipi2cclk", NULL, PRCMU_IPI2CCLK,
+ CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("dsialtclk", NULL, PRCMU_DSIALTCLK,
+ CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("dmaclk", NULL, PRCMU_DMACLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("b2r2clk", NULL, PRCMU_B2R2CLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_scalable("tvclk", NULL, PRCMU_TVCLK, 0,
+ CLK_IS_ROOT|CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcmu_gate("sspclk", NULL, PRCMU_SSPCLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("rngclk", NULL, PRCMU_RNGCLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("uiccclk", NULL, PRCMU_UICCCLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_gate("timclk", NULL, PRCMU_TIMCLK, CLK_IS_ROOT);
+
+ clk = clk_reg_prcmu_opp_volt_scalable("sdmmcclk", NULL, PRCMU_SDMMCCLK,
+ 100000000,
+ CLK_IS_ROOT|CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcmu_scalable("dsi_pll", "hdmiclk",
+ PRCMU_PLLDSI, 0, CLK_SET_RATE_GATE);
+
+
+ clk = clk_reg_prcmu_scalable("dsi0clk", "dsi_pll",
+ PRCMU_DSI0CLK, 0, CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcmu_scalable("dsi1clk", "dsi_pll",
+ PRCMU_DSI1CLK, 0, CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcmu_scalable("dsi0escclk", "tvclk",
+ PRCMU_DSI0ESCCLK, 0, CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcmu_scalable("dsi1escclk", "tvclk",
+ PRCMU_DSI1ESCCLK, 0, CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcmu_scalable("dsi2escclk", "tvclk",
+ PRCMU_DSI2ESCCLK, 0, CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcmu_scalable_rate("armss", NULL,
+ PRCMU_ARMSS, 0, CLK_IS_ROOT|CLK_IGNORE_UNUSED);
+
+ clk = clk_register_fixed_factor(NULL, "smp_twd", "armss",
+ CLK_IGNORE_UNUSED, 1, 2);
+
+ /*
+ * FIXME: Add special handled PRCMU clocks here:
+ * 1. clkout0yuv, use PRCMU as parent + need regulator + pinctrl.
+ * 2. ab9540_clkout1yuv, see clkout0yuv
+ */
+
+ /* PRCC P-clocks */
+ clk = clk_reg_prcc_pclk("p1_pclk0", "per1clk", clkrst1_base,
+ BIT(0), 0);
+
+ clk = clk_reg_prcc_pclk("p1_pclk1", "per1clk", clkrst1_base,
+ BIT(1), 0);
+
+ clk = clk_reg_prcc_pclk("p1_pclk2", "per1clk", clkrst1_base,
+ BIT(2), 0);
+
+ clk = clk_reg_prcc_pclk("p1_pclk3", "per1clk", clkrst1_base,
+ BIT(3), 0);
+
+ clk = clk_reg_prcc_pclk("p1_pclk4", "per1clk", clkrst1_base,
+ BIT(4), 0);
+
+ clk = clk_reg_prcc_pclk("p1_pclk5", "per1clk", clkrst1_base,
+ BIT(5), 0);
+
+ clk = clk_reg_prcc_pclk("p1_pclk6", "per1clk", clkrst1_base,
+ BIT(6), 0);
+
+ clk = clk_reg_prcc_pclk("p1_pclk7", "per1clk", clkrst1_base,
+ BIT(7), 0);
+
+ clk = clk_reg_prcc_pclk("p1_pclk8", "per1clk", clkrst1_base,
+ BIT(8), 0);
+
+ clk = clk_reg_prcc_pclk("p1_pclk9", "per1clk", clkrst1_base,
+ BIT(9), 0);
+
+ clk = clk_reg_prcc_pclk("p1_pclk10", "per1clk", clkrst1_base,
+ BIT(10), 0);
+
+ clk = clk_reg_prcc_pclk("p1_pclk11", "per1clk", clkrst1_base,
+ BIT(11), 0);
+
+ clk = clk_reg_prcc_pclk("p2_pclk0", "per2clk", clkrst2_base,
+ BIT(0), 0);
+
+ clk = clk_reg_prcc_pclk("p2_pclk1", "per2clk", clkrst2_base,
+ BIT(1), 0);
+
+ clk = clk_reg_prcc_pclk("p2_pclk2", "per2clk", clkrst2_base,
+ BIT(2), 0);
+
+ clk = clk_reg_prcc_pclk("p2_pclk3", "per2clk", clkrst2_base,
+ BIT(3), 0);
+
+ clk = clk_reg_prcc_pclk("p2_pclk4", "per2clk", clkrst2_base,
+ BIT(4), 0);
+
+ clk = clk_reg_prcc_pclk("p2_pclk5", "per2clk", clkrst2_base,
+ BIT(5), 0);
+
+ clk = clk_reg_prcc_pclk("p2_pclk6", "per2clk", clkrst2_base,
+ BIT(6), 0);
+
+ clk = clk_reg_prcc_pclk("p2_pclk7", "per2clk", clkrst2_base,
+ BIT(7), 0);
+
+ clk = clk_reg_prcc_pclk("p2_pclk8", "per2clk", clkrst2_base,
+ BIT(8), 0);
+
+ clk = clk_reg_prcc_pclk("p2_pclk9", "per2clk", clkrst2_base,
+ BIT(9), 0);
+
+ clk = clk_reg_prcc_pclk("p2_pclk10", "per2clk", clkrst2_base,
+ BIT(10), 0);
+
+ clk = clk_reg_prcc_pclk("p2_pclk11", "per2clk", clkrst2_base,
+ BIT(11), 0);
+
+ clk = clk_reg_prcc_pclk("p2_pclk12", "per2clk", clkrst2_base,
+ BIT(12), 0);
+
+ clk = clk_reg_prcc_pclk("p3_pclk0", "per3clk", clkrst3_base,
+ BIT(0), 0);
+
+ clk = clk_reg_prcc_pclk("p3_pclk1", "per3clk", clkrst3_base,
+ BIT(1), 0);
+
+ clk = clk_reg_prcc_pclk("p3_pclk2", "per3clk", clkrst3_base,
+ BIT(2), 0);
+
+ clk = clk_reg_prcc_pclk("p3_pclk3", "per3clk", clkrst3_base,
+ BIT(3), 0);
+
+ clk = clk_reg_prcc_pclk("p3_pclk4", "per3clk", clkrst3_base,
+ BIT(4), 0);
+
+ clk = clk_reg_prcc_pclk("p3_pclk5", "per3clk", clkrst3_base,
+ BIT(5), 0);
+
+ clk = clk_reg_prcc_pclk("p3_pclk6", "per3clk", clkrst3_base,
+ BIT(6), 0);
+
+ clk = clk_reg_prcc_pclk("p3_pclk7", "per3clk", clkrst3_base,
+ BIT(7), 0);
+
+ clk = clk_reg_prcc_pclk("p3_pclk8", "per3clk", clkrst3_base,
+ BIT(8), 0);
+
+ clk = clk_reg_prcc_pclk("p5_pclk0", "per5clk", clkrst5_base,
+ BIT(0), 0);
+
+ clk = clk_reg_prcc_pclk("p5_pclk1", "per5clk", clkrst5_base,
+ BIT(1), 0);
+
+ clk = clk_reg_prcc_pclk("p6_pclk0", "per6clk", clkrst6_base,
+ BIT(0), 0);
+
+ clk = clk_reg_prcc_pclk("p6_pclk1", "per6clk", clkrst6_base,
+ BIT(1), 0);
+
+ clk = clk_reg_prcc_pclk("p6_pclk2", "per6clk", clkrst6_base,
+ BIT(2), 0);
+
+ clk = clk_reg_prcc_pclk("p6_pclk3", "per6clk", clkrst6_base,
+ BIT(3), 0);
+
+ clk = clk_reg_prcc_pclk("p6_pclk4", "per6clk", clkrst6_base,
+ BIT(4), 0);
+
+ clk = clk_reg_prcc_pclk("p6_pclk5", "per6clk", clkrst6_base,
+ BIT(5), 0);
+
+ clk = clk_reg_prcc_pclk("p6_pclk6", "per6clk", clkrst6_base,
+ BIT(6), 0);
+
+ clk = clk_reg_prcc_pclk("p6_pclk7", "per6clk", clkrst6_base,
+ BIT(7), 0);
+
+ /* PRCC K-clocks
+ *
+ * FIXME: Some drivers requires PERPIH[n| to be automatically enabled
+ * by enabling just the K-clock, even if it is not a valid parent to
+ * the K-clock. Until drivers get fixed we might need some kind of
+ * "parent muxed join".
+ */
+
+ /* Periph1 */
+ clk = clk_reg_prcc_kclk("p1_uart0_kclk", "uartclk",
+ clkrst1_base, BIT(0), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p1_uart1_kclk", "uartclk",
+ clkrst1_base, BIT(1), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p1_i2c1_kclk", "i2cclk",
+ clkrst1_base, BIT(2), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p1_msp0_kclk", "msp02clk",
+ clkrst1_base, BIT(3), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p1_msp1_kclk", "msp1clk",
+ clkrst1_base, BIT(4), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p1_sdi0_kclk", "sdmmcclk",
+ clkrst1_base, BIT(5), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p1_i2c2_kclk", "i2cclk",
+ clkrst1_base, BIT(6), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p1_slimbus0_kclk", "slimclk",
+ clkrst1_base, BIT(8), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p1_i2c4_kclk", "i2cclk",
+ clkrst1_base, BIT(9), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p1_msp3_kclk", "msp1clk",
+ clkrst1_base, BIT(10), CLK_SET_RATE_GATE);
+
+ /* Periph2 */
+ clk = clk_reg_prcc_kclk("p2_i2c3_kclk", "i2cclk",
+ clkrst2_base, BIT(0), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p2_sdi4_kclk", "sdmmcclk",
+ clkrst2_base, BIT(2), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p2_msp2_kclk", "msp02clk",
+ clkrst2_base, BIT(3), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p2_sdi1_kclk", "sdmmcclk",
+ clkrst2_base, BIT(4), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p2_sdi3_kclk", "sdmmcclk",
+ clkrst2_base, BIT(5), CLK_SET_RATE_GATE);
+
+ /* Note that rate is received from parent. */
+ clk = clk_reg_prcc_kclk("p2_ssirx_kclk", "hsirxclk",
+ clkrst2_base, BIT(6),
+ CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT);
+ clk = clk_reg_prcc_kclk("p2_ssitx_kclk", "hsitxclk",
+ clkrst2_base, BIT(7),
+ CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT);
+
+ /* Periph3 */
+ clk = clk_reg_prcc_kclk("p3_ssp0_kclk", "sspclk",
+ clkrst3_base, BIT(1), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p3_ssp1_kclk", "sspclk",
+ clkrst3_base, BIT(2), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p3_i2c0_kclk", "i2cclk",
+ clkrst3_base, BIT(3), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p3_sdi2_kclk", "sdmmcclk",
+ clkrst3_base, BIT(4), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p3_ske_kclk", "rtc32k",
+ clkrst3_base, BIT(5), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p3_uart2_kclk", "uartclk",
+ clkrst3_base, BIT(6), CLK_SET_RATE_GATE);
+
+ clk = clk_reg_prcc_kclk("p3_sdi5_kclk", "sdmmcclk",
+ clkrst3_base, BIT(7), CLK_SET_RATE_GATE);
+
+ /* Periph6 */
+ clk = clk_reg_prcc_kclk("p3_rng_kclk", "rngclk",
+ clkrst6_base, BIT(0), CLK_SET_RATE_GATE);
+}
diff --git a/include/linux/platform_data/clk-ux500.h b/include/linux/platform_data/clk-ux500.h
index 9d98f3a..97baf83 100644
--- a/include/linux/platform_data/clk-ux500.h
+++ b/include/linux/platform_data/clk-ux500.h
@@ -10,6 +10,9 @@
#ifndef __CLK_UX500_H
#define __CLK_UX500_H
+void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
+ u32 clkrst5_base, u32 clkrst6_base);
+
void u8500_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
u32 clkrst5_base, u32 clkrst6_base);
void u9540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 22/41] clk: ux500: Copy u8500_clk_init() ready for DT enablement
2013-09-18 12:14 ` [PATCH 22/41] clk: ux500: Copy u8500_clk_init() ready for DT enablement Lee Jones
@ 2013-09-19 12:31 ` Lee Jones
2013-09-20 20:59 ` Linus Walleij
1 sibling, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-19 12:31 UTC (permalink / raw)
To: linux-arm-kernel
Hi Mike,
Sorry for top, posting.
This one requires your attention, thanks.
> Here we're using the old clock initialisation function as a template.
> It's necessary to remove all of the clk_register_clkdev() calls as
> they don't make sense when booting with Device Tree.
>
> Cc: Mike Turquette <mturquette@linaro.org>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> ---
> drivers/clk/ux500/Makefile | 1 +
> drivers/clk/ux500/u8500_of_clk.c | 381 ++++++++++++++++++++++++++++++++
> include/linux/platform_data/clk-ux500.h | 3 +
> 3 files changed, 385 insertions(+)
> create mode 100644 drivers/clk/ux500/u8500_of_clk.c
>
> diff --git a/drivers/clk/ux500/Makefile b/drivers/clk/ux500/Makefile
> index c6a806e..521483f 100644
> --- a/drivers/clk/ux500/Makefile
> +++ b/drivers/clk/ux500/Makefile
> @@ -8,6 +8,7 @@ obj-y += clk-prcmu.o
> obj-y += clk-sysctrl.o
>
> # Clock definitions
> +obj-y += u8500_of_clk.o
> obj-y += u8500_clk.o
> obj-y += u9540_clk.o
> obj-y += u8540_clk.o
> diff --git a/drivers/clk/ux500/u8500_of_clk.c b/drivers/clk/ux500/u8500_of_clk.c
> new file mode 100644
> index 0000000..ceebce6
> --- /dev/null
> +++ b/drivers/clk/ux500/u8500_of_clk.c
> @@ -0,0 +1,381 @@
> +/*
> + * Clock definitions for u8500 platform.
> + *
> + * Copyright (C) 2012 ST-Ericsson SA
> + * Author: Ulf Hansson <ulf.hansson@linaro.org>
> + *
> + * License terms: GNU General Public License (GPL) version 2
> + */
> +
> +#include <linux/clk.h>
> +#include <linux/clkdev.h>
> +#include <linux/clk-provider.h>
> +#include <linux/mfd/dbx500-prcmu.h>
> +#include <linux/platform_data/clk-ux500.h>
> +#include "clk.h"
> +
> +void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
> + u32 clkrst5_base, u32 clkrst6_base)
> +{
> + struct prcmu_fw_version *fw_version;
> + const char *sgaclk_parent = NULL;
> + struct clk *clk;
> +
> + /* Clock sources */
> + clk = clk_reg_prcmu_gate("soc0_pll", NULL, PRCMU_PLLSOC0,
> + CLK_IS_ROOT|CLK_IGNORE_UNUSED);
> +
> + clk = clk_reg_prcmu_gate("soc1_pll", NULL, PRCMU_PLLSOC1,
> + CLK_IS_ROOT|CLK_IGNORE_UNUSED);
> +
> + clk = clk_reg_prcmu_gate("ddr_pll", NULL, PRCMU_PLLDDR,
> + CLK_IS_ROOT|CLK_IGNORE_UNUSED);
> +
> + /* FIXME: Add sys, ulp and int clocks here. */
> +
> + clk = clk_register_fixed_rate(NULL, "rtc32k", "NULL",
> + CLK_IS_ROOT|CLK_IGNORE_UNUSED,
> + 32768);
> +
> + /* PRCMU clocks */
> + fw_version = prcmu_get_fw_version();
> + if (fw_version != NULL) {
> + switch (fw_version->project) {
> + case PRCMU_FW_PROJECT_U8500_C2:
> + case PRCMU_FW_PROJECT_U8520:
> + case PRCMU_FW_PROJECT_U8420:
> + sgaclk_parent = "soc0_pll";
> + break;
> + default:
> + break;
> + }
> + }
> +
> + if (sgaclk_parent)
> + clk = clk_reg_prcmu_gate("sgclk", sgaclk_parent,
> + PRCMU_SGACLK, 0);
> + else
> + clk = clk_reg_prcmu_gate("sgclk", NULL,
> + PRCMU_SGACLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("uartclk", NULL, PRCMU_UARTCLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("msp02clk", NULL, PRCMU_MSP02CLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("msp1clk", NULL, PRCMU_MSP1CLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("i2cclk", NULL, PRCMU_I2CCLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("slimclk", NULL, PRCMU_SLIMCLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("per1clk", NULL, PRCMU_PER1CLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("per2clk", NULL, PRCMU_PER2CLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("per3clk", NULL, PRCMU_PER3CLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("per5clk", NULL, PRCMU_PER5CLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("per6clk", NULL, PRCMU_PER6CLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("per7clk", NULL, PRCMU_PER7CLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_scalable("lcdclk", NULL, PRCMU_LCDCLK, 0,
> + CLK_IS_ROOT|CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcmu_opp_gate("bmlclk", NULL, PRCMU_BMLCLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_scalable("hsitxclk", NULL, PRCMU_HSITXCLK, 0,
> + CLK_IS_ROOT|CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcmu_scalable("hsirxclk", NULL, PRCMU_HSIRXCLK, 0,
> + CLK_IS_ROOT|CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcmu_scalable("hdmiclk", NULL, PRCMU_HDMICLK, 0,
> + CLK_IS_ROOT|CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcmu_gate("apeatclk", NULL, PRCMU_APEATCLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("apetraceclk", NULL, PRCMU_APETRACECLK,
> + CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("mcdeclk", NULL, PRCMU_MCDECLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_opp_gate("ipi2cclk", NULL, PRCMU_IPI2CCLK,
> + CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("dsialtclk", NULL, PRCMU_DSIALTCLK,
> + CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("dmaclk", NULL, PRCMU_DMACLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("b2r2clk", NULL, PRCMU_B2R2CLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_scalable("tvclk", NULL, PRCMU_TVCLK, 0,
> + CLK_IS_ROOT|CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcmu_gate("sspclk", NULL, PRCMU_SSPCLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("rngclk", NULL, PRCMU_RNGCLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("uiccclk", NULL, PRCMU_UICCCLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_gate("timclk", NULL, PRCMU_TIMCLK, CLK_IS_ROOT);
> +
> + clk = clk_reg_prcmu_opp_volt_scalable("sdmmcclk", NULL, PRCMU_SDMMCCLK,
> + 100000000,
> + CLK_IS_ROOT|CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcmu_scalable("dsi_pll", "hdmiclk",
> + PRCMU_PLLDSI, 0, CLK_SET_RATE_GATE);
> +
> +
> + clk = clk_reg_prcmu_scalable("dsi0clk", "dsi_pll",
> + PRCMU_DSI0CLK, 0, CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcmu_scalable("dsi1clk", "dsi_pll",
> + PRCMU_DSI1CLK, 0, CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcmu_scalable("dsi0escclk", "tvclk",
> + PRCMU_DSI0ESCCLK, 0, CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcmu_scalable("dsi1escclk", "tvclk",
> + PRCMU_DSI1ESCCLK, 0, CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcmu_scalable("dsi2escclk", "tvclk",
> + PRCMU_DSI2ESCCLK, 0, CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcmu_scalable_rate("armss", NULL,
> + PRCMU_ARMSS, 0, CLK_IS_ROOT|CLK_IGNORE_UNUSED);
> +
> + clk = clk_register_fixed_factor(NULL, "smp_twd", "armss",
> + CLK_IGNORE_UNUSED, 1, 2);
> +
> + /*
> + * FIXME: Add special handled PRCMU clocks here:
> + * 1. clkout0yuv, use PRCMU as parent + need regulator + pinctrl.
> + * 2. ab9540_clkout1yuv, see clkout0yuv
> + */
> +
> + /* PRCC P-clocks */
> + clk = clk_reg_prcc_pclk("p1_pclk0", "per1clk", clkrst1_base,
> + BIT(0), 0);
> +
> + clk = clk_reg_prcc_pclk("p1_pclk1", "per1clk", clkrst1_base,
> + BIT(1), 0);
> +
> + clk = clk_reg_prcc_pclk("p1_pclk2", "per1clk", clkrst1_base,
> + BIT(2), 0);
> +
> + clk = clk_reg_prcc_pclk("p1_pclk3", "per1clk", clkrst1_base,
> + BIT(3), 0);
> +
> + clk = clk_reg_prcc_pclk("p1_pclk4", "per1clk", clkrst1_base,
> + BIT(4), 0);
> +
> + clk = clk_reg_prcc_pclk("p1_pclk5", "per1clk", clkrst1_base,
> + BIT(5), 0);
> +
> + clk = clk_reg_prcc_pclk("p1_pclk6", "per1clk", clkrst1_base,
> + BIT(6), 0);
> +
> + clk = clk_reg_prcc_pclk("p1_pclk7", "per1clk", clkrst1_base,
> + BIT(7), 0);
> +
> + clk = clk_reg_prcc_pclk("p1_pclk8", "per1clk", clkrst1_base,
> + BIT(8), 0);
> +
> + clk = clk_reg_prcc_pclk("p1_pclk9", "per1clk", clkrst1_base,
> + BIT(9), 0);
> +
> + clk = clk_reg_prcc_pclk("p1_pclk10", "per1clk", clkrst1_base,
> + BIT(10), 0);
> +
> + clk = clk_reg_prcc_pclk("p1_pclk11", "per1clk", clkrst1_base,
> + BIT(11), 0);
> +
> + clk = clk_reg_prcc_pclk("p2_pclk0", "per2clk", clkrst2_base,
> + BIT(0), 0);
> +
> + clk = clk_reg_prcc_pclk("p2_pclk1", "per2clk", clkrst2_base,
> + BIT(1), 0);
> +
> + clk = clk_reg_prcc_pclk("p2_pclk2", "per2clk", clkrst2_base,
> + BIT(2), 0);
> +
> + clk = clk_reg_prcc_pclk("p2_pclk3", "per2clk", clkrst2_base,
> + BIT(3), 0);
> +
> + clk = clk_reg_prcc_pclk("p2_pclk4", "per2clk", clkrst2_base,
> + BIT(4), 0);
> +
> + clk = clk_reg_prcc_pclk("p2_pclk5", "per2clk", clkrst2_base,
> + BIT(5), 0);
> +
> + clk = clk_reg_prcc_pclk("p2_pclk6", "per2clk", clkrst2_base,
> + BIT(6), 0);
> +
> + clk = clk_reg_prcc_pclk("p2_pclk7", "per2clk", clkrst2_base,
> + BIT(7), 0);
> +
> + clk = clk_reg_prcc_pclk("p2_pclk8", "per2clk", clkrst2_base,
> + BIT(8), 0);
> +
> + clk = clk_reg_prcc_pclk("p2_pclk9", "per2clk", clkrst2_base,
> + BIT(9), 0);
> +
> + clk = clk_reg_prcc_pclk("p2_pclk10", "per2clk", clkrst2_base,
> + BIT(10), 0);
> +
> + clk = clk_reg_prcc_pclk("p2_pclk11", "per2clk", clkrst2_base,
> + BIT(11), 0);
> +
> + clk = clk_reg_prcc_pclk("p2_pclk12", "per2clk", clkrst2_base,
> + BIT(12), 0);
> +
> + clk = clk_reg_prcc_pclk("p3_pclk0", "per3clk", clkrst3_base,
> + BIT(0), 0);
> +
> + clk = clk_reg_prcc_pclk("p3_pclk1", "per3clk", clkrst3_base,
> + BIT(1), 0);
> +
> + clk = clk_reg_prcc_pclk("p3_pclk2", "per3clk", clkrst3_base,
> + BIT(2), 0);
> +
> + clk = clk_reg_prcc_pclk("p3_pclk3", "per3clk", clkrst3_base,
> + BIT(3), 0);
> +
> + clk = clk_reg_prcc_pclk("p3_pclk4", "per3clk", clkrst3_base,
> + BIT(4), 0);
> +
> + clk = clk_reg_prcc_pclk("p3_pclk5", "per3clk", clkrst3_base,
> + BIT(5), 0);
> +
> + clk = clk_reg_prcc_pclk("p3_pclk6", "per3clk", clkrst3_base,
> + BIT(6), 0);
> +
> + clk = clk_reg_prcc_pclk("p3_pclk7", "per3clk", clkrst3_base,
> + BIT(7), 0);
> +
> + clk = clk_reg_prcc_pclk("p3_pclk8", "per3clk", clkrst3_base,
> + BIT(8), 0);
> +
> + clk = clk_reg_prcc_pclk("p5_pclk0", "per5clk", clkrst5_base,
> + BIT(0), 0);
> +
> + clk = clk_reg_prcc_pclk("p5_pclk1", "per5clk", clkrst5_base,
> + BIT(1), 0);
> +
> + clk = clk_reg_prcc_pclk("p6_pclk0", "per6clk", clkrst6_base,
> + BIT(0), 0);
> +
> + clk = clk_reg_prcc_pclk("p6_pclk1", "per6clk", clkrst6_base,
> + BIT(1), 0);
> +
> + clk = clk_reg_prcc_pclk("p6_pclk2", "per6clk", clkrst6_base,
> + BIT(2), 0);
> +
> + clk = clk_reg_prcc_pclk("p6_pclk3", "per6clk", clkrst6_base,
> + BIT(3), 0);
> +
> + clk = clk_reg_prcc_pclk("p6_pclk4", "per6clk", clkrst6_base,
> + BIT(4), 0);
> +
> + clk = clk_reg_prcc_pclk("p6_pclk5", "per6clk", clkrst6_base,
> + BIT(5), 0);
> +
> + clk = clk_reg_prcc_pclk("p6_pclk6", "per6clk", clkrst6_base,
> + BIT(6), 0);
> +
> + clk = clk_reg_prcc_pclk("p6_pclk7", "per6clk", clkrst6_base,
> + BIT(7), 0);
> +
> + /* PRCC K-clocks
> + *
> + * FIXME: Some drivers requires PERPIH[n| to be automatically enabled
> + * by enabling just the K-clock, even if it is not a valid parent to
> + * the K-clock. Until drivers get fixed we might need some kind of
> + * "parent muxed join".
> + */
> +
> + /* Periph1 */
> + clk = clk_reg_prcc_kclk("p1_uart0_kclk", "uartclk",
> + clkrst1_base, BIT(0), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p1_uart1_kclk", "uartclk",
> + clkrst1_base, BIT(1), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p1_i2c1_kclk", "i2cclk",
> + clkrst1_base, BIT(2), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p1_msp0_kclk", "msp02clk",
> + clkrst1_base, BIT(3), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p1_msp1_kclk", "msp1clk",
> + clkrst1_base, BIT(4), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p1_sdi0_kclk", "sdmmcclk",
> + clkrst1_base, BIT(5), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p1_i2c2_kclk", "i2cclk",
> + clkrst1_base, BIT(6), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p1_slimbus0_kclk", "slimclk",
> + clkrst1_base, BIT(8), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p1_i2c4_kclk", "i2cclk",
> + clkrst1_base, BIT(9), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p1_msp3_kclk", "msp1clk",
> + clkrst1_base, BIT(10), CLK_SET_RATE_GATE);
> +
> + /* Periph2 */
> + clk = clk_reg_prcc_kclk("p2_i2c3_kclk", "i2cclk",
> + clkrst2_base, BIT(0), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p2_sdi4_kclk", "sdmmcclk",
> + clkrst2_base, BIT(2), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p2_msp2_kclk", "msp02clk",
> + clkrst2_base, BIT(3), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p2_sdi1_kclk", "sdmmcclk",
> + clkrst2_base, BIT(4), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p2_sdi3_kclk", "sdmmcclk",
> + clkrst2_base, BIT(5), CLK_SET_RATE_GATE);
> +
> + /* Note that rate is received from parent. */
> + clk = clk_reg_prcc_kclk("p2_ssirx_kclk", "hsirxclk",
> + clkrst2_base, BIT(6),
> + CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT);
> + clk = clk_reg_prcc_kclk("p2_ssitx_kclk", "hsitxclk",
> + clkrst2_base, BIT(7),
> + CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT);
> +
> + /* Periph3 */
> + clk = clk_reg_prcc_kclk("p3_ssp0_kclk", "sspclk",
> + clkrst3_base, BIT(1), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p3_ssp1_kclk", "sspclk",
> + clkrst3_base, BIT(2), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p3_i2c0_kclk", "i2cclk",
> + clkrst3_base, BIT(3), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p3_sdi2_kclk", "sdmmcclk",
> + clkrst3_base, BIT(4), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p3_ske_kclk", "rtc32k",
> + clkrst3_base, BIT(5), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p3_uart2_kclk", "uartclk",
> + clkrst3_base, BIT(6), CLK_SET_RATE_GATE);
> +
> + clk = clk_reg_prcc_kclk("p3_sdi5_kclk", "sdmmcclk",
> + clkrst3_base, BIT(7), CLK_SET_RATE_GATE);
> +
> + /* Periph6 */
> + clk = clk_reg_prcc_kclk("p3_rng_kclk", "rngclk",
> + clkrst6_base, BIT(0), CLK_SET_RATE_GATE);
> +}
> diff --git a/include/linux/platform_data/clk-ux500.h b/include/linux/platform_data/clk-ux500.h
> index 9d98f3a..97baf83 100644
> --- a/include/linux/platform_data/clk-ux500.h
> +++ b/include/linux/platform_data/clk-ux500.h
> @@ -10,6 +10,9 @@
> #ifndef __CLK_UX500_H
> #define __CLK_UX500_H
>
> +void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
> + u32 clkrst5_base, u32 clkrst6_base);
> +
> void u8500_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
> u32 clkrst5_base, u32 clkrst6_base);
> void u9540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 50+ messages in thread
* [PATCH 22/41] clk: ux500: Copy u8500_clk_init() ready for DT enablement
2013-09-18 12:14 ` [PATCH 22/41] clk: ux500: Copy u8500_clk_init() ready for DT enablement Lee Jones
2013-09-19 12:31 ` Lee Jones
@ 2013-09-20 20:59 ` Linus Walleij
2013-12-13 1:51 ` Mike Turquette
1 sibling, 1 reply; 50+ messages in thread
From: Linus Walleij @ 2013-09-20 20:59 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Sep 18, 2013 at 2:14 PM, Lee Jones <lee.jones@linaro.org> wrote:
> Here we're using the old clock initialisation function as a template.
> It's necessary to remove all of the clk_register_clkdev() calls as
> they don't make sense when booting with Device Tree.
>
> Cc: Mike Turquette <mturquette@linaro.org>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
I *really* like the looks of this! Mike can we have your ACK on this?
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 50+ messages in thread
* [PATCH 22/41] clk: ux500: Copy u8500_clk_init() ready for DT enablement
2013-09-20 20:59 ` Linus Walleij
@ 2013-12-13 1:51 ` Mike Turquette
2013-12-19 20:15 ` Ulf Hansson
0 siblings, 1 reply; 50+ messages in thread
From: Mike Turquette @ 2013-12-13 1:51 UTC (permalink / raw)
To: linux-arm-kernel
Quoting Linus Walleij (2013-09-20 13:59:46)
> On Wed, Sep 18, 2013 at 2:14 PM, Lee Jones <lee.jones@linaro.org> wrote:
>
> > Here we're using the old clock initialisation function as a template.
> > It's necessary to remove all of the clk_register_clkdev() calls as
> > they don't make sense when booting with Device Tree.
> >
> > Cc: Mike Turquette <mturquette@linaro.org>
> > Signed-off-by: Lee Jones <lee.jones@linaro.org>
>
> I *really* like the looks of this! Mike can we have your ACK on this?
Acked-by: Mike Turquette <mturquette@linaro.org>
>
> Yours,
> Linus Walleij
^ permalink raw reply [flat|nested] 50+ messages in thread
* [PATCH 22/41] clk: ux500: Copy u8500_clk_init() ready for DT enablement
2013-12-13 1:51 ` Mike Turquette
@ 2013-12-19 20:15 ` Ulf Hansson
0 siblings, 0 replies; 50+ messages in thread
From: Ulf Hansson @ 2013-12-19 20:15 UTC (permalink / raw)
To: linux-arm-kernel
On 13 December 2013 02:51, Mike Turquette <mturquette@linaro.org> wrote:
> Quoting Linus Walleij (2013-09-20 13:59:46)
>> On Wed, Sep 18, 2013 at 2:14 PM, Lee Jones <lee.jones@linaro.org> wrote:
>>
>> > Here we're using the old clock initialisation function as a template.
>> > It's necessary to remove all of the clk_register_clkdev() calls as
>> > they don't make sense when booting with Device Tree.
>> >
>> > Cc: Mike Turquette <mturquette@linaro.org>
>> > Signed-off-by: Lee Jones <lee.jones@linaro.org>
>>
>> I *really* like the looks of this! Mike can we have your ACK on this?
>
> Acked-by: Mike Turquette <mturquette@linaro.org>
Hi Mike,
This went in through arm soc a while ago, it is present in 3.13 rc.
Thanks for your ack, anyway.
Kind regards
Uffe
>
>>
>> Yours,
>> Linus Walleij
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 50+ messages in thread
* [PATCH 23/41] clk: ux500: Provide u8500_clk with skeleton Device Tree support
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (21 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 22/41] clk: ux500: Copy u8500_clk_init() ready for DT enablement Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 24/41] clk: ux500: Add a 2-cell Device Tree parser for obtaining PRCC clocks Lee Jones
` (17 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
The functional components will be added on a per-clock basis.
Acked-by: Mike Turquette <mturquette@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/clk/ux500/u8500_of_clk.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/drivers/clk/ux500/u8500_of_clk.c b/drivers/clk/ux500/u8500_of_clk.c
index ceebce6..bfbe3ca 100644
--- a/drivers/clk/ux500/u8500_of_clk.c
+++ b/drivers/clk/ux500/u8500_of_clk.c
@@ -7,6 +7,7 @@
* License terms: GNU General Public License (GPL) version 2
*/
+#include <linux/of.h>
#include <linux/clk.h>
#include <linux/clkdev.h>
#include <linux/clk-provider.h>
@@ -14,13 +15,27 @@
#include <linux/platform_data/clk-ux500.h>
#include "clk.h"
+static const struct of_device_id u8500_clk_of_match[] = {
+ { .compatible = "stericsson,u8500-clks", },
+ { },
+};
+
void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
u32 clkrst5_base, u32 clkrst6_base)
{
struct prcmu_fw_version *fw_version;
+ struct device_node *np = NULL;
+ struct device_node *child = NULL;
const char *sgaclk_parent = NULL;
struct clk *clk;
+ if (of_have_populated_dt())
+ np = of_find_matching_node(NULL, u8500_clk_of_match);
+ if (!np) {
+ pr_err("Either DT or U8500 Clock node not found\n");
+ return;
+ }
+
/* Clock sources */
clk = clk_reg_prcmu_gate("soc0_pll", NULL, PRCMU_PLLSOC0,
CLK_IS_ROOT|CLK_IGNORE_UNUSED);
@@ -378,4 +393,8 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
/* Periph6 */
clk = clk_reg_prcc_kclk("p3_rng_kclk", "rngclk",
clkrst6_base, BIT(0), CLK_SET_RATE_GATE);
+
+ for_each_child_of_node(np, child) {
+ /* Place holder for supported nodes. */
+ }
}
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 24/41] clk: ux500: Add a 2-cell Device Tree parser for obtaining PRCC clocks
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (22 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 23/41] clk: ux500: Provide u8500_clk with skeleton Device Tree support Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 25/41] clk: ux500: Add Device Tree support for the PRCMU clock Lee Jones
` (16 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
PRCC (peripheral and kernel) clocks are specified using a property tuple
<&phandle base bit>, where 'base' is the peripheral (1, 2, 3, 5 or 6),
and bit is read-in value into that peripheral stipulated by the hardware
specification.
Acked-by: Mike Turquette <mturquette@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/clk/ux500/u8500_of_clk.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/drivers/clk/ux500/u8500_of_clk.c b/drivers/clk/ux500/u8500_of_clk.c
index bfbe3ca..b9b3317 100644
--- a/drivers/clk/ux500/u8500_of_clk.c
+++ b/drivers/clk/ux500/u8500_of_clk.c
@@ -15,6 +15,28 @@
#include <linux/platform_data/clk-ux500.h>
#include "clk.h"
+#define PRCC_SHOW(clk, base, bit) \
+ clk[(base * PRCC_PERIPHS_PER_CLUSTER) + bit]
+
+struct clk *ux500_twocell_get(struct of_phandle_args *clkspec, void *data)
+{
+ struct clk **clk_data = data;
+ unsigned int base, bit;
+
+ if (clkspec->args_count != 2)
+ return ERR_PTR(-EINVAL);
+
+ base = clkspec->args[0];
+ bit = clkspec->args[1];
+
+ if (base != 1 && base != 2 && base != 3 && base != 5 && base != 6) {
+ pr_err("%s: invalid PRCC base %d\n", __func__, base);
+ return ERR_PTR(-EINVAL);
+ }
+
+ return PRCC_SHOW(clk_data, base, bit);
+}
+
static const struct of_device_id u8500_clk_of_match[] = {
{ .compatible = "stericsson,u8500-clks", },
{ },
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 25/41] clk: ux500: Add Device Tree support for the PRCMU clock
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (23 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 24/41] clk: ux500: Add a 2-cell Device Tree parser for obtaining PRCC clocks Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 26/41] clk: ux500: Add Device Tree support for the PRCC Peripheral clock Lee Jones
` (15 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
This patch enables clocks to be specified from Device Tree via phandles
to the "prcmu-clock" node.
Acked-by: Mike Turquette <mturquette@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/clk/ux500/u8500_of_clk.c | 50 ++++++++++++++++++++++++++++++++++++++--
1 file changed, 48 insertions(+), 2 deletions(-)
diff --git a/drivers/clk/ux500/u8500_of_clk.c b/drivers/clk/ux500/u8500_of_clk.c
index b9b3317..f5534fd 100644
--- a/drivers/clk/ux500/u8500_of_clk.c
+++ b/drivers/clk/ux500/u8500_of_clk.c
@@ -15,6 +15,8 @@
#include <linux/platform_data/clk-ux500.h>
#include "clk.h"
+static struct clk *prcmu_clk[PRCMU_NUM_CLKS];
+
#define PRCC_SHOW(clk, base, bit) \
clk[(base * PRCC_PERIPHS_PER_CLUSTER) + bit]
@@ -61,12 +63,15 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
/* Clock sources */
clk = clk_reg_prcmu_gate("soc0_pll", NULL, PRCMU_PLLSOC0,
CLK_IS_ROOT|CLK_IGNORE_UNUSED);
+ prcmu_clk[PRCMU_PLLSOC0] = clk;
clk = clk_reg_prcmu_gate("soc1_pll", NULL, PRCMU_PLLSOC1,
CLK_IS_ROOT|CLK_IGNORE_UNUSED);
+ prcmu_clk[PRCMU_PLLSOC1] = clk;
clk = clk_reg_prcmu_gate("ddr_pll", NULL, PRCMU_PLLDDR,
CLK_IS_ROOT|CLK_IGNORE_UNUSED);
+ prcmu_clk[PRCMU_PLLDDR] = clk;
/* FIXME: Add sys, ulp and int clocks here. */
@@ -94,93 +99,128 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
else
clk = clk_reg_prcmu_gate("sgclk", NULL,
PRCMU_SGACLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_SGACLK] = clk;
clk = clk_reg_prcmu_gate("uartclk", NULL, PRCMU_UARTCLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_UARTCLK] = clk;
clk = clk_reg_prcmu_gate("msp02clk", NULL, PRCMU_MSP02CLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_MSP02CLK] = clk;
clk = clk_reg_prcmu_gate("msp1clk", NULL, PRCMU_MSP1CLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_MSP1CLK] = clk;
clk = clk_reg_prcmu_gate("i2cclk", NULL, PRCMU_I2CCLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_I2CCLK] = clk;
clk = clk_reg_prcmu_gate("slimclk", NULL, PRCMU_SLIMCLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_SLIMCLK] = clk;
clk = clk_reg_prcmu_gate("per1clk", NULL, PRCMU_PER1CLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_PER1CLK] = clk;
clk = clk_reg_prcmu_gate("per2clk", NULL, PRCMU_PER2CLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_PER2CLK] = clk;
clk = clk_reg_prcmu_gate("per3clk", NULL, PRCMU_PER3CLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_PER3CLK] = clk;
clk = clk_reg_prcmu_gate("per5clk", NULL, PRCMU_PER5CLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_PER5CLK] = clk;
clk = clk_reg_prcmu_gate("per6clk", NULL, PRCMU_PER6CLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_PER6CLK] = clk;
clk = clk_reg_prcmu_gate("per7clk", NULL, PRCMU_PER7CLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_PER7CLK] = clk;
clk = clk_reg_prcmu_scalable("lcdclk", NULL, PRCMU_LCDCLK, 0,
CLK_IS_ROOT|CLK_SET_RATE_GATE);
+ prcmu_clk[PRCMU_LCDCLK] = clk;
clk = clk_reg_prcmu_opp_gate("bmlclk", NULL, PRCMU_BMLCLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_BMLCLK] = clk;
clk = clk_reg_prcmu_scalable("hsitxclk", NULL, PRCMU_HSITXCLK, 0,
CLK_IS_ROOT|CLK_SET_RATE_GATE);
+ prcmu_clk[PRCMU_HSITXCLK] = clk;
clk = clk_reg_prcmu_scalable("hsirxclk", NULL, PRCMU_HSIRXCLK, 0,
CLK_IS_ROOT|CLK_SET_RATE_GATE);
+ prcmu_clk[PRCMU_HSIRXCLK] = clk;
clk = clk_reg_prcmu_scalable("hdmiclk", NULL, PRCMU_HDMICLK, 0,
CLK_IS_ROOT|CLK_SET_RATE_GATE);
+ prcmu_clk[PRCMU_HDMICLK] = clk;
clk = clk_reg_prcmu_gate("apeatclk", NULL, PRCMU_APEATCLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_APEATCLK] = clk;
clk = clk_reg_prcmu_gate("apetraceclk", NULL, PRCMU_APETRACECLK,
CLK_IS_ROOT);
+ prcmu_clk[PRCMU_APETRACECLK] = clk;
clk = clk_reg_prcmu_gate("mcdeclk", NULL, PRCMU_MCDECLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_MCDECLK] = clk;
clk = clk_reg_prcmu_opp_gate("ipi2cclk", NULL, PRCMU_IPI2CCLK,
CLK_IS_ROOT);
+ prcmu_clk[PRCMU_IPI2CCLK] = clk;
clk = clk_reg_prcmu_gate("dsialtclk", NULL, PRCMU_DSIALTCLK,
CLK_IS_ROOT);
+ prcmu_clk[PRCMU_DSIALTCLK] = clk;
clk = clk_reg_prcmu_gate("dmaclk", NULL, PRCMU_DMACLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_DMACLK] = clk;
clk = clk_reg_prcmu_gate("b2r2clk", NULL, PRCMU_B2R2CLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_B2R2CLK] = clk;
clk = clk_reg_prcmu_scalable("tvclk", NULL, PRCMU_TVCLK, 0,
CLK_IS_ROOT|CLK_SET_RATE_GATE);
+ prcmu_clk[PRCMU_TVCLK] = clk;
clk = clk_reg_prcmu_gate("sspclk", NULL, PRCMU_SSPCLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_SSPCLK] = clk;
clk = clk_reg_prcmu_gate("rngclk", NULL, PRCMU_RNGCLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_RNGCLK] = clk;
clk = clk_reg_prcmu_gate("uiccclk", NULL, PRCMU_UICCCLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_UICCCLK] = clk;
clk = clk_reg_prcmu_gate("timclk", NULL, PRCMU_TIMCLK, CLK_IS_ROOT);
+ prcmu_clk[PRCMU_TIMCLK] = clk;
clk = clk_reg_prcmu_opp_volt_scalable("sdmmcclk", NULL, PRCMU_SDMMCCLK,
100000000,
CLK_IS_ROOT|CLK_SET_RATE_GATE);
+ prcmu_clk[PRCMU_SDMMCCLK] = clk;
clk = clk_reg_prcmu_scalable("dsi_pll", "hdmiclk",
PRCMU_PLLDSI, 0, CLK_SET_RATE_GATE);
-
+ prcmu_clk[PRCMU_PLLDSI] = clk;
clk = clk_reg_prcmu_scalable("dsi0clk", "dsi_pll",
PRCMU_DSI0CLK, 0, CLK_SET_RATE_GATE);
+ prcmu_clk[PRCMU_DSI0CLK] = clk;
clk = clk_reg_prcmu_scalable("dsi1clk", "dsi_pll",
PRCMU_DSI1CLK, 0, CLK_SET_RATE_GATE);
+ prcmu_clk[PRCMU_DSI1CLK] = clk;
clk = clk_reg_prcmu_scalable("dsi0escclk", "tvclk",
PRCMU_DSI0ESCCLK, 0, CLK_SET_RATE_GATE);
+ prcmu_clk[PRCMU_DSI0ESCCLK] = clk;
clk = clk_reg_prcmu_scalable("dsi1escclk", "tvclk",
PRCMU_DSI1ESCCLK, 0, CLK_SET_RATE_GATE);
+ prcmu_clk[PRCMU_DSI1ESCCLK] = clk;
clk = clk_reg_prcmu_scalable("dsi2escclk", "tvclk",
PRCMU_DSI2ESCCLK, 0, CLK_SET_RATE_GATE);
+ prcmu_clk[PRCMU_DSI2ESCCLK] = clk;
clk = clk_reg_prcmu_scalable_rate("armss", NULL,
PRCMU_ARMSS, 0, CLK_IS_ROOT|CLK_IGNORE_UNUSED);
@@ -417,6 +457,12 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
clkrst6_base, BIT(0), CLK_SET_RATE_GATE);
for_each_child_of_node(np, child) {
- /* Place holder for supported nodes. */
+ static struct clk_onecell_data clk_data;
+
+ if (!of_node_cmp(child->name, "prcmu-clock")) {
+ clk_data.clks = prcmu_clk;
+ clk_data.clk_num = ARRAY_SIZE(prcmu_clk);
+ of_clk_add_provider(child, of_clk_src_onecell_get, &clk_data);
+ }
}
}
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 26/41] clk: ux500: Add Device Tree support for the PRCC Peripheral clock
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (24 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 25/41] clk: ux500: Add Device Tree support for the PRCMU clock Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 27/41] clk: ux500: Add Device Tree support for the PRCC Kernel clock Lee Jones
` (14 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
This patch enables clocks to be specified from Device Tree via phandles
to the "prcc-periph-clock" node.
Acked-by: Mike Turquette <mturquette@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/clk/ux500/u8500_of_clk.c | 52 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/drivers/clk/ux500/u8500_of_clk.c b/drivers/clk/ux500/u8500_of_clk.c
index f5534fd..dcc736a 100644
--- a/drivers/clk/ux500/u8500_of_clk.c
+++ b/drivers/clk/ux500/u8500_of_clk.c
@@ -15,10 +15,16 @@
#include <linux/platform_data/clk-ux500.h>
#include "clk.h"
+#define PRCC_NUM_PERIPH_CLUSTERS 6
+#define PRCC_PERIPHS_PER_CLUSTER 32
+
static struct clk *prcmu_clk[PRCMU_NUM_CLKS];
+static struct clk *prcc_pclk[(PRCC_NUM_PERIPH_CLUSTERS + 1) * PRCC_PERIPHS_PER_CLUSTER];
#define PRCC_SHOW(clk, base, bit) \
clk[(base * PRCC_PERIPHS_PER_CLUSTER) + bit]
+#define PRCC_PCLK_STORE(clk, base, bit) \
+ prcc_pclk[(base * PRCC_PERIPHS_PER_CLUSTER) + bit] = clk
struct clk *ux500_twocell_get(struct of_phandle_args *clkspec, void *data)
{
@@ -237,135 +243,179 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
/* PRCC P-clocks */
clk = clk_reg_prcc_pclk("p1_pclk0", "per1clk", clkrst1_base,
BIT(0), 0);
+ PRCC_PCLK_STORE(clk, 1, 0);
clk = clk_reg_prcc_pclk("p1_pclk1", "per1clk", clkrst1_base,
BIT(1), 0);
+ PRCC_PCLK_STORE(clk, 1, 1);
clk = clk_reg_prcc_pclk("p1_pclk2", "per1clk", clkrst1_base,
BIT(2), 0);
+ PRCC_PCLK_STORE(clk, 1, 2);
clk = clk_reg_prcc_pclk("p1_pclk3", "per1clk", clkrst1_base,
BIT(3), 0);
+ PRCC_PCLK_STORE(clk, 1, 3);
clk = clk_reg_prcc_pclk("p1_pclk4", "per1clk", clkrst1_base,
BIT(4), 0);
+ PRCC_PCLK_STORE(clk, 1, 4);
clk = clk_reg_prcc_pclk("p1_pclk5", "per1clk", clkrst1_base,
BIT(5), 0);
+ PRCC_PCLK_STORE(clk, 1, 5);
clk = clk_reg_prcc_pclk("p1_pclk6", "per1clk", clkrst1_base,
BIT(6), 0);
+ PRCC_PCLK_STORE(clk, 1, 6);
clk = clk_reg_prcc_pclk("p1_pclk7", "per1clk", clkrst1_base,
BIT(7), 0);
+ PRCC_PCLK_STORE(clk, 1, 7);
clk = clk_reg_prcc_pclk("p1_pclk8", "per1clk", clkrst1_base,
BIT(8), 0);
+ PRCC_PCLK_STORE(clk, 1, 8);
clk = clk_reg_prcc_pclk("p1_pclk9", "per1clk", clkrst1_base,
BIT(9), 0);
+ PRCC_PCLK_STORE(clk, 1, 9);
clk = clk_reg_prcc_pclk("p1_pclk10", "per1clk", clkrst1_base,
BIT(10), 0);
+ PRCC_PCLK_STORE(clk, 1, 10);
clk = clk_reg_prcc_pclk("p1_pclk11", "per1clk", clkrst1_base,
BIT(11), 0);
+ PRCC_PCLK_STORE(clk, 1, 11);
clk = clk_reg_prcc_pclk("p2_pclk0", "per2clk", clkrst2_base,
BIT(0), 0);
+ PRCC_PCLK_STORE(clk, 2, 0);
clk = clk_reg_prcc_pclk("p2_pclk1", "per2clk", clkrst2_base,
BIT(1), 0);
+ PRCC_PCLK_STORE(clk, 2, 1);
clk = clk_reg_prcc_pclk("p2_pclk2", "per2clk", clkrst2_base,
BIT(2), 0);
+ PRCC_PCLK_STORE(clk, 2, 2);
clk = clk_reg_prcc_pclk("p2_pclk3", "per2clk", clkrst2_base,
BIT(3), 0);
+ PRCC_PCLK_STORE(clk, 2, 3);
clk = clk_reg_prcc_pclk("p2_pclk4", "per2clk", clkrst2_base,
BIT(4), 0);
+ PRCC_PCLK_STORE(clk, 2, 4);
clk = clk_reg_prcc_pclk("p2_pclk5", "per2clk", clkrst2_base,
BIT(5), 0);
+ PRCC_PCLK_STORE(clk, 2, 5);
clk = clk_reg_prcc_pclk("p2_pclk6", "per2clk", clkrst2_base,
BIT(6), 0);
+ PRCC_PCLK_STORE(clk, 2, 6);
clk = clk_reg_prcc_pclk("p2_pclk7", "per2clk", clkrst2_base,
BIT(7), 0);
+ PRCC_PCLK_STORE(clk, 2, 7);
clk = clk_reg_prcc_pclk("p2_pclk8", "per2clk", clkrst2_base,
BIT(8), 0);
+ PRCC_PCLK_STORE(clk, 2, 8);
clk = clk_reg_prcc_pclk("p2_pclk9", "per2clk", clkrst2_base,
BIT(9), 0);
+ PRCC_PCLK_STORE(clk, 2, 9);
clk = clk_reg_prcc_pclk("p2_pclk10", "per2clk", clkrst2_base,
BIT(10), 0);
+ PRCC_PCLK_STORE(clk, 2, 10);
clk = clk_reg_prcc_pclk("p2_pclk11", "per2clk", clkrst2_base,
BIT(11), 0);
+ PRCC_PCLK_STORE(clk, 2, 1);
clk = clk_reg_prcc_pclk("p2_pclk12", "per2clk", clkrst2_base,
BIT(12), 0);
+ PRCC_PCLK_STORE(clk, 2, 12);
clk = clk_reg_prcc_pclk("p3_pclk0", "per3clk", clkrst3_base,
BIT(0), 0);
+ PRCC_PCLK_STORE(clk, 3, 0);
clk = clk_reg_prcc_pclk("p3_pclk1", "per3clk", clkrst3_base,
BIT(1), 0);
+ PRCC_PCLK_STORE(clk, 3, 1);
clk = clk_reg_prcc_pclk("p3_pclk2", "per3clk", clkrst3_base,
BIT(2), 0);
+ PRCC_PCLK_STORE(clk, 3, 2);
clk = clk_reg_prcc_pclk("p3_pclk3", "per3clk", clkrst3_base,
BIT(3), 0);
+ PRCC_PCLK_STORE(clk, 3, 3);
clk = clk_reg_prcc_pclk("p3_pclk4", "per3clk", clkrst3_base,
BIT(4), 0);
+ PRCC_PCLK_STORE(clk, 3, 4);
clk = clk_reg_prcc_pclk("p3_pclk5", "per3clk", clkrst3_base,
BIT(5), 0);
+ PRCC_PCLK_STORE(clk, 3, 5);
clk = clk_reg_prcc_pclk("p3_pclk6", "per3clk", clkrst3_base,
BIT(6), 0);
+ PRCC_PCLK_STORE(clk, 3, 6);
clk = clk_reg_prcc_pclk("p3_pclk7", "per3clk", clkrst3_base,
BIT(7), 0);
+ PRCC_PCLK_STORE(clk, 3, 7);
clk = clk_reg_prcc_pclk("p3_pclk8", "per3clk", clkrst3_base,
BIT(8), 0);
+ PRCC_PCLK_STORE(clk, 3, 8);
clk = clk_reg_prcc_pclk("p5_pclk0", "per5clk", clkrst5_base,
BIT(0), 0);
+ PRCC_PCLK_STORE(clk, 5, 0);
clk = clk_reg_prcc_pclk("p5_pclk1", "per5clk", clkrst5_base,
BIT(1), 0);
+ PRCC_PCLK_STORE(clk, 5, 1);
clk = clk_reg_prcc_pclk("p6_pclk0", "per6clk", clkrst6_base,
BIT(0), 0);
+ PRCC_PCLK_STORE(clk, 6, 0);
clk = clk_reg_prcc_pclk("p6_pclk1", "per6clk", clkrst6_base,
BIT(1), 0);
+ PRCC_PCLK_STORE(clk, 6, 1);
clk = clk_reg_prcc_pclk("p6_pclk2", "per6clk", clkrst6_base,
BIT(2), 0);
+ PRCC_PCLK_STORE(clk, 6, 2);
clk = clk_reg_prcc_pclk("p6_pclk3", "per6clk", clkrst6_base,
BIT(3), 0);
+ PRCC_PCLK_STORE(clk, 6, 3);
clk = clk_reg_prcc_pclk("p6_pclk4", "per6clk", clkrst6_base,
BIT(4), 0);
+ PRCC_PCLK_STORE(clk, 6, 4);
clk = clk_reg_prcc_pclk("p6_pclk5", "per6clk", clkrst6_base,
BIT(5), 0);
+ PRCC_PCLK_STORE(clk, 6, 5);
clk = clk_reg_prcc_pclk("p6_pclk6", "per6clk", clkrst6_base,
BIT(6), 0);
+ PRCC_PCLK_STORE(clk, 6, 6);
clk = clk_reg_prcc_pclk("p6_pclk7", "per6clk", clkrst6_base,
BIT(7), 0);
+ PRCC_PCLK_STORE(clk, 6, 7);
/* PRCC K-clocks
*
@@ -464,5 +514,7 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
clk_data.clk_num = ARRAY_SIZE(prcmu_clk);
of_clk_add_provider(child, of_clk_src_onecell_get, &clk_data);
}
+ if (!of_node_cmp(child->name, "prcc-periph-clock"))
+ of_clk_add_provider(child, ux500_twocell_get, prcc_pclk);
}
}
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 27/41] clk: ux500: Add Device Tree support for the PRCC Kernel clock
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (25 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 26/41] clk: ux500: Add Device Tree support for the PRCC Peripheral clock Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 28/41] clk: ux500: Add Device Tree support for the RTC clock Lee Jones
` (13 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
This patch enables clocks to be specified from Device Tree via phandles
to the "prcc-kernel-clock" node.
Acked-by: Mike Turquette <mturquette@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/clk/ux500/u8500_of_clk.c | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/drivers/clk/ux500/u8500_of_clk.c b/drivers/clk/ux500/u8500_of_clk.c
index dcc736a..4fcafd0 100644
--- a/drivers/clk/ux500/u8500_of_clk.c
+++ b/drivers/clk/ux500/u8500_of_clk.c
@@ -20,11 +20,14 @@
static struct clk *prcmu_clk[PRCMU_NUM_CLKS];
static struct clk *prcc_pclk[(PRCC_NUM_PERIPH_CLUSTERS + 1) * PRCC_PERIPHS_PER_CLUSTER];
+static struct clk *prcc_kclk[(PRCC_NUM_PERIPH_CLUSTERS + 1) * PRCC_PERIPHS_PER_CLUSTER];
#define PRCC_SHOW(clk, base, bit) \
clk[(base * PRCC_PERIPHS_PER_CLUSTER) + bit]
#define PRCC_PCLK_STORE(clk, base, bit) \
prcc_pclk[(base * PRCC_PERIPHS_PER_CLUSTER) + bit] = clk
+#define PRCC_KCLK_STORE(clk, base, bit) \
+ prcc_kclk[(base * PRCC_PERIPHS_PER_CLUSTER) + bit] = clk
struct clk *ux500_twocell_get(struct of_phandle_args *clkspec, void *data)
{
@@ -428,83 +431,109 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
/* Periph1 */
clk = clk_reg_prcc_kclk("p1_uart0_kclk", "uartclk",
clkrst1_base, BIT(0), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 1, 0);
clk = clk_reg_prcc_kclk("p1_uart1_kclk", "uartclk",
clkrst1_base, BIT(1), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 1, 1);
clk = clk_reg_prcc_kclk("p1_i2c1_kclk", "i2cclk",
clkrst1_base, BIT(2), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 1, 2);
clk = clk_reg_prcc_kclk("p1_msp0_kclk", "msp02clk",
clkrst1_base, BIT(3), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 1, 3);
clk = clk_reg_prcc_kclk("p1_msp1_kclk", "msp1clk",
clkrst1_base, BIT(4), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 1, 4);
clk = clk_reg_prcc_kclk("p1_sdi0_kclk", "sdmmcclk",
clkrst1_base, BIT(5), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 1, 5);
clk = clk_reg_prcc_kclk("p1_i2c2_kclk", "i2cclk",
clkrst1_base, BIT(6), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 1, 6);
clk = clk_reg_prcc_kclk("p1_slimbus0_kclk", "slimclk",
clkrst1_base, BIT(8), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 1, 8);
clk = clk_reg_prcc_kclk("p1_i2c4_kclk", "i2cclk",
clkrst1_base, BIT(9), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 1, 9);
clk = clk_reg_prcc_kclk("p1_msp3_kclk", "msp1clk",
clkrst1_base, BIT(10), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 1, 10);
/* Periph2 */
clk = clk_reg_prcc_kclk("p2_i2c3_kclk", "i2cclk",
clkrst2_base, BIT(0), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 2, 0);
clk = clk_reg_prcc_kclk("p2_sdi4_kclk", "sdmmcclk",
clkrst2_base, BIT(2), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 2, 2);
clk = clk_reg_prcc_kclk("p2_msp2_kclk", "msp02clk",
clkrst2_base, BIT(3), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 2, 3);
clk = clk_reg_prcc_kclk("p2_sdi1_kclk", "sdmmcclk",
clkrst2_base, BIT(4), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 2, 4);
clk = clk_reg_prcc_kclk("p2_sdi3_kclk", "sdmmcclk",
clkrst2_base, BIT(5), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 2, 5);
/* Note that rate is received from parent. */
clk = clk_reg_prcc_kclk("p2_ssirx_kclk", "hsirxclk",
clkrst2_base, BIT(6),
CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT);
+ PRCC_KCLK_STORE(clk, 2, 6);
+
clk = clk_reg_prcc_kclk("p2_ssitx_kclk", "hsitxclk",
clkrst2_base, BIT(7),
CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT);
+ PRCC_KCLK_STORE(clk, 2, 7);
/* Periph3 */
clk = clk_reg_prcc_kclk("p3_ssp0_kclk", "sspclk",
clkrst3_base, BIT(1), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 3, 1);
clk = clk_reg_prcc_kclk("p3_ssp1_kclk", "sspclk",
clkrst3_base, BIT(2), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 3, 2);
clk = clk_reg_prcc_kclk("p3_i2c0_kclk", "i2cclk",
clkrst3_base, BIT(3), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 3, 3);
clk = clk_reg_prcc_kclk("p3_sdi2_kclk", "sdmmcclk",
clkrst3_base, BIT(4), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 3, 4);
clk = clk_reg_prcc_kclk("p3_ske_kclk", "rtc32k",
clkrst3_base, BIT(5), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 3, 5);
clk = clk_reg_prcc_kclk("p3_uart2_kclk", "uartclk",
clkrst3_base, BIT(6), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 3, 6);
clk = clk_reg_prcc_kclk("p3_sdi5_kclk", "sdmmcclk",
clkrst3_base, BIT(7), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 3, 7);
/* Periph6 */
clk = clk_reg_prcc_kclk("p3_rng_kclk", "rngclk",
clkrst6_base, BIT(0), CLK_SET_RATE_GATE);
+ PRCC_KCLK_STORE(clk, 6, 0);
for_each_child_of_node(np, child) {
static struct clk_onecell_data clk_data;
@@ -516,5 +545,8 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
}
if (!of_node_cmp(child->name, "prcc-periph-clock"))
of_clk_add_provider(child, ux500_twocell_get, prcc_pclk);
+
+ if (!of_node_cmp(child->name, "prcc-kernel-clock"))
+ of_clk_add_provider(child, ux500_twocell_get, prcc_kclk);
}
}
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 28/41] clk: ux500: Add Device Tree support for the RTC clock
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (26 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 27/41] clk: ux500: Add Device Tree support for the PRCC Kernel clock Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 29/41] clk: ux500: Add Device Tree support for the TWD clock Lee Jones
` (12 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
This patch enables the RTC fixed frequency clock to be specified from
Device Tree via phandles to the "rtc32k-clock" node.
Acked-by: Mike Turquette <mturquette@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/clk/ux500/u8500_of_clk.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/clk/ux500/u8500_of_clk.c b/drivers/clk/ux500/u8500_of_clk.c
index 4fcafd0..fc647cf 100644
--- a/drivers/clk/ux500/u8500_of_clk.c
+++ b/drivers/clk/ux500/u8500_of_clk.c
@@ -60,7 +60,7 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
struct device_node *np = NULL;
struct device_node *child = NULL;
const char *sgaclk_parent = NULL;
- struct clk *clk;
+ struct clk *clk, *rtc_clk;
if (of_have_populated_dt())
np = of_find_matching_node(NULL, u8500_clk_of_match);
@@ -84,7 +84,7 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
/* FIXME: Add sys, ulp and int clocks here. */
- clk = clk_register_fixed_rate(NULL, "rtc32k", "NULL",
+ rtc_clk = clk_register_fixed_rate(NULL, "rtc32k", "NULL",
CLK_IS_ROOT|CLK_IGNORE_UNUSED,
32768);
@@ -548,5 +548,8 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
if (!of_node_cmp(child->name, "prcc-kernel-clock"))
of_clk_add_provider(child, ux500_twocell_get, prcc_kclk);
+
+ if (!of_node_cmp(child->name, "rtc32k-clock"))
+ of_clk_add_provider(child, of_clk_src_simple_get, rtc_clk);
}
}
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 29/41] clk: ux500: Add Device Tree support for the TWD clock
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (27 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 28/41] clk: ux500: Add Device Tree support for the RTC clock Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 30/41] usb: musb: ux500: Don't supply a con_id when requesting the clock Lee Jones
` (11 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
This patch enables the TWD fixed factor clock to be specified from
Device Tree via phandles to the "smp-twd-clock" node.
Acked-by: Mike Turquette <mturquette@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/clk/ux500/u8500_of_clk.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/clk/ux500/u8500_of_clk.c b/drivers/clk/ux500/u8500_of_clk.c
index fc647cf..0769db8 100644
--- a/drivers/clk/ux500/u8500_of_clk.c
+++ b/drivers/clk/ux500/u8500_of_clk.c
@@ -60,7 +60,7 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
struct device_node *np = NULL;
struct device_node *child = NULL;
const char *sgaclk_parent = NULL;
- struct clk *clk, *rtc_clk;
+ struct clk *clk, *rtc_clk, *twd_clk;
if (of_have_populated_dt())
np = of_find_matching_node(NULL, u8500_clk_of_match);
@@ -234,7 +234,7 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
clk = clk_reg_prcmu_scalable_rate("armss", NULL,
PRCMU_ARMSS, 0, CLK_IS_ROOT|CLK_IGNORE_UNUSED);
- clk = clk_register_fixed_factor(NULL, "smp_twd", "armss",
+ twd_clk = clk_register_fixed_factor(NULL, "smp_twd", "armss",
CLK_IGNORE_UNUSED, 1, 2);
/*
@@ -551,5 +551,8 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
if (!of_node_cmp(child->name, "rtc32k-clock"))
of_clk_add_provider(child, of_clk_src_simple_get, rtc_clk);
+
+ if (!of_node_cmp(child->name, "smp-twd-clock"))
+ of_clk_add_provider(child, of_clk_src_simple_get, twd_clk);
}
}
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 30/41] usb: musb: ux500: Don't supply a con_id when requesting the clock
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (28 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 29/41] clk: ux500: Add Device Tree support for the TWD clock Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-20 20:41 ` Linus Walleij
2013-09-23 20:43 ` Felipe Balbi
2013-09-18 12:14 ` [PATCH 31/41] ARM: ux500: Call appropriate clock initialisation based on DT or !DT booting Lee Jones
` (10 subsequent siblings)
40 siblings, 2 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
If we supply a con_id then the clock framework will search for that name
in MUSB's Device Tree node for the 'clock-names' property. If it's absent
the clock request will fail. However, if we don't supply the con_id then
clk_get() will call into clk_sys() which will use the device name to
search for the appropriate clock, which is much more natural than forcing
'usb'.
Cc: Felipe Balbi <balbi@ti.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/usb/musb/ux500.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/musb/ux500.c b/drivers/usb/musb/ux500.c
index fce71b6..5543b89 100644
--- a/drivers/usb/musb/ux500.c
+++ b/drivers/usb/musb/ux500.c
@@ -259,7 +259,7 @@ static int ux500_probe(struct platform_device *pdev)
goto err1;
}
- clk = clk_get(&pdev->dev, "usb");
+ clk = clk_get(&pdev->dev, NULL);
if (IS_ERR(clk)) {
dev_err(&pdev->dev, "failed to get clock\n");
ret = PTR_ERR(clk);
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 30/41] usb: musb: ux500: Don't supply a con_id when requesting the clock
2013-09-18 12:14 ` [PATCH 30/41] usb: musb: ux500: Don't supply a con_id when requesting the clock Lee Jones
@ 2013-09-20 20:41 ` Linus Walleij
2013-09-23 20:43 ` Felipe Balbi
1 sibling, 0 replies; 50+ messages in thread
From: Linus Walleij @ 2013-09-20 20:41 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Sep 18, 2013 at 2:14 PM, Lee Jones <lee.jones@linaro.org> wrote:
> If we supply a con_id then the clock framework will search for that name
> in MUSB's Device Tree node for the 'clock-names' property. If it's absent
> the clock request will fail. However, if we don't supply the con_id then
> clk_get() will call into clk_sys() which will use the device name to
> search for the appropriate clock, which is much more natural than forcing
> 'usb'.
>
> Cc: Felipe Balbi <balbi@ti.com>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
Looks fine to me, Felipe can we have your ACK on this so I can take
this with the rest of the clock stuff through ARM SoC?
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 50+ messages in thread
* [PATCH 30/41] usb: musb: ux500: Don't supply a con_id when requesting the clock
2013-09-18 12:14 ` [PATCH 30/41] usb: musb: ux500: Don't supply a con_id when requesting the clock Lee Jones
2013-09-20 20:41 ` Linus Walleij
@ 2013-09-23 20:43 ` Felipe Balbi
1 sibling, 0 replies; 50+ messages in thread
From: Felipe Balbi @ 2013-09-23 20:43 UTC (permalink / raw)
To: linux-arm-kernel
hi,
On Wed, Sep 18, 2013 at 01:14:27PM +0100, Lee Jones wrote:
> If we supply a con_id then the clock framework will search for that name
> in MUSB's Device Tree node for the 'clock-names' property. If it's absent
> the clock request will fail. However, if we don't supply the con_id then
> clk_get() will call into clk_sys() which will use the device name to
> search for the appropriate clock, which is much more natural than forcing
> 'usb'.
>
> Cc: Felipe Balbi <balbi@ti.com>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
fine by me :-)
Acked-by: Felipe Balbi <balbi@ti.com>
--
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130923/96d5d51e/attachment.sig>
^ permalink raw reply [flat|nested] 50+ messages in thread
* [PATCH 31/41] ARM: ux500: Call appropriate clock initialisation based on DT or !DT booting
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (29 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 30/41] usb: musb: ux500: Don't supply a con_id when requesting the clock Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 32/41] ARM: ux500: Remove AUXDATA relating to GPIO clock-name bindings Lee Jones
` (9 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
The ux500 platform will soon be converted to Device Tree only. When that
happens the old clock initialisation will be ripped out. In the meantime
however, we have to make a decision and call the appropriate
initialisation code manually.
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/mach-ux500/cpu.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c
index e6fb023..3c211d2 100644
--- a/arch/arm/mach-ux500/cpu.c
+++ b/arch/arm/mach-ux500/cpu.c
@@ -70,9 +70,17 @@ void __init ux500_init_irq(void)
if (cpu_is_u8500_family()) {
prcmu_early_init(U8500_PRCMU_BASE, SZ_8K - 1);
ux500_pm_init(U8500_PRCMU_BASE, SZ_8K - 1);
- u8500_clk_init(U8500_CLKRST1_BASE, U8500_CLKRST2_BASE,
- U8500_CLKRST3_BASE, U8500_CLKRST5_BASE,
- U8500_CLKRST6_BASE);
+
+ if (of_have_populated_dt())
+ u8500_of_clk_init(U8500_CLKRST1_BASE,
+ U8500_CLKRST2_BASE,
+ U8500_CLKRST3_BASE,
+ U8500_CLKRST5_BASE,
+ U8500_CLKRST6_BASE);
+ else
+ u8500_clk_init(U8500_CLKRST1_BASE, U8500_CLKRST2_BASE,
+ U8500_CLKRST3_BASE, U8500_CLKRST5_BASE,
+ U8500_CLKRST6_BASE);
} else if (cpu_is_u9540()) {
prcmu_early_init(U8500_PRCMU_BASE, SZ_8K - 1);
ux500_pm_init(U8500_PRCMU_BASE, SZ_8K - 1);
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 32/41] ARM: ux500: Remove AUXDATA relating to GPIO clock-name bindings
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (30 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 31/41] ARM: ux500: Call appropriate clock initialisation based on DT or !DT booting Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 33/41] ARM: ux500: Remove AUXDATA relating to UART " Lee Jones
` (8 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/mach-ux500/cpu-db8500.c | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index 12eee81..a5e89af 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -228,15 +228,6 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
OF_DEV_AUXDATA("arm,pl18x", 0x80005000, "sdi2", &mop500_sdi2_data),
OF_DEV_AUXDATA("arm,pl18x", 0x80114000, "sdi4", &mop500_sdi4_data),
/* Requires clock name bindings. */
- OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e000, "gpio.0", NULL),
- OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e080, "gpio.1", NULL),
- OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e000, "gpio.2", NULL),
- OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e080, "gpio.3", NULL),
- OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e100, "gpio.4", NULL),
- OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e180, "gpio.5", NULL),
- OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e000, "gpio.6", NULL),
- OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e080, "gpio.7", NULL),
- OF_DEV_AUXDATA("st,nomadik-gpio", 0xa03fe000, "gpio.8", NULL),
OF_DEV_AUXDATA("st,nomadik-i2c", 0x80004000, "nmk-i2c.0", NULL),
OF_DEV_AUXDATA("st,nomadik-i2c", 0x80122000, "nmk-i2c.1", NULL),
OF_DEV_AUXDATA("st,nomadik-i2c", 0x80128000, "nmk-i2c.2", NULL),
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 33/41] ARM: ux500: Remove AUXDATA relating to UART clock-name bindings
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (31 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 32/41] ARM: ux500: Remove AUXDATA relating to GPIO clock-name bindings Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 34/41] ARM: ux500: Remove AUXDATA relating to I2C " Lee Jones
` (7 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/mach-ux500/cpu-db8500.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index a5e89af..44e656d 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -219,9 +219,6 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
/* Requires call-back bindings. */
OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata),
/* Requires DMA bindings. */
- OF_DEV_AUXDATA("arm,pl011", 0x80120000, "uart0", NULL),
- OF_DEV_AUXDATA("arm,pl011", 0x80121000, "uart1", NULL),
- OF_DEV_AUXDATA("arm,pl011", 0x80007000, "uart2", NULL),
OF_DEV_AUXDATA("arm,pl022", 0x80002000, "ssp0", &ssp0_plat),
OF_DEV_AUXDATA("arm,pl18x", 0x80126000, "sdi0", &mop500_sdi0_data),
OF_DEV_AUXDATA("arm,pl18x", 0x80118000, "sdi1", &mop500_sdi1_data),
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 34/41] ARM: ux500: Remove AUXDATA relating to I2C clock-name bindings
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (32 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 33/41] ARM: ux500: Remove AUXDATA relating to UART " Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 35/41] ARM: ux500: Relocate AUXDATA relating to MSP (Audio) Lee Jones
` (6 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/mach-ux500/cpu-db8500.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index 44e656d..44b4879 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -225,11 +225,6 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
OF_DEV_AUXDATA("arm,pl18x", 0x80005000, "sdi2", &mop500_sdi2_data),
OF_DEV_AUXDATA("arm,pl18x", 0x80114000, "sdi4", &mop500_sdi4_data),
/* Requires clock name bindings. */
- OF_DEV_AUXDATA("st,nomadik-i2c", 0x80004000, "nmk-i2c.0", NULL),
- OF_DEV_AUXDATA("st,nomadik-i2c", 0x80122000, "nmk-i2c.1", NULL),
- OF_DEV_AUXDATA("st,nomadik-i2c", 0x80128000, "nmk-i2c.2", NULL),
- OF_DEV_AUXDATA("st,nomadik-i2c", 0x80110000, "nmk-i2c.3", NULL),
- OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL),
OF_DEV_AUXDATA("stericsson,db8500-musb", 0xa03e0000, "musb-ux500.0", NULL),
OF_DEV_AUXDATA("stericsson,db8500-prcmu", 0x80157000, "db8500-prcmu",
&db8500_prcmu_pdata),
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 35/41] ARM: ux500: Relocate AUXDATA relating to MSP (Audio)
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (33 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 34/41] ARM: ux500: Remove AUXDATA relating to I2C " Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 36/41] ARM: ux500: Remove AUXDATA relating to USB clock-name bindings Lee Jones
` (5 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
MSP no longer requires clock-name bindings, so we need to move them to
a more appropriate header indicating that we're still passing DMA
related platform data to them.
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/mach-ux500/cpu-db8500.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index 44b4879..dd6af6c 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -224,6 +224,14 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
OF_DEV_AUXDATA("arm,pl18x", 0x80118000, "sdi1", &mop500_sdi1_data),
OF_DEV_AUXDATA("arm,pl18x", 0x80005000, "sdi2", &mop500_sdi2_data),
OF_DEV_AUXDATA("arm,pl18x", 0x80114000, "sdi4", &mop500_sdi4_data),
+ OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80123000,
+ "ux500-msp-i2s.0", &msp0_platform_data),
+ OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80124000,
+ "ux500-msp-i2s.1", &msp1_platform_data),
+ OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80117000,
+ "ux500-msp-i2s.2", &msp2_platform_data),
+ OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000,
+ "ux500-msp-i2s.3", &msp3_platform_data),
/* Requires clock name bindings. */
OF_DEV_AUXDATA("stericsson,db8500-musb", 0xa03e0000, "musb-ux500.0", NULL),
OF_DEV_AUXDATA("stericsson,db8500-prcmu", 0x80157000, "db8500-prcmu",
@@ -236,15 +244,6 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
/* Requires device name bindings. */
OF_DEV_AUXDATA("stericsson,db8500-pinctrl", U8500_PRCMU_BASE,
"pinctrl-db8500", NULL),
- /* Requires clock name and DMA bindings. */
- OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80123000,
- "ux500-msp-i2s.0", &msp0_platform_data),
- OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80124000,
- "ux500-msp-i2s.1", &msp1_platform_data),
- OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80117000,
- "ux500-msp-i2s.2", &msp2_platform_data),
- OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000,
- "ux500-msp-i2s.3", &msp3_platform_data),
/* Requires clock name bindings and channel address lookup table. */
OF_DEV_AUXDATA("stericsson,db8500-dma40", 0x801C0000, "dma40.0", NULL),
{},
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 36/41] ARM: ux500: Remove AUXDATA relating to USB clock-name bindings
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (34 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 35/41] ARM: ux500: Relocate AUXDATA relating to MSP (Audio) Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 37/41] ARM: ux500: Remove AUXDATA relating to Ethernet " Lee Jones
` (4 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/mach-ux500/cpu-db8500.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index dd6af6c..7e32c7b 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -233,7 +233,6 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000,
"ux500-msp-i2s.3", &msp3_platform_data),
/* Requires clock name bindings. */
- OF_DEV_AUXDATA("stericsson,db8500-musb", 0xa03e0000, "musb-ux500.0", NULL),
OF_DEV_AUXDATA("stericsson,db8500-prcmu", 0x80157000, "db8500-prcmu",
&db8500_prcmu_pdata),
OF_DEV_AUXDATA("smsc,lan9115", 0x50000000, "smsc911x.0", NULL),
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 37/41] ARM: ux500: Remove AUXDATA relating to Ethernet clock-name bindings
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (35 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 36/41] ARM: ux500: Remove AUXDATA relating to USB clock-name bindings Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 38/41] ARM: ux500: Remove AUXDATA relating to DMA " Lee Jones
` (3 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/mach-ux500/cpu-db8500.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index 7e32c7b..689d3a8 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -235,7 +235,6 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
/* Requires clock name bindings. */
OF_DEV_AUXDATA("stericsson,db8500-prcmu", 0x80157000, "db8500-prcmu",
&db8500_prcmu_pdata),
- OF_DEV_AUXDATA("smsc,lan9115", 0x50000000, "smsc911x.0", NULL),
OF_DEV_AUXDATA("stericsson,ux500-cryp", 0xa03cb000, "cryp1", NULL),
OF_DEV_AUXDATA("stericsson,ux500-hash", 0xa03c2000, "hash1", NULL),
OF_DEV_AUXDATA("stericsson,snd-soc-mop500", 0, "snd-soc-mop500.0",
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 38/41] ARM: ux500: Remove AUXDATA relating to DMA clock-name bindings
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (36 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 37/41] ARM: ux500: Remove AUXDATA relating to Ethernet " Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 39/41] ARM: ux500: Reclassify PRCMU AUXDATA entry Lee Jones
` (2 subsequent siblings)
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/mach-ux500/cpu-db8500.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index 689d3a8..844c2fe 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -242,8 +242,6 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
/* Requires device name bindings. */
OF_DEV_AUXDATA("stericsson,db8500-pinctrl", U8500_PRCMU_BASE,
"pinctrl-db8500", NULL),
- /* Requires clock name bindings and channel address lookup table. */
- OF_DEV_AUXDATA("stericsson,db8500-dma40", 0x801C0000, "dma40.0", NULL),
{},
};
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 39/41] ARM: ux500: Reclassify PRCMU AUXDATA entry
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (37 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 38/41] ARM: ux500: Remove AUXDATA relating to DMA " Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 40/41] ARM: ux500: Remove SSP AUXDATA pertaining to DMA bindings Lee Jones
2013-09-18 12:14 ` [PATCH 41/41] ARM: ux500: Fix trivial whitespace/tabbing issue Lee Jones
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
We still need to utilise the AUXDATA system for the PRCMU to pass
through platform data which can not be DT:ed i.e. regulator initialisation
values. All we're doing in this patch is changing the comment header to be
more accurate.
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/mach-ux500/cpu-db8500.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index 844c2fe..28a69d1 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -232,7 +232,7 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
"ux500-msp-i2s.2", &msp2_platform_data),
OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000,
"ux500-msp-i2s.3", &msp3_platform_data),
- /* Requires clock name bindings. */
+ /* Requires non-DT:able platform data. */
OF_DEV_AUXDATA("stericsson,db8500-prcmu", 0x80157000, "db8500-prcmu",
&db8500_prcmu_pdata),
OF_DEV_AUXDATA("stericsson,ux500-cryp", 0xa03cb000, "cryp1", NULL),
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 40/41] ARM: ux500: Remove SSP AUXDATA pertaining to DMA bindings
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (38 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 39/41] ARM: ux500: Reclassify PRCMU AUXDATA entry Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
2013-09-18 12:14 ` [PATCH 41/41] ARM: ux500: Fix trivial whitespace/tabbing issue Lee Jones
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
These are now cared for from the Device Tree.
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/mach-ux500/cpu-db8500.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index 28a69d1..27734e7 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -219,7 +219,6 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
/* Requires call-back bindings. */
OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata),
/* Requires DMA bindings. */
- OF_DEV_AUXDATA("arm,pl022", 0x80002000, "ssp0", &ssp0_plat),
OF_DEV_AUXDATA("arm,pl18x", 0x80126000, "sdi0", &mop500_sdi0_data),
OF_DEV_AUXDATA("arm,pl18x", 0x80118000, "sdi1", &mop500_sdi1_data),
OF_DEV_AUXDATA("arm,pl18x", 0x80005000, "sdi2", &mop500_sdi2_data),
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread
* [PATCH 41/41] ARM: ux500: Fix trivial whitespace/tabbing issue
2013-09-18 12:13 [PATCH v2 00/41] Enable common clock with Device Tree on ux500 platforms Lee Jones
` (39 preceding siblings ...)
2013-09-18 12:14 ` [PATCH 40/41] ARM: ux500: Remove SSP AUXDATA pertaining to DMA bindings Lee Jones
@ 2013-09-18 12:14 ` Lee Jones
40 siblings, 0 replies; 50+ messages in thread
From: Lee Jones @ 2013-09-18 12:14 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
arch/arm/boot/dts/dbx5x0.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 0d2d5d0..e93b54c 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -308,7 +308,7 @@
<22 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "IRQ_HOTMON_LOW", "IRQ_HOTMON_HIGH";
status = "disabled";
- };
+ };
db8500-prcmu-regulators {
compatible = "stericsson,db8500-prcmu-regulator";
--
1.8.1.2
^ permalink raw reply related [flat|nested] 50+ messages in thread