On Thu, Dec 17, 2009 at 8:57 AM, Sylvain Lamontagne <sylvain.lamonta...@gmail.com> wrote: > Hi all, > I would like to be able to set a baud rate of 460800 for modem that we are > testing. With the actual prescaler of 32 and a IPB frequency of 84MHz > I got a 5.1% error (437500) vs a 0.9% error (456522) if I could use the > prescaler of 4. See MPC5200B user manual page 15-46 for the calculation > formula and page 15-12 for the CSR description. > Currently the code for the kernel we are using here, (2.6.29.2) seams not to > take a prescaler of 4 into account. > Line 249 of > mpc52xx_uart.c http://lxr.linux.no/linux+v2.6.29.2/drivers/serial/mpc52xx_uart.c#L249 > /* Search for bus-frequency property in this node or a parent */ > static unsigned long mpc52xx_getuartclk(void *p) > { > /* > * 5200 UARTs have a / 32 prescaler > * but the generic serial code assumes 16 > * so return ipb freq / 2 > */ > return mpc52xx_find_ipb_freq(p) / 2; > } > How could I make it use the prescaler of 4 without breaking anything that we > currently have working ? > I doubt that simply doing return mpc52xx_find_ipb_freq(p) / 4 would do the > trick ...
since 32 prescale is scaled to 16 by dividing by 2, then 4 would be scaled to 16 by multiplying by 4. Have you tried mpc52xx_find_ipb_freq(p) * 4? You'll need to add some method for the uart driver to either set the prescaler at boot time or to figure out on its own which prescaler would be best. g. -- Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev