diff options
author | Jiancheng Xue <xuejiancheng@huawei.com> | 2014-05-27 23:35:32 -0400 |
---|---|---|
committer | Wei Xu <xuwei5@hisilicon.com> | 2014-09-27 22:27:01 -0400 |
commit | cc855dd9994cfd179891cf5b966ebc8051d95a9f (patch) | |
tree | 88bfdf7ea09dca7cbf51e3cdb9dc6e4288146c23 | |
parent | 20e075585973453515be6615b91901c959e0a573 (diff) |
clk: hix5hd2: add sd clk
Signed-off-by: Jiancheng Xue <xuejiancheng@huawei.com>
Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Signed-off-by: Wei Xu <xuwei5@hisilicon.com>
-rw-r--r-- | drivers/clk/hisilicon/clk-hix5hd2.c | 21 | ||||
-rw-r--r-- | include/dt-bindings/clock/hix5hd2-clock.h | 4 |
2 files changed, 19 insertions, 6 deletions
diff --git a/drivers/clk/hisilicon/clk-hix5hd2.c b/drivers/clk/hisilicon/clk-hix5hd2.c index da9ca05e6fb7..13d6ec24af12 100644 --- a/drivers/clk/hisilicon/clk-hix5hd2.c +++ b/drivers/clk/hisilicon/clk-hix5hd2.c | |||
@@ -50,9 +50,9 @@ static const char *sfc_mux_p[] __initconst = { | |||
50 | "24m", "150m", "200m", "100m", "75m", }; | 50 | "24m", "150m", "200m", "100m", "75m", }; |
51 | static u32 sfc_mux_table[] = {0, 4, 5, 6, 7}; | 51 | static u32 sfc_mux_table[] = {0, 4, 5, 6, 7}; |
52 | 52 | ||
53 | static const char *sdio1_mux_p[] __initconst = { | 53 | static const char *sdio_mux_p[] __initconst = { |
54 | "75m", "100m", "50m", "15m", }; | 54 | "75m", "100m", "50m", "15m", }; |
55 | static u32 sdio1_mux_table[] = {0, 1, 2, 3}; | 55 | static u32 sdio_mux_table[] = {0, 1, 2, 3}; |
56 | 56 | ||
57 | static const char *fephy_mux_p[] __initconst = { "25m", "125m"}; | 57 | static const char *fephy_mux_p[] __initconst = { "25m", "125m"}; |
58 | static u32 fephy_mux_table[] = {0, 1}; | 58 | static u32 fephy_mux_table[] = {0, 1}; |
@@ -61,20 +61,29 @@ static u32 fephy_mux_table[] = {0, 1}; | |||
61 | static struct hisi_mux_clock hix5hd2_mux_clks[] __initdata = { | 61 | static struct hisi_mux_clock hix5hd2_mux_clks[] __initdata = { |
62 | { HIX5HD2_SFC_MUX, "sfc_mux", sfc_mux_p, ARRAY_SIZE(sfc_mux_p), | 62 | { HIX5HD2_SFC_MUX, "sfc_mux", sfc_mux_p, ARRAY_SIZE(sfc_mux_p), |
63 | CLK_SET_RATE_PARENT, 0x5c, 8, 3, 0, sfc_mux_table, }, | 63 | CLK_SET_RATE_PARENT, 0x5c, 8, 3, 0, sfc_mux_table, }, |
64 | { HIX5HD2_MMC_MUX, "mmc_mux", sdio1_mux_p, ARRAY_SIZE(sdio1_mux_p), | 64 | { HIX5HD2_MMC_MUX, "mmc_mux", sdio_mux_p, ARRAY_SIZE(sdio_mux_p), |
65 | CLK_SET_RATE_PARENT, 0xa0, 8, 2, 0, sdio1_mux_table, }, | 65 | CLK_SET_RATE_PARENT, 0xa0, 8, 2, 0, sdio_mux_table, }, |
66 | { HIX5HD2_SD_MUX, "sd_mux", sdio_mux_p, ARRAY_SIZE(sdio_mux_p), | ||
67 | CLK_SET_RATE_PARENT, 0x9c, 8, 2, 0, sdio_mux_table, }, | ||
66 | { HIX5HD2_FEPHY_MUX, "fephy_mux", | 68 | { HIX5HD2_FEPHY_MUX, "fephy_mux", |
67 | fephy_mux_p, ARRAY_SIZE(fephy_mux_p), | 69 | fephy_mux_p, ARRAY_SIZE(fephy_mux_p), |
68 | CLK_SET_RATE_PARENT, 0x120, 8, 2, 0, fephy_mux_table, }, | 70 | CLK_SET_RATE_PARENT, 0x120, 8, 2, 0, fephy_mux_table, }, |
69 | }; | 71 | }; |
70 | 72 | ||
71 | static struct hisi_gate_clock hix5hd2_gate_clks[] __initdata = { | 73 | static struct hisi_gate_clock hix5hd2_gate_clks[] __initdata = { |
72 | /*sfc*/ | 74 | /* sfc */ |
73 | { HIX5HD2_SFC_CLK, "clk_sfc", "sfc_mux", | 75 | { HIX5HD2_SFC_CLK, "clk_sfc", "sfc_mux", |
74 | CLK_SET_RATE_PARENT, 0x5c, 0, 0, }, | 76 | CLK_SET_RATE_PARENT, 0x5c, 0, 0, }, |
75 | { HIX5HD2_SFC_RST, "rst_sfc", "clk_sfc", | 77 | { HIX5HD2_SFC_RST, "rst_sfc", "clk_sfc", |
76 | CLK_SET_RATE_PARENT, 0x5c, 4, CLK_GATE_SET_TO_DISABLE, }, | 78 | CLK_SET_RATE_PARENT, 0x5c, 4, CLK_GATE_SET_TO_DISABLE, }, |
77 | /*sdio1*/ | 79 | /* sdio0 */ |
80 | { HIX5HD2_SD_BIU_CLK, "clk_sd_biu", "200m", | ||
81 | CLK_SET_RATE_PARENT, 0x9c, 0, 0, }, | ||
82 | { HIX5HD2_SD_CIU_CLK, "clk_sd_ciu", "sd_mux", | ||
83 | CLK_SET_RATE_PARENT, 0x9c, 1, 0, }, | ||
84 | { HIX5HD2_SD_CIU_RST, "rst_sd_ciu", "clk_sd_ciu", | ||
85 | CLK_SET_RATE_PARENT, 0x9c, 4, CLK_GATE_SET_TO_DISABLE, }, | ||
86 | /* sdio1 */ | ||
78 | { HIX5HD2_MMC_BIU_CLK, "clk_mmc_biu", "200m", | 87 | { HIX5HD2_MMC_BIU_CLK, "clk_mmc_biu", "200m", |
79 | CLK_SET_RATE_PARENT, 0xa0, 0, 0, }, | 88 | CLK_SET_RATE_PARENT, 0xa0, 0, 0, }, |
80 | { HIX5HD2_MMC_CIU_CLK, "clk_mmc_ciu", "mmc_mux", | 89 | { HIX5HD2_MMC_CIU_CLK, "clk_mmc_ciu", "mmc_mux", |
diff --git a/include/dt-bindings/clock/hix5hd2-clock.h b/include/dt-bindings/clock/hix5hd2-clock.h index e3286695382d..5bd4135c9544 100644 --- a/include/dt-bindings/clock/hix5hd2-clock.h +++ b/include/dt-bindings/clock/hix5hd2-clock.h | |||
@@ -46,6 +46,7 @@ | |||
46 | #define HIX5HD2_SFC_MUX 64 | 46 | #define HIX5HD2_SFC_MUX 64 |
47 | #define HIX5HD2_MMC_MUX 65 | 47 | #define HIX5HD2_MMC_MUX 65 |
48 | #define HIX5HD2_FEPHY_MUX 66 | 48 | #define HIX5HD2_FEPHY_MUX 66 |
49 | #define HIX5HD2_SD_MUX 67 | ||
49 | 50 | ||
50 | /* gate clocks */ | 51 | /* gate clocks */ |
51 | #define HIX5HD2_SFC_RST 128 | 52 | #define HIX5HD2_SFC_RST 128 |
@@ -56,6 +57,9 @@ | |||
56 | #define HIX5HD2_FWD_BUS_CLK 133 | 57 | #define HIX5HD2_FWD_BUS_CLK 133 |
57 | #define HIX5HD2_FWD_SYS_CLK 134 | 58 | #define HIX5HD2_FWD_SYS_CLK 134 |
58 | #define HIX5HD2_MAC0_PHY_CLK 135 | 59 | #define HIX5HD2_MAC0_PHY_CLK 135 |
60 | #define HIX5HD2_SD_CIU_CLK 136 | ||
61 | #define HIX5HD2_SD_BIU_CLK 137 | ||
62 | #define HIX5HD2_SD_CIU_RST 138 | ||
59 | 63 | ||
60 | /* complex */ | 64 | /* complex */ |
61 | #define HIX5HD2_MAC0_CLK 192 | 65 | #define HIX5HD2_MAC0_CLK 192 |