Re: serial: clk: bcm2835: Strange effects when using aux-uart in console

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

> Martin Sperl <martin@xxxxxxxxx> hat am 11. Februar 2016 um 14:15 geschrieben:
>
> The only real difference is this diff:
> @@ -41,6 +41,4 @@
> 20101000.cprman: bcm2835_clock_get_parent - pwm
> 20101000.cprman: bcm2835_clock_get_parent - hsm
> 20101000.cprman: bcm2835_pll_on - pllc
> - 20101000.cprman: bcm2835_pll_on - plld
> - 20101000.cprman: bcm2835_clock_on - uart
> 20101000.cprman: bcm2835_clock_on - emmc
>
> so plld and uart are not started for the console=ttyS0 case.
>
> After I instrumented clk-bcm2835.c to see what happens in the driver
> and running: /sbin/getty -a root -L ttyAMA0 115200 vt100
>
> I get the following:
> [ 146.342341] bcm2835-clk 20101000.cprman: bcm2835_pll_on - plld
> [ 146.348426] bcm2835-clk 20101000.cprman: bcm2835_clock_on - uart
> [ 146.354639] uart-pl011 20201000.uart: no DMA platform data
> [ 146.375535] bcm2835-clk 20101000.cprman: bcm2835_clock_off - uart
> [ 146.381776] bcm2835-clk 20101000.cprman: bcm2835_clock_wait_busy - uart
> [ 146.388595] bcm2835-clk 20101000.cprman: bcm2835_pll_off - plld
> [ 146.396574] bcm2835-clk 20101000.cprman: bcm2835_pll_on - plld
> [ 146.502551] bcm2835-clk 20101000.cprman: plld: couldn't lock PLL
> [ 146.508726] ------------[ cut here ]------------
> [ 146.513448] WARNING: CPU: 0 PID: 2349 at drivers/clk/clk.c:680
> clk_core_disa)
> [ 146.522673] ---[ end trace 33268753126338e9 ]---
> [ 146.527478] ------------[ cut here ]------------
> [ 146.532224] WARNING: CPU: 0 PID: 2349 at drivers/clk/clk.c:575
> clk_core_unpr)
> [ 146.541866] ---[ end trace 33268753126338ea ]---
>
> So I wonder why we would disable and reenable the plld and uart clock

I think the reason for this behavior can be found in the uart-pl011 driver which
plays with the clocks.

According to the clock tree "plld" seems to be critical and shouldn't be
disabled?

>
> Note that just adding a return in bcm2835_pll_off like this:
> @@ -900,6 +905,9 @@ static void bcm2835_pll_off(struct clk_hw *hw)
> struct bcm2835_cprman *cprman = pll->cprman;
> const struct bcm2835_pll_data *data = pll->data;
>
> + dev_err(cprman->dev, "%s - %s\n", __FUNCTION__, clk_hw_get_name(hw));
> + return;
> +
> cprman_write(cprman, data->cm_ctrl_reg, CM_PLL_ANARST);
> cprman_write(cprman, data->a2w_ctrl_reg, A2W_PLL_CTRL_PWRDN);
> }
>
> avoids the crash, but the tty is non-functional.
>
> Calling sequence of the clock driver is:
> [ 145.022546] bcm2835-clk 20101000.cprman: bcm2835_pll_on - plld
> [ 145.028619] bcm2835-clk 20101000.cprman: bcm2835_clock_on - uart
> [ 145.034807] uart-pl011 20201000.uart: no DMA platform data
> [ 145.045089] bcm2835-clk 20101000.cprman: bcm2835_clock_off - uart
> [ 145.051418] bcm2835-clk 20101000.cprman: bcm2835_clock_wait_busy - uart
> [ 145.058215] bcm2835-clk 20101000.cprman: bcm2835_pll_off - plld
> [ 145.065779] bcm2835-clk 20101000.cprman: bcm2835_pll_on - plld
> [ 145.071761] bcm2835-clk 20101000.cprman: bcm2835_clock_on - uart
>
> debugfs shows the following after the above:
> root@raspcm:~# head /sys/kernel/debug/clk/uart*/clk_rate
> ==> /sys/kernel/debug/clk/uart0_pclk/clk_rate <==
> 3000000
>
> ==> /sys/kernel/debug/clk/uart1_pclk/clk_rate <==
> 125000000
>
> ==> /sys/kernel/debug/clk/uart/clk_rate <==
> 2997598
>
> Is this maybe related to the uart0_pclk, uart1_pclk, apb_pclk
> clocks created and registered in bcm2835_init_clocks?

Related or not i think we should get the rid off them.

>
> Any Ideas?
>
> Thanks,
> Martin
>
> _______________________________________________
> linux-rpi-kernel mailing list
> linux-rpi-kernel@xxxxxxxxxxxxxxxxxxx
> http://lists.infradead.org/mailman/listinfo/linux-rpi-kernel
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux