Re: [PATCH 1/2] clk: samsung: exynos3250: Add driver for CMU_ISP clock domain

2015-03-17 Thread Beata Michalska
On 03/17/2015 11:52 AM, Sylwester Nawrocki wrote:
> On 02/03/15 14:17, Beata Michalska wrote:
>> From: Tomasz Figa 
>>
>> Add clock controller for CMU ISP clock domain on Exynos3250,
>> providing clocks for FIMC-IS subsystem.
>>
>> [b.michalska:use samsung_cmu_register_one to register
>>  the provider; updated DT binding documentation]
> 
> Thanks for moving the initial clocks settings to dts, I've added this
> patch to my tree.
> In future please don't forget to add version information to subsequent
> patch iterations, it helps to ensure the right patch version is being
> applied.
> 

This must have slipped my mind, obviously - the patch version.
Apologies for that.

BR
Beata
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2] clk: samsung: exynos3250: Add driver for CMU_ISP clock domain

2015-03-17 Thread Sylwester Nawrocki
On 02/03/15 14:17, Beata Michalska wrote:
> From: Tomasz Figa 
> 
> Add clock controller for CMU ISP clock domain on Exynos3250,
> providing clocks for FIMC-IS subsystem.
> 
> [b.michalska:use samsung_cmu_register_one to register
>  the provider; updated DT binding documentation]

Thanks for moving the initial clocks settings to dts, I've added this
patch to my tree.
In future please don't forget to add version information to subsequent
patch iterations, it helps to ensure the right patch version is being
applied.

-- 
Regards,
Sylwester
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/2] clk: samsung: exynos3250: Add driver for CMU_ISP clock domain

2015-03-02 Thread Beata Michalska
From: Tomasz Figa 

Add clock controller for CMU ISP clock domain on Exynos3250,
providing clocks for FIMC-IS subsystem.

[b.michalska:use samsung_cmu_register_one to register
 the provider; updated DT binding documentation]

Signed-off-by: Tomasz Figa 
Signed-off-by: Sylwester Nawrocki 
Signed-off-by: Chanwoo Choi 
Signed-off-by: Beata Michalska 
Acked-by: Kyungmin Park 
---
 .../devicetree/bindings/clock/exynos3250-clock.txt |8 +
 drivers/clk/samsung/clk-exynos3250.c   |  163 
 include/dt-bindings/clock/exynos3250.h |   61 
 3 files changed, 232 insertions(+)

diff --git a/Documentation/devicetree/bindings/clock/exynos3250-clock.txt 
b/Documentation/devicetree/bindings/clock/exynos3250-clock.txt
index f57d9dd..f1738b8 100644
--- a/Documentation/devicetree/bindings/clock/exynos3250-clock.txt
+++ b/Documentation/devicetree/bindings/clock/exynos3250-clock.txt
@@ -9,6 +9,8 @@ Required Properties:
   - "samsung,exynos3250-cmu" - controller compatible with Exynos3250 SoC.
   - "samsung,exynos3250-cmu-dmc" - controller compatible with
 Exynos3250 SoC for Dynamic Memory Controller domain.
+  - "samsung,exynos3250-cmu-isp" - ISP block clock controller compatible
+ with Exynos3250 SOC
 
 - reg: physical base address of the controller and length of memory mapped
   region.
@@ -36,6 +38,12 @@ Example 1: Examples of clock controller nodes are listed 
below.
#clock-cells = <1>;
};
 
+   cmu_isp: clock-controller@10048000 {
+   compatible = "samsung,exynos3250-cmu-isp";
+   reg = <0x10048000 0x1000>;
+   #clock-cells = <1>;
+   };
+
 Example 2: UART controller node that consumes the clock generated by the clock
   controller. Refer to the standard clock bindings for information
   about 'clocks' and 'clock-names' property.
diff --git a/drivers/clk/samsung/clk-exynos3250.c 
b/drivers/clk/samsung/clk-exynos3250.c
index cc4c348..e5dc48c 100644
--- a/drivers/clk/samsung/clk-exynos3250.c
+++ b/drivers/clk/samsung/clk-exynos3250.c
@@ -894,3 +894,166 @@ static void __init exynos3250_cmu_dmc_init(struct 
device_node *np)
 }
 CLK_OF_DECLARE(exynos3250_cmu_dmc, "samsung,exynos3250-cmu-dmc",
exynos3250_cmu_dmc_init);
+
+
+/*
+ * CMU ISP
+ */
+
+#define DIV_ISP0   0x300
+#define DIV_ISP1   0x304
+#define GATE_IP_ISP0   0x800
+#define GATE_IP_ISP1   0x804
+#define GATE_SCLK_ISP  0x900
+
+static struct samsung_div_clock isp_div_clks[] __initdata = {
+   /*
+* NOTE: Following table is sorted by register address in ascending
+* order and then bitfield shift in descending order, as it is done
+* in the User's Manual. When adding new entries, please make sure
+* that the order is preserved, to avoid merge conflicts and make
+* further work with defined data easier.
+*/
+   /* DIV_ISP0 */
+   DIV(CLK_DIV_ISP1, "div_isp1", "mout_aclk_266_sub", DIV_ISP0, 4, 3),
+   DIV(CLK_DIV_ISP0, "div_isp0", "mout_aclk_266_sub", DIV_ISP0, 0, 3),
+
+   /* DIV_ISP1 */
+   DIV(CLK_DIV_MCUISP1, "div_mcuisp1", "mout_aclk_400_mcuisp_sub",
+   DIV_ISP1, 8, 3),
+   DIV(CLK_DIV_MCUISP0, "div_mcuisp0", "mout_aclk_400_mcuisp_sub",
+   DIV_ISP1, 4, 3),
+   DIV(CLK_DIV_MPWM, "div_mpwm", "div_isp1", DIV_ISP1, 0, 3),
+};
+
+static struct samsung_gate_clock isp_gate_clks[] __initdata = {
+   /*
+* NOTE: Following table is sorted by register address in ascending
+* order and then bitfield shift in descending order, as it is done
+* in the User's Manual. When adding new entries, please make sure
+* that the order is preserved, to avoid merge conflicts and make
+* further work with defined data easier.
+*/
+
+   /* GATE_IP_ISP0 */
+   GATE(CLK_UART_ISP, "uart_isp", "uart_isp_top",
+   GATE_IP_ISP0, 31, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_WDT_ISP, "wdt_isp", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 30, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_PWM_ISP, "pwm_isp", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 28, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_I2C1_ISP, "i2c1_isp", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 26, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_I2C0_ISP, "i2c0_isp", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 25, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_MPWM_ISP, "mpwm_isp", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 24, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_MCUCTL_ISP, "mcuctl_isp", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 23, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_PPMUISPX, "ppmuispx", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 21, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_PPMUISPMX, "ppmuispmx", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 20, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_QE_LITE1, "qe_lite1", "mout_ac