mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-02-05 01:45:29 +07:00
a912e80bd0
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license as published by the free software foundation either version 2 of the license or at your option any later version you should have received a copy of the gnu general public license along with this program if not write to the free software foundation inc 675 mass ave cambridge ma 02139 usa extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 35 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Armijn Hemel <armijn@tjaldur.nl> Reviewed-by: Richard Fontana <rfontana@redhat.com> Reviewed-by: Allison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190527070032.655028468@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
253 lines
5.3 KiB
C
253 lines
5.3 KiB
C
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/*
|
|
* Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
|
|
* JZ4740 platform devices
|
|
*/
|
|
|
|
#include <linux/clk.h>
|
|
#include <linux/device.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/platform_device.h>
|
|
#include <linux/resource.h>
|
|
|
|
#include <linux/dma-mapping.h>
|
|
|
|
#include <linux/usb/musb.h>
|
|
|
|
#include <asm/mach-jz4740/platform.h>
|
|
#include <asm/mach-jz4740/base.h>
|
|
#include <asm/mach-jz4740/irq.h>
|
|
|
|
#include <linux/serial_core.h>
|
|
#include <linux/serial_8250.h>
|
|
|
|
#include "clock.h"
|
|
|
|
/* USB Device Controller */
|
|
struct platform_device jz4740_udc_xceiv_device = {
|
|
.name = "usb_phy_generic",
|
|
.id = 0,
|
|
};
|
|
|
|
static struct resource jz4740_udc_resources[] = {
|
|
[0] = {
|
|
.start = JZ4740_UDC_BASE_ADDR,
|
|
.end = JZ4740_UDC_BASE_ADDR + 0x10000 - 1,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
[1] = {
|
|
.start = JZ4740_IRQ_UDC,
|
|
.end = JZ4740_IRQ_UDC,
|
|
.flags = IORESOURCE_IRQ,
|
|
.name = "mc",
|
|
},
|
|
};
|
|
|
|
struct platform_device jz4740_udc_device = {
|
|
.name = "musb-jz4740",
|
|
.id = -1,
|
|
.dev = {
|
|
.dma_mask = &jz4740_udc_device.dev.coherent_dma_mask,
|
|
.coherent_dma_mask = DMA_BIT_MASK(32),
|
|
},
|
|
.num_resources = ARRAY_SIZE(jz4740_udc_resources),
|
|
.resource = jz4740_udc_resources,
|
|
};
|
|
|
|
/* MMC/SD controller */
|
|
static struct resource jz4740_mmc_resources[] = {
|
|
{
|
|
.start = JZ4740_MSC_BASE_ADDR,
|
|
.end = JZ4740_MSC_BASE_ADDR + 0x1000 - 1,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
{
|
|
.start = JZ4740_IRQ_MSC,
|
|
.end = JZ4740_IRQ_MSC,
|
|
.flags = IORESOURCE_IRQ,
|
|
}
|
|
};
|
|
|
|
struct platform_device jz4740_mmc_device = {
|
|
.name = "jz4740-mmc",
|
|
.id = 0,
|
|
.dev = {
|
|
.dma_mask = &jz4740_mmc_device.dev.coherent_dma_mask,
|
|
.coherent_dma_mask = DMA_BIT_MASK(32),
|
|
},
|
|
.num_resources = ARRAY_SIZE(jz4740_mmc_resources),
|
|
.resource = jz4740_mmc_resources,
|
|
};
|
|
|
|
/* I2C controller */
|
|
static struct resource jz4740_i2c_resources[] = {
|
|
{
|
|
.start = JZ4740_I2C_BASE_ADDR,
|
|
.end = JZ4740_I2C_BASE_ADDR + 0x1000 - 1,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
{
|
|
.start = JZ4740_IRQ_I2C,
|
|
.end = JZ4740_IRQ_I2C,
|
|
.flags = IORESOURCE_IRQ,
|
|
}
|
|
};
|
|
|
|
struct platform_device jz4740_i2c_device = {
|
|
.name = "jz4740-i2c",
|
|
.id = 0,
|
|
.num_resources = ARRAY_SIZE(jz4740_i2c_resources),
|
|
.resource = jz4740_i2c_resources,
|
|
};
|
|
|
|
/* NAND controller */
|
|
static struct resource jz4740_nand_resources[] = {
|
|
{
|
|
.name = "mmio",
|
|
.start = JZ4740_EMC_BASE_ADDR,
|
|
.end = JZ4740_EMC_BASE_ADDR + 0x1000 - 1,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
{
|
|
.name = "bank1",
|
|
.start = 0x18000000,
|
|
.end = 0x180C0000 - 1,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
{
|
|
.name = "bank2",
|
|
.start = 0x14000000,
|
|
.end = 0x140C0000 - 1,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
{
|
|
.name = "bank3",
|
|
.start = 0x0C000000,
|
|
.end = 0x0C0C0000 - 1,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
{
|
|
.name = "bank4",
|
|
.start = 0x08000000,
|
|
.end = 0x080C0000 - 1,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
};
|
|
|
|
struct platform_device jz4740_nand_device = {
|
|
.name = "jz4740-nand",
|
|
.num_resources = ARRAY_SIZE(jz4740_nand_resources),
|
|
.resource = jz4740_nand_resources,
|
|
};
|
|
|
|
/* LCD controller */
|
|
static struct resource jz4740_framebuffer_resources[] = {
|
|
{
|
|
.start = JZ4740_LCD_BASE_ADDR,
|
|
.end = JZ4740_LCD_BASE_ADDR + 0x1000 - 1,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
};
|
|
|
|
struct platform_device jz4740_framebuffer_device = {
|
|
.name = "jz4740-fb",
|
|
.id = -1,
|
|
.num_resources = ARRAY_SIZE(jz4740_framebuffer_resources),
|
|
.resource = jz4740_framebuffer_resources,
|
|
.dev = {
|
|
.dma_mask = &jz4740_framebuffer_device.dev.coherent_dma_mask,
|
|
.coherent_dma_mask = DMA_BIT_MASK(32),
|
|
},
|
|
};
|
|
|
|
/* I2S controller */
|
|
static struct resource jz4740_i2s_resources[] = {
|
|
{
|
|
.start = JZ4740_AIC_BASE_ADDR,
|
|
.end = JZ4740_AIC_BASE_ADDR + 0x38 - 1,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
};
|
|
|
|
struct platform_device jz4740_i2s_device = {
|
|
.name = "jz4740-i2s",
|
|
.id = -1,
|
|
.num_resources = ARRAY_SIZE(jz4740_i2s_resources),
|
|
.resource = jz4740_i2s_resources,
|
|
};
|
|
|
|
/* PCM */
|
|
struct platform_device jz4740_pcm_device = {
|
|
.name = "jz4740-pcm-audio",
|
|
.id = -1,
|
|
};
|
|
|
|
/* Codec */
|
|
static struct resource jz4740_codec_resources[] = {
|
|
{
|
|
.start = JZ4740_AIC_BASE_ADDR + 0x80,
|
|
.end = JZ4740_AIC_BASE_ADDR + 0x88 - 1,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
};
|
|
|
|
struct platform_device jz4740_codec_device = {
|
|
.name = "jz4740-codec",
|
|
.id = -1,
|
|
.num_resources = ARRAY_SIZE(jz4740_codec_resources),
|
|
.resource = jz4740_codec_resources,
|
|
};
|
|
|
|
/* ADC controller */
|
|
static struct resource jz4740_adc_resources[] = {
|
|
{
|
|
.start = JZ4740_SADC_BASE_ADDR,
|
|
.end = JZ4740_SADC_BASE_ADDR + 0x30,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
{
|
|
.start = JZ4740_IRQ_SADC,
|
|
.end = JZ4740_IRQ_SADC,
|
|
.flags = IORESOURCE_IRQ,
|
|
},
|
|
{
|
|
.start = JZ4740_IRQ_ADC_BASE,
|
|
.end = JZ4740_IRQ_ADC_BASE,
|
|
.flags = IORESOURCE_IRQ,
|
|
},
|
|
};
|
|
|
|
struct platform_device jz4740_adc_device = {
|
|
.name = "jz4740-adc",
|
|
.id = -1,
|
|
.num_resources = ARRAY_SIZE(jz4740_adc_resources),
|
|
.resource = jz4740_adc_resources,
|
|
};
|
|
|
|
/* PWM */
|
|
struct platform_device jz4740_pwm_device = {
|
|
.name = "jz4740-pwm",
|
|
.id = -1,
|
|
};
|
|
|
|
/* DMA */
|
|
static struct resource jz4740_dma_resources[] = {
|
|
{
|
|
.start = JZ4740_DMAC_BASE_ADDR,
|
|
.end = JZ4740_DMAC_BASE_ADDR + 0x400 - 1,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
{
|
|
.start = JZ4740_IRQ_DMAC,
|
|
.end = JZ4740_IRQ_DMAC,
|
|
.flags = IORESOURCE_IRQ,
|
|
},
|
|
};
|
|
|
|
struct platform_device jz4740_dma_device = {
|
|
.name = "jz4740-dma",
|
|
.id = -1,
|
|
.num_resources = ARRAY_SIZE(jz4740_dma_resources),
|
|
.resource = jz4740_dma_resources,
|
|
};
|