Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 174b0da2 authored by Timur Tabi's avatar Timur Tabi Committed by Kumar Gala
Browse files

[POWERPC] qe: add function qe_clock_source()



Add function qe_clock_source() which takes a string containing the name of a
QE clock source (as is typically found in device trees) and returns the
matching enum qe_clock value.

Update booting-without-of.txt to indicate that the UCC properties rx-clock
and tx-clock are deprecated and replaced with rx-clock-name and tx-clock-name,
which use strings instead of numbers to indicate QE clock sources.

Signed-off-by: default avatarTimur Tabi <timur@freescale.com>
Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
parent 255b09eb
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -1629,6 +1629,19 @@ platforms are moved over to use the flattened-device-tree model.
   - interrupt-parent : the phandle for the interrupt controller that
     services interrupts for this device.
   - pio-handle : The phandle for the Parallel I/O port configuration.
   - rx-clock-name: the UCC receive clock source
     "none": clock source is disabled
     "brg1" through "brg16": clock source is BRG1-BRG16, respectively
     "clk1" through "clk24": clock source is CLK1-CLK24, respectively
   - tx-clock-name: the UCC transmit clock source
     "none": clock source is disabled
     "brg1" through "brg16": clock source is BRG1-BRG16, respectively
     "clk1" through "clk24": clock source is CLK1-CLK24, respectively
   The following two properties are deprecated.  rx-clock has been replaced
   with rx-clock-name, and tx-clock has been replaced with tx-clock-name.
   Drivers that currently use the deprecated properties should continue to
   do so, in order to support older device trees, but they should be updated
   to check for the new properties first.
   - rx-clock : represents the UCC receive clock source.
     0x00 : clock source is disabled;
     0x1~0x10 : clock source is BRG1~BRG16 respectively;
+32 −0
Original line number Diff line number Diff line
@@ -203,6 +203,38 @@ int qe_setbrg(enum qe_clock brg, unsigned int rate, unsigned int multiplier)
}
EXPORT_SYMBOL(qe_setbrg);

/* Convert a string to a QE clock source enum
 *
 * This function takes a string, typically from a property in the device
 * tree, and returns the corresponding "enum qe_clock" value.
*/
enum qe_clock qe_clock_source(const char *source)
{
	unsigned int i;

	if (strcasecmp(source, "none") == 0)
		return QE_CLK_NONE;

	if (strncasecmp(source, "brg", 3) == 0) {
		i = simple_strtoul(source + 3, NULL, 10);
		if ((i >= 1) && (i <= 16))
			return (QE_BRG1 - 1) + i;
		else
			return QE_CLK_DUMMY;
	}

	if (strncasecmp(source, "clk", 3) == 0) {
		i = simple_strtoul(source + 3, NULL, 10);
		if ((i >= 1) && (i <= 24))
			return (QE_CLK1 - 1) + i;
		else
			return QE_CLK_DUMMY;
	}

	return QE_CLK_DUMMY;
}
EXPORT_SYMBOL(qe_clock_source);

/* Initialize SNUMs (thread serial numbers) according to
 * QE Module Control chapter, SNUM table
 */
+1 −0
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ extern int par_io_data_set(u8 port, u8 pin, u8 val);

/* QE internal API */
int qe_issue_cmd(u32 cmd, u32 device, u8 mcn_protocol, u32 cmd_input);
enum qe_clock qe_clock_source(const char *source);
int qe_setbrg(enum qe_clock brg, unsigned int rate, unsigned int multiplier);
int qe_get_snum(void);
void qe_put_snum(u8 snum);