Thread (4 messages) 4 messages, 3 authors, 2014-11-12

Samsung/S3C6410/Mini6410: how to handle NAND's "clock off"

From: Uwe Kleine-König <hidden>
Date: 2014-11-11 18:42:26
Also in: linux-samsung-soc

On Tue, Nov 11, 2014 at 07:10:33PM +0100, Juergen Borleis wrote:
Hi,

the S3C2410 NAND driver [1] can still be used for NANDs attached to an S3C6410
SoC. But this driver has a "nice" feature called "clock off" to save some
power while not in use. I tried it here on my Mini6410 platform and it freezes
the system.

The clock tree is somehow:

[...]
  hclk                      4            4   133000000          0 0
     hclk_mfc               0            0   133000000          0 0
     hclk_mem0              2            2   133000000          0 0
        mem0_srom           0            0   133000000          0 0
        mem0_nfcon          1            1   133000000          0 0
        mem0_onenand0       0            0   133000000          0 0
        mem0_onenand1       0            0   133000000          0 0
        mem0_cfcon          0            0   133000000          0 0
[...]

On the Mini6410 the "mem0_nfcon" clock is the only single user of the
"hclk_mem0". And this clock is required to keep the access to the external
network device enabled. When the NAND driver disables its clock "mem0_nfcon",
the "hclk_mem0" gets also disabled because there is no consumer anymore. The
next time the network driver tries to access its device, the SoC freezes.
Sounds like the network driver should hold a reference to hclk_mem0. I
assume the system uses a device tree? This is the dm9000 driver? It
doesn't seem to use clk stuff, but it should be possible to add an
optional clk entry.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help