[PATCH v2 4/7] tty: serial: support device tree in pxa

Russell King - ARM Linux linux at arm.linux.org.uk
Fri Jul 29 12:49:22 EDT 2011


On Fri, Jul 29, 2011 at 10:45:39AM -0600, Grant Likely wrote:
> On Thu, Jul 28, 2011 at 02:41:30PM +0800, Haojian Zhuang wrote:
> > +#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);
> > +#endif
> 
> This 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.



More information about the linux-arm-kernel mailing list