• Thomas Petazzoni's avatar
    arm: mvebu: move cache and mvebu-mbus initialization later · 3e0a8f23
    Thomas Petazzoni authored
    Current, the L2 cache and the mvebu-mbus drivers are initialized at
    ->init_early() time. However, at ->init_early() time, ioremap() only
    works if a static I/O mapping has already been put in place. If it's
    not the case, it tries to do a memory allocation with kmalloc() which
    is not possible so early at this stage of the initialization.
    
    Since we want to get rid of the static I/O mapping, we cannot
    initialize the L2 cache driver and the mvebu-mbus driver so early. So,
    we move their initialization to the ->init_time() level, which is
    slightly later (so ioremap() works properly), but sufficiently early
    to be before the call of the ->smp_prepare_cpus() hook, which creates
    an address decoding window for the BootROM, which requires the
    mvebu-mbus driver to be properly initialized.
    Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarJason Cooper <jason@lakedaemon.net>
    3e0a8f23
armada-370-xp.c 2.34 KB