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

Uwe Kleine-König u.kleine-koenig at pengutronix.de
Tue Nov 11 10:42:26 PST 2014


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/  |



More information about the linux-arm-kernel mailing list