i.MX3: Add sound (ssi) resources
[pandora-kernel.git] / arch / arm / mach-mx3 / clock-imx35.c
index c595260..93a172d 100644 (file)
@@ -387,6 +387,35 @@ DEFINE_CLOCK(csi_clk,    0, CCM_CGR3,  0, get_rate_csi, NULL);
 DEFINE_CLOCK(iim_clk,    0, CCM_CGR3,  2, NULL, NULL);
 DEFINE_CLOCK(gpu2d_clk,  0, CCM_CGR3,  4, NULL, NULL);
 
+static int clk_dummy_enable(struct clk *clk)
+{
+       return 0;
+}
+
+static void clk_dummy_disable(struct clk *clk)
+{
+}
+
+static unsigned long get_rate_nfc(struct clk *clk)
+{
+       unsigned long div1;
+
+       div1 = (__raw_readl(CCM_BASE + CCM_PDR4) >> 28) + 1;
+
+       return get_rate_ahb(NULL) / div1;
+}
+
+/* NAND Controller: It seems it can't be disabled */
+static struct clk nfc_clk = {
+       .id             = 0,
+       .enable_reg     = 0,
+       .enable_shift   = 0,
+       .get_rate       = get_rate_nfc,
+       .set_rate       = NULL, /* set_rate_nfc, */
+       .enable         = clk_dummy_enable,
+       .disable        = clk_dummy_disable
+};
+
 #define _REGISTER_CLOCK(d, n, c)       \
        {                               \
                .dev_id = d,            \
@@ -434,8 +463,8 @@ static struct clk_lookup lookups[] = {
        _REGISTER_CLOCK(NULL, "sdma", sdma_clk)
        _REGISTER_CLOCK(NULL, "spba", spba_clk)
        _REGISTER_CLOCK(NULL, "spdif", spdif_clk)
-       _REGISTER_CLOCK(NULL, "ssi", ssi1_clk)
-       _REGISTER_CLOCK(NULL, "ssi", ssi2_clk)
+       _REGISTER_CLOCK("imx-ssi.0", NULL, ssi1_clk)
+       _REGISTER_CLOCK("imx-ssi.1", NULL, ssi2_clk)
        _REGISTER_CLOCK("imx-uart.0", NULL, uart1_clk)
        _REGISTER_CLOCK("imx-uart.1", NULL, uart2_clk)
        _REGISTER_CLOCK("imx-uart.2", NULL, uart3_clk)
@@ -449,6 +478,7 @@ static struct clk_lookup lookups[] = {
        _REGISTER_CLOCK(NULL, "csi", csi_clk)
        _REGISTER_CLOCK(NULL, "iim", iim_clk)
        _REGISTER_CLOCK(NULL, "gpu2d", gpu2d_clk)
+       _REGISTER_CLOCK("mxc_nand.0", NULL, nfc_clk)
 };
 
 int __init mx35_clocks_init()