* Tony Lindgren <tony@xxxxxxxxxxx> [180508 08:47]: > * Tony Lindgren <tony@xxxxxxxxxxx> [180508 08:22]: > > * Johan Hovold <johan@xxxxxxxxxx> [180508 07:00]: > > > With the negative autosuspend set in both omap drivers probe functions, > > > this is the expected behaviour. Which I think we must fix. > > > > Yes indeed. I've been using my script for years now and have > > completely missed the fact that the unused ports are not idled > > at all on start-up when unused. > > This might be all that's needed, care to try it and if it works > I'll send out two separate proper patches? > > I'm seeing this now on my bbb after temporarily disabling my > UART idle init script: > > # rwmem -s32 0x44e004b4 # uart 1 on l4_wkup > 0x44e004b4 = 0x00000002 > > # rwmem -s32 0x44e0006c+0x10 # uart 2 - 5 on l4_per > 0x44e0006c = 0x00030000 > 0x44e00070 = 0x00030000 > 0x44e00074 = 0x00030000 > 0x44e00078 = 0x00030000 > > # rwmem -s32 0x44e00038 # uart 6 on l4_per > 0x44e00038 = 0x00030000 Hmm I forgot to remove status = "disabled" from the other ports, still not idling the unused ports with the patch below it seems. Regards, Tony > 8< ---------------------- > diff --git a/drivers/tty/serial/8250/8250_omap.c b/drivers/tty/serial/8250/8250_omap.c > --- a/drivers/tty/serial/8250/8250_omap.c > +++ b/drivers/tty/serial/8250/8250_omap.c > @@ -685,8 +685,7 @@ static void omap_8250_shutdown(struct uart_port *port) > serial_out(up, UART_LCR, up->lcr & ~UART_LCR_SBC); > serial_out(up, UART_FCR, UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT); > > - pm_runtime_mark_last_busy(port->dev); > - pm_runtime_put_autosuspend(port->dev); > + pm_runtime_put_sync(port->dev); > free_irq(port->irq, port); > dev_pm_clear_wake_irq(port->dev); > } > @@ -1265,8 +1264,7 @@ static int omap8250_probe(struct platform_device *pdev) > } > priv->line = ret; > platform_set_drvdata(pdev, priv); > - pm_runtime_mark_last_busy(&pdev->dev); > - pm_runtime_put_autosuspend(&pdev->dev); > + pm_runtime_put_sync(&pdev->dev); > return 0; > err: > pm_runtime_dont_use_autosuspend(&pdev->dev); > diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c > --- a/drivers/tty/serial/omap-serial.c > +++ b/drivers/tty/serial/omap-serial.c > @@ -821,8 +821,7 @@ static void serial_omap_shutdown(struct uart_port *port) > if (serial_in(up, UART_LSR) & UART_LSR_DR) > (void) serial_in(up, UART_RX); > > - pm_runtime_mark_last_busy(up->dev); > - pm_runtime_put_autosuspend(up->dev); > + pm_runtime_put_sync(up->dev); > free_irq(up->port.irq, up); > dev_pm_clear_wake_irq(up->dev); > } > @@ -1751,8 +1750,7 @@ static int serial_omap_probe(struct platform_device *pdev) > if (ret != 0) > goto err_add_port; > > - pm_runtime_mark_last_busy(up->dev); > - pm_runtime_put_autosuspend(up->dev); > + pm_runtime_put_sync(&pdev->dev); > return 0; > > err_add_port: > -- > 2.17.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html