• James Hogan's avatar
    MIPS: Add CDMM bus support · 8286ae03
    James Hogan authored
    Add MIPS Common Device Memory Map (CDMM) support in the form of a bus in
    the standard Linux device model. Each device attached via CDMM is
    discoverable via an 8-bit type identifier and may contain a number of
    blocks of memory mapped registers in the CDMM region. IRQs are expected
    to be handled separately.
    
    Due to the per-cpu (per-VPE for MT cores) nature of the CDMM devices,
    all the driver callbacks take place from workqueues which are run on the
    right CPU for the device in question, so that the driver doesn't need to
    be as concerned about which CPU it is running on. Callbacks also exist
    for when CPUs are taken offline, so that any per-CPU resources used by
    the driver can be disabled so they don't get forcefully migrated. CDMM
    devices are created as children of the CPU device they are attached to.
    
    Any existing CDMM configuration by the bootloader will be inherited,
    however platforms wishing to enable CDMM should implement the weak
    mips_cdmm_phys_base() function (see asm/cdmm.h) so that the bus driver
    knows where it should put the CDMM region in the physical address space
    if the bootloader hasn't already enabled it.
    
    A mips_cdmm_early_probe() function is also provided to allow early boot
    or particularly low level code to set up the CDMM region and probe for a
    specific device type, for example early console or KGDB IO drivers for
    the EJTAG Fast Debug Channel (FDC) CDMM device.
    Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/9599/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    8286ae03
mips_cdmm.c 19.7 KB