Thread (2 messages) 2 messages, 2 authors, 2016-12-21

Re: [PATCH v2] power: reset: add linkstation-reset driver

From: Sebastian Reichel <hidden>
Date: 2016-12-21 15:59:29
Also in: linux-pm

Hi,

On Tue, Dec 20, 2016 at 02:37:39AM +0900, Roger Shimizu wrote:
[...]
quoted
quoted
+static void linkstation_reset(void)
+{
+     const unsigned divisor = ((tclk + (8 * cfg->baud)) / (16 * cfg->baud));
+
+     pr_err("%s: triggering power-off...\n", __func__);
+
+     /* hijack UART1 and reset into sane state */
+     writel(0x83, UART1_REG(LCR));
+     writel(divisor & 0xff, UART1_REG(DLL));
+     writel((divisor >> 8) & 0xff, UART1_REG(DLM));
+     writel(cfg->magic[0], UART1_REG(LCR));
+     writel(cfg->magic[1], UART1_REG(IER));
+     writel(cfg->magic[2], UART1_REG(FCR));
+     writel(cfg->magic[3], UART1_REG(MCR));
+
+     /* send the power-off command to PIC */
+     if(cfg->cmd[0][0] == 1 && cfg->cmd[1][0] == 0) {
+             /* if it's simply one-byte command, send it directly */
+             writel(cfg->cmd[0][1], UART1_REG(TX));
+     }
I guess this optimization can be dropped and you can directly
call the for loop with uart1_micon_send().
Same response regarding above two comments.
The code is extensible because I want to extend in the future.

Current implementation is just for Linkstation Pro / KuroBox Pro to be
able to power-off.
But for some other model of Linkstation, restart also need similar
command via UART1.

Just one example, Linkstation Pro is ARM based, but it was PowerPC based before.
And the device support still exists in kernel tree:
  arch/powerpc/platforms/embedded6xx/linkstation.c
  arch/powerpc/platforms/embedded6xx/ls_uart.c
It shows sending "C" to restart and sending "E" to power-off for
PowerPC based Linkstation.

I'm not actually interested in PowerPC based Linkstation, it's just an
example to show the reason to be flexible.

If other part is fine, may I send the v3 patch after merging
linkstation-common.c into linkstation-reset.c?
Thank you!
These models can just be added to qnap-poweroff, which handles
exactly this special case as far as I can see.

-- Sebastian

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help