aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/powerpc/booting-without-of.txt13
-rw-r--r--arch/powerpc/sysdev/qe_lib/qe.c32
-rw-r--r--include/asm-powerpc/qe.h1
3 files changed, 46 insertions, 0 deletions
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt
index c3fc9d955030..ee0209a7de3e 100644
--- a/Documentation/powerpc/booting-without-of.txt
+++ b/Documentation/powerpc/booting-without-of.txt
@@ -1629,6 +1629,19 @@ platforms are moved over to use the flattened-device-tree model.
1629 - interrupt-parent : the phandle for the interrupt controller that 1629 - interrupt-parent : the phandle for the interrupt controller that
1630 services interrupts for this device. 1630 services interrupts for this device.
1631 - pio-handle : The phandle for the Parallel I/O port configuration. 1631 - pio-handle : The phandle for the Parallel I/O port configuration.
1632 - rx-clock-name: the UCC receive clock source
1633 "none": clock source is disabled
1634 "brg1" through "brg16": clock source is BRG1-BRG16, respectively
1635 "clk1" through "clk24": clock source is CLK1-CLK24, respectively
1636 - tx-clock-name: the UCC transmit clock source
1637 "none": clock source is disabled
1638 "brg1" through "brg16": clock source is BRG1-BRG16, respectively
1639 "clk1" through "clk24": clock source is CLK1-CLK24, respectively
1640 The following two properties are deprecated. rx-clock has been replaced
1641 with rx-clock-name, and tx-clock has been replaced with tx-clock-name.
1642 Drivers that currently use the deprecated properties should continue to
1643 do so, in order to support older device trees, but they should be updated
1644 to check for the new properties first.
1632 - rx-clock : represents the UCC receive clock source. 1645 - rx-clock : represents the UCC receive clock source.
1633 0x00 : clock source is disabled; 1646 0x00 : clock source is disabled;
1634 0x1~0x10 : clock source is BRG1~BRG16 respectively; 1647 0x1~0x10 : clock source is BRG1~BRG16 respectively;
diff --git a/arch/powerpc/sysdev/qe_lib/qe.c b/arch/powerpc/sysdev/qe_lib/qe.c
index 1df3b4a6832f..21e01061aca9 100644
--- a/arch/powerpc/sysdev/qe_lib/qe.c
+++ b/arch/powerpc/sysdev/qe_lib/qe.c
@@ -203,6 +203,38 @@ int qe_setbrg(enum qe_clock brg, unsigned int rate, unsigned int multiplier)
203} 203}
204EXPORT_SYMBOL(qe_setbrg); 204EXPORT_SYMBOL(qe_setbrg);
205 205
206/* Convert a string to a QE clock source enum
207 *
208 * This function takes a string, typically from a property in the device
209 * tree, and returns the corresponding "enum qe_clock" value.
210*/
211enum qe_clock qe_clock_source(const char *source)
212{
213 unsigned int i;
214
215 if (strcasecmp(source, "none") == 0)
216 return QE_CLK_NONE;
217
218 if (strncasecmp(source, "brg", 3) == 0) {
219 i = simple_strtoul(source + 3, NULL, 10);
220 if ((i >= 1) && (i <= 16))
221 return (QE_BRG1 - 1) + i;
222 else
223 return QE_CLK_DUMMY;
224 }
225
226 if (strncasecmp(source, "clk", 3) == 0) {
227 i = simple_strtoul(source + 3, NULL, 10);
228 if ((i >= 1) && (i <= 24))
229 return (QE_CLK1 - 1) + i;
230 else
231 return QE_CLK_DUMMY;
232 }
233
234 return QE_CLK_DUMMY;
235}
236EXPORT_SYMBOL(qe_clock_source);
237
206/* Initialize SNUMs (thread serial numbers) according to 238/* Initialize SNUMs (thread serial numbers) according to
207 * QE Module Control chapter, SNUM table 239 * QE Module Control chapter, SNUM table
208 */ 240 */
diff --git a/include/asm-powerpc/qe.h b/include/asm-powerpc/qe.h
index bcf60bef6524..a24b7b14958f 100644
--- a/include/asm-powerpc/qe.h
+++ b/include/asm-powerpc/qe.h
@@ -84,6 +84,7 @@ extern int par_io_data_set(u8 port, u8 pin, u8 val);
84 84
85/* QE internal API */ 85/* QE internal API */
86int qe_issue_cmd(u32 cmd, u32 device, u8 mcn_protocol, u32 cmd_input); 86int qe_issue_cmd(u32 cmd, u32 device, u8 mcn_protocol, u32 cmd_input);
87enum qe_clock qe_clock_source(const char *source);
87int qe_setbrg(enum qe_clock brg, unsigned int rate, unsigned int multiplier); 88int qe_setbrg(enum qe_clock brg, unsigned int rate, unsigned int multiplier);
88int qe_get_snum(void); 89int qe_get_snum(void);
89void qe_put_snum(u8 snum); 90void qe_put_snum(u8 snum);