diff options
Diffstat (limited to 'arch/arm/mach-pxa/pxa25x.c')
-rw-r--r-- | arch/arm/mach-pxa/pxa25x.c | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c index 034d3a6c31d8..c5b845b935bb 100644 --- a/arch/arm/mach-pxa/pxa25x.c +++ b/arch/arm/mach-pxa/pxa25x.c | |||
@@ -132,6 +132,29 @@ static const struct clkops clk_pxa25x_gpio12_ops = { | |||
132 | .disable = clk_gpio12_disable, | 132 | .disable = clk_gpio12_disable, |
133 | }; | 133 | }; |
134 | 134 | ||
135 | static unsigned long gpio11_config_3m6[] = { | ||
136 | GPIO11_3_6MHz, | ||
137 | }; | ||
138 | |||
139 | static unsigned long gpio11_config_gpio[] = { | ||
140 | GPIO11_GPIO, | ||
141 | }; | ||
142 | |||
143 | static void clk_gpio11_enable(struct clk *clk) | ||
144 | { | ||
145 | pxa2xx_mfp_config(gpio11_config_3m6, 1); | ||
146 | } | ||
147 | |||
148 | static void clk_gpio11_disable(struct clk *clk) | ||
149 | { | ||
150 | pxa2xx_mfp_config(gpio11_config_gpio, 1); | ||
151 | } | ||
152 | |||
153 | static const struct clkops clk_pxa25x_gpio11_ops = { | ||
154 | .enable = clk_gpio11_enable, | ||
155 | .disable = clk_gpio11_disable, | ||
156 | }; | ||
157 | |||
135 | /* | 158 | /* |
136 | * 3.6864MHz -> OST, GPIO, SSP, PWM, PLLs (95.842MHz, 147.456MHz) | 159 | * 3.6864MHz -> OST, GPIO, SSP, PWM, PLLs (95.842MHz, 147.456MHz) |
137 | * 95.842MHz -> MMC 19.169MHz, I2C 31.949MHz, FICP 47.923MHz, USB 47.923MHz | 160 | * 95.842MHz -> MMC 19.169MHz, I2C 31.949MHz, FICP 47.923MHz, USB 47.923MHz |
@@ -151,6 +174,7 @@ static struct clk pxa25x_clks[] = { | |||
151 | INIT_CKEN("UARTCLK", BTUART, 14745600, 1, &pxa_device_btuart.dev), | 174 | INIT_CKEN("UARTCLK", BTUART, 14745600, 1, &pxa_device_btuart.dev), |
152 | INIT_CKEN("UARTCLK", STUART, 14745600, 1, NULL), | 175 | INIT_CKEN("UARTCLK", STUART, 14745600, 1, NULL), |
153 | INIT_CKEN("UDCCLK", USB, 47923000, 5, &pxa25x_device_udc.dev), | 176 | INIT_CKEN("UDCCLK", USB, 47923000, 5, &pxa25x_device_udc.dev), |
177 | INIT_CLK("GPIO11_CLK", &clk_pxa25x_gpio11_ops, 3686400, 0, NULL), | ||
154 | INIT_CLK("GPIO12_CLK", &clk_pxa25x_gpio12_ops, 32768, 0, NULL), | 178 | INIT_CLK("GPIO12_CLK", &clk_pxa25x_gpio12_ops, 32768, 0, NULL), |
155 | INIT_CKEN("MMCCLK", MMC, 19169000, 0, &pxa_device_mci.dev), | 179 | INIT_CKEN("MMCCLK", MMC, 19169000, 0, &pxa_device_mci.dev), |
156 | INIT_CKEN("I2CCLK", I2C, 31949000, 0, &pxa_device_i2c.dev), | 180 | INIT_CKEN("I2CCLK", I2C, 31949000, 0, &pxa_device_i2c.dev), |
@@ -169,7 +193,10 @@ static struct clk pxa25x_clks[] = { | |||
169 | INIT_CKEN("FICPCLK", FICP, 47923000, 0, NULL), | 193 | INIT_CKEN("FICPCLK", FICP, 47923000, 0, NULL), |
170 | }; | 194 | }; |
171 | 195 | ||
172 | static struct clk gpio7_clk = INIT_CKOTHER("GPIO7_CK", &pxa25x_clks[4], NULL); | 196 | static struct clk pxa2xx_clk_aliases[] = { |
197 | INIT_CKOTHER("GPIO7_CLK", &pxa25x_clks[4], NULL), | ||
198 | INIT_CKOTHER("SA1111_CLK", &pxa25x_clks[5], NULL), | ||
199 | }; | ||
173 | 200 | ||
174 | #ifdef CONFIG_PM | 201 | #ifdef CONFIG_PM |
175 | 202 | ||
@@ -344,7 +371,7 @@ static int __init pxa25x_init(void) | |||
344 | if (cpu_is_pxa255()) | 371 | if (cpu_is_pxa255()) |
345 | ret = platform_device_register(&pxa_device_hwuart); | 372 | ret = platform_device_register(&pxa_device_hwuart); |
346 | 373 | ||
347 | clks_register(&gpio7_clk, 1); | 374 | clks_register(pxa2xx_clk_aliases, ARRAY_SIZE(pxa2xx_clk_aliases)); |
348 | 375 | ||
349 | return ret; | 376 | return ret; |
350 | } | 377 | } |