[PATCH v2 4/7] tty: serial: support device tree in pxa
From: Grant Likely <hidden>
Date: 2011-07-29 16:53:00
Also in:
linux-devicetree
On Fri, Jul 29, 2011 at 05:49:22PM +0100, Russell King - ARM Linux wrote:
On Fri, Jul 29, 2011 at 10:45:39AM -0600, Grant Likely wrote:quoted
On Thu, Jul 28, 2011 at 02:41:30PM +0800, Haojian Zhuang wrote:quoted
+#ifdef CONFIG_OF + for (i = 0; i < PXA_SERIAL_NR; i++) { + if (serial_pxa_ports[i] == NULL) + break; + } + if (i >= PXA_SERIAL_NR) { + pr_warn("can't find pxa serial port\n"); + return -ENODEV; + } + + if (of_property_read_u32(np, "clock-frequency", &clk)) { + pr_warn("no clock-frequency property set\n"); + return -ENODEV; + } + if (of_property_read_u32(np, "current-speed", &spd) == 0) + sport->port.custom_divisor = clk / (16 * spd); + + sprintf(name, "pxa2xx-uart.%d", i); + sport->clk = clk_get_sys(name, NULL); + if (IS_ERR(sport->clk)) { + ret = PTR_ERR(sport->clk); + goto err_free; + } + sport->port.uartclk = clk; +#else + i = dev->id; sport->clk = clk_get(&dev->dev, NULL); if (IS_ERR(sport->clk)) { ret = PTR_ERR(sport->clk); goto err_free; } + sport->port.uartclk = clk_get_rate(sport->clk); +#endifThis means a kernel build can either support DT or non-DT, but not both. DT & non-DT booting are full supported with the same kernel image, so don't do it this way. Instead, check for the presence of an of_node. If it is there, do the DT parsing. If now, still support the old method.Oh ffs, why is this DT stuff causing all the clk stuff to have to change. And specifically why is stuff converting to use clk_get_sys(). clk_get_sys() is there to allow system devices to get their clocks. It's not for general drivers to use. Please, stop this madness.
indeed. g.