ARM: mxs: remove platform device codes
With all the board files removed, there is no user for those platform device code. Remove them. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
This commit is contained in:
Родитель
4a1e75b60f
Коммит
f940b0272a
|
@ -1,7 +1,5 @@
|
|||
if ARCH_MXS
|
||||
|
||||
source "arch/arm/mach-mxs/devices/Kconfig"
|
||||
|
||||
config SOC_IMX23
|
||||
bool
|
||||
select ARM_AMBA
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
# Common support
|
||||
obj-y := devices.o icoll.o iomux.o ocotp.o system.o timer.o mm.o
|
||||
obj-y := icoll.o iomux.o ocotp.o system.o timer.o mm.o
|
||||
|
||||
obj-$(CONFIG_PM) += pm.o
|
||||
|
||||
obj-$(CONFIG_MACH_MXS_DT) += mach-mxs.o
|
||||
|
||||
obj-y += devices/
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*
|
||||
* Copyright 2010 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License version 2 as published by the
|
||||
* Free Software Foundation.
|
||||
*/
|
||||
#include <mach/mx23.h>
|
||||
#include <mach/devices-common.h>
|
||||
#include <linux/mxsfb.h>
|
||||
#include <linux/amba/bus.h>
|
||||
|
||||
static inline int mx23_add_duart(void)
|
||||
{
|
||||
struct amba_device *d;
|
||||
|
||||
d = amba_ahb_device_add(NULL, "duart", MX23_DUART_BASE_ADDR, SZ_8K,
|
||||
MX23_INT_DUART, 0, 0, 0);
|
||||
return IS_ERR(d) ? PTR_ERR(d) : 0;
|
||||
}
|
||||
|
||||
extern const struct mxs_auart_data mx23_auart_data[] __initconst;
|
||||
#define mx23_add_auart(id) mxs_add_auart(&mx23_auart_data[id])
|
||||
#define mx23_add_auart0() mx23_add_auart(0)
|
||||
#define mx23_add_auart1() mx23_add_auart(1)
|
||||
|
||||
extern const struct mxs_gpmi_nand_data mx23_gpmi_nand_data __initconst;
|
||||
#define mx23_add_gpmi_nand(pdata) \
|
||||
mxs_add_gpmi_nand(pdata, &mx23_gpmi_nand_data)
|
||||
|
||||
extern const struct mxs_mxs_mmc_data mx23_mxs_mmc_data[] __initconst;
|
||||
#define mx23_add_mxs_mmc(id, pdata) \
|
||||
mxs_add_mxs_mmc(&mx23_mxs_mmc_data[id], pdata)
|
||||
|
||||
#define mx23_add_mxs_pwm(id) mxs_add_mxs_pwm(MX23_PWM_BASE_ADDR, id)
|
||||
|
||||
struct platform_device *__init mx23_add_mxsfb(
|
||||
const struct mxsfb_platform_data *pdata);
|
||||
|
||||
struct platform_device *__init mx23_add_rtc_stmp3xxx(void);
|
|
@ -1,63 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*
|
||||
* Copyright 2010 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License version 2 as published by the
|
||||
* Free Software Foundation.
|
||||
*/
|
||||
#include <mach/mx28.h>
|
||||
#include <mach/devices-common.h>
|
||||
#include <linux/mxsfb.h>
|
||||
#include <linux/amba/bus.h>
|
||||
|
||||
static inline int mx28_add_duart(void)
|
||||
{
|
||||
struct amba_device *d;
|
||||
|
||||
d = amba_ahb_device_add(NULL, "duart", MX28_DUART_BASE_ADDR, SZ_8K,
|
||||
MX28_INT_DUART, 0, 0, 0);
|
||||
return IS_ERR(d) ? PTR_ERR(d) : 0;
|
||||
}
|
||||
|
||||
extern const struct mxs_auart_data mx28_auart_data[] __initconst;
|
||||
#define mx28_add_auart(id) mxs_add_auart(&mx28_auart_data[id])
|
||||
#define mx28_add_auart0() mx28_add_auart(0)
|
||||
#define mx28_add_auart1() mx28_add_auart(1)
|
||||
#define mx28_add_auart2() mx28_add_auart(2)
|
||||
#define mx28_add_auart3() mx28_add_auart(3)
|
||||
#define mx28_add_auart4() mx28_add_auart(4)
|
||||
|
||||
extern const struct mxs_fec_data mx28_fec_data[] __initconst;
|
||||
#define mx28_add_fec(id, pdata) \
|
||||
mxs_add_fec(&mx28_fec_data[id], pdata)
|
||||
|
||||
extern const struct mxs_flexcan_data mx28_flexcan_data[] __initconst;
|
||||
#define mx28_add_flexcan(id, pdata) \
|
||||
mxs_add_flexcan(&mx28_flexcan_data[id], pdata)
|
||||
#define mx28_add_flexcan0(pdata) mx28_add_flexcan(0, pdata)
|
||||
#define mx28_add_flexcan1(pdata) mx28_add_flexcan(1, pdata)
|
||||
|
||||
extern const struct mxs_gpmi_nand_data mx28_gpmi_nand_data __initconst;
|
||||
#define mx28_add_gpmi_nand(pdata) \
|
||||
mxs_add_gpmi_nand(pdata, &mx28_gpmi_nand_data)
|
||||
|
||||
extern const struct mxs_mxs_i2c_data mx28_mxs_i2c_data[] __initconst;
|
||||
#define mx28_add_mxs_i2c(id) mxs_add_mxs_i2c(&mx28_mxs_i2c_data[id])
|
||||
|
||||
extern const struct mxs_mxs_mmc_data mx28_mxs_mmc_data[] __initconst;
|
||||
#define mx28_add_mxs_mmc(id, pdata) \
|
||||
mxs_add_mxs_mmc(&mx28_mxs_mmc_data[id], pdata)
|
||||
|
||||
#define mx28_add_mxs_pwm(id) mxs_add_mxs_pwm(MX28_PWM_BASE_ADDR, id)
|
||||
|
||||
struct platform_device *__init mx28_add_mxsfb(
|
||||
const struct mxsfb_platform_data *pdata);
|
||||
|
||||
extern const struct mxs_saif_data mx28_saif_data[] __initconst;
|
||||
#define mx28_add_saif(id, pdata) \
|
||||
mxs_add_saif(&mx28_saif_data[id], pdata)
|
||||
|
||||
struct platform_device *__init mx28_add_rtc_stmp3xxx(void);
|
|
@ -1,87 +0,0 @@
|
|||
/*
|
||||
* Copyright 2008 Sascha Hauer, kernel@pengutronix.de
|
||||
*
|
||||
* 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.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* 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., 51 Franklin Street, Fifth Floor,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/amba/bus.h>
|
||||
|
||||
struct platform_device *__init mxs_add_platform_device_dmamask(
|
||||
const char *name, int id,
|
||||
const struct resource *res, unsigned int num_resources,
|
||||
const void *data, size_t size_data, u64 dmamask)
|
||||
{
|
||||
int ret = -ENOMEM;
|
||||
struct platform_device *pdev;
|
||||
|
||||
pdev = platform_device_alloc(name, id);
|
||||
if (!pdev)
|
||||
goto err;
|
||||
|
||||
if (dmamask) {
|
||||
/*
|
||||
* This memory isn't freed when the device is put,
|
||||
* I don't have a nice idea for that though. Conceptually
|
||||
* dma_mask in struct device should not be a pointer.
|
||||
* See http://thread.gmane.org/gmane.linux.kernel.pci/9081
|
||||
*/
|
||||
pdev->dev.dma_mask =
|
||||
kmalloc(sizeof(*pdev->dev.dma_mask), GFP_KERNEL);
|
||||
if (!pdev->dev.dma_mask)
|
||||
/* ret is still -ENOMEM; */
|
||||
goto err;
|
||||
|
||||
*pdev->dev.dma_mask = dmamask;
|
||||
pdev->dev.coherent_dma_mask = dmamask;
|
||||
}
|
||||
|
||||
if (res) {
|
||||
ret = platform_device_add_resources(pdev, res, num_resources);
|
||||
if (ret)
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (data) {
|
||||
ret = platform_device_add_data(pdev, data, size_data);
|
||||
if (ret)
|
||||
goto err;
|
||||
}
|
||||
|
||||
ret = platform_device_add(pdev);
|
||||
if (ret) {
|
||||
err:
|
||||
if (dmamask)
|
||||
kfree(pdev->dev.dma_mask);
|
||||
platform_device_put(pdev);
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
return pdev;
|
||||
}
|
||||
|
||||
struct device mxs_apbh_bus = {
|
||||
.init_name = "mxs_apbh",
|
||||
.parent = &platform_bus,
|
||||
};
|
||||
|
||||
static int __init mxs_device_init(void)
|
||||
{
|
||||
return device_register(&mxs_apbh_bus);
|
||||
}
|
||||
core_initcall(mxs_device_init);
|
|
@ -1,33 +0,0 @@
|
|||
config MXS_HAVE_AMBA_DUART
|
||||
bool
|
||||
|
||||
config MXS_HAVE_PLATFORM_AUART
|
||||
bool
|
||||
|
||||
config MXS_HAVE_PLATFORM_FEC
|
||||
bool
|
||||
|
||||
config MXS_HAVE_PLATFORM_FLEXCAN
|
||||
select HAVE_CAN_FLEXCAN if CAN
|
||||
bool
|
||||
|
||||
config MXS_HAVE_PLATFORM_GPMI_NAND
|
||||
bool
|
||||
|
||||
config MXS_HAVE_PLATFORM_MXS_I2C
|
||||
bool
|
||||
|
||||
config MXS_HAVE_PLATFORM_MXS_MMC
|
||||
bool
|
||||
|
||||
config MXS_HAVE_PLATFORM_MXS_PWM
|
||||
bool
|
||||
|
||||
config MXS_HAVE_PLATFORM_MXSFB
|
||||
bool
|
||||
|
||||
config MXS_HAVE_PLATFORM_MXS_SAIF
|
||||
bool
|
||||
|
||||
config MXS_HAVE_PLATFORM_RTC_STMP3XXX
|
||||
bool
|
|
@ -1,12 +0,0 @@
|
|||
obj-$(CONFIG_MXS_HAVE_PLATFORM_AUART) += platform-auart.o
|
||||
obj-y += platform-dma.o
|
||||
obj-$(CONFIG_MXS_HAVE_PLATFORM_FEC) += platform-fec.o
|
||||
obj-$(CONFIG_MXS_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o
|
||||
obj-$(CONFIG_MXS_HAVE_PLATFORM_GPMI_NAND) += platform-gpmi-nand.o
|
||||
obj-$(CONFIG_MXS_HAVE_PLATFORM_MXS_I2C) += platform-mxs-i2c.o
|
||||
obj-$(CONFIG_MXS_HAVE_PLATFORM_MXS_MMC) += platform-mxs-mmc.o
|
||||
obj-$(CONFIG_MXS_HAVE_PLATFORM_MXS_PWM) += platform-mxs-pwm.o
|
||||
obj-y += platform-gpio-mxs.o
|
||||
obj-$(CONFIG_MXS_HAVE_PLATFORM_MXSFB) += platform-mxsfb.o
|
||||
obj-$(CONFIG_MXS_HAVE_PLATFORM_MXS_SAIF) += platform-mxs-saif.o
|
||||
obj-$(CONFIG_MXS_HAVE_PLATFORM_RTC_STMP3XXX) += platform-rtc-stmp3xxx.o
|
|
@ -1,65 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Sascha Hauer <s.hauer@pengutronix.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License version 2 as published by the
|
||||
* Free Software Foundation.
|
||||
*/
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <asm/sizes.h>
|
||||
#include <mach/mx23.h>
|
||||
#include <mach/mx28.h>
|
||||
#include <mach/devices-common.h>
|
||||
|
||||
#define mxs_auart_data_entry_single(soc, _id, hwid) \
|
||||
{ \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _AUART ## hwid ## _BASE_ADDR, \
|
||||
.irq = soc ## _INT_AUART ## hwid, \
|
||||
}
|
||||
|
||||
#define mxs_auart_data_entry(soc, _id, hwid) \
|
||||
[_id] = mxs_auart_data_entry_single(soc, _id, hwid)
|
||||
|
||||
#ifdef CONFIG_SOC_IMX23
|
||||
const struct mxs_auart_data mx23_auart_data[] __initconst = {
|
||||
#define mx23_auart_data_entry(_id, hwid) \
|
||||
mxs_auart_data_entry(MX23, _id, hwid)
|
||||
mx23_auart_data_entry(0, 1),
|
||||
mx23_auart_data_entry(1, 2),
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SOC_IMX28
|
||||
const struct mxs_auart_data mx28_auart_data[] __initconst = {
|
||||
#define mx28_auart_data_entry(_id) \
|
||||
mxs_auart_data_entry(MX28, _id, _id)
|
||||
mx28_auart_data_entry(0),
|
||||
mx28_auart_data_entry(1),
|
||||
mx28_auart_data_entry(2),
|
||||
mx28_auart_data_entry(3),
|
||||
mx28_auart_data_entry(4),
|
||||
};
|
||||
#endif
|
||||
|
||||
struct platform_device *__init mxs_add_auart(
|
||||
const struct mxs_auart_data *data)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + SZ_8K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return mxs_add_platform_device_dmamask("mxs-auart", data->id,
|
||||
res, ARRAY_SIZE(res), NULL, 0,
|
||||
DMA_BIT_MASK(32));
|
||||
}
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
/*
|
||||
* Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License version 2 as published by the
|
||||
* Free Software Foundation.
|
||||
*/
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/init.h>
|
||||
|
||||
#include <mach/mx23.h>
|
||||
#include <mach/mx28.h>
|
||||
#include <mach/devices-common.h>
|
||||
|
||||
struct platform_device *__init mxs_add_dma(const char *devid,
|
||||
resource_size_t base)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = base,
|
||||
.end = base + SZ_8K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}
|
||||
};
|
||||
|
||||
return mxs_add_platform_device_dmamask(devid, -1,
|
||||
res, ARRAY_SIZE(res), NULL, 0,
|
||||
DMA_BIT_MASK(32));
|
||||
}
|
|
@ -1,52 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License version 2 as published by the
|
||||
* Free Software Foundation.
|
||||
*/
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <asm/sizes.h>
|
||||
#include <mach/mx28.h>
|
||||
#include <mach/devices-common.h>
|
||||
|
||||
#define mxs_fec_data_entry_single(soc, _id) \
|
||||
{ \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _ENET_MAC ## _id ## _BASE_ADDR, \
|
||||
.irq = soc ## _INT_ENET_MAC ## _id, \
|
||||
}
|
||||
|
||||
#define mxs_fec_data_entry(soc, _id) \
|
||||
[_id] = mxs_fec_data_entry_single(soc, _id)
|
||||
|
||||
#ifdef CONFIG_SOC_IMX28
|
||||
const struct mxs_fec_data mx28_fec_data[] __initconst = {
|
||||
#define mx28_fec_data_entry(_id) \
|
||||
mxs_fec_data_entry(MX28, _id)
|
||||
mx28_fec_data_entry(0),
|
||||
mx28_fec_data_entry(1),
|
||||
};
|
||||
#endif
|
||||
|
||||
struct platform_device *__init mxs_add_fec(
|
||||
const struct mxs_fec_data *data,
|
||||
const struct fec_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return mxs_add_platform_device_dmamask("imx28-fec", data->id,
|
||||
res, ARRAY_SIZE(res), pdata, sizeof(*pdata),
|
||||
DMA_BIT_MASK(32));
|
||||
}
|
|
@ -1,51 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2010, 2011 Pengutronix,
|
||||
* Marc Kleine-Budde <kernel@pengutronix.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License version 2 as published by the
|
||||
* Free Software Foundation.
|
||||
*/
|
||||
#include <asm/sizes.h>
|
||||
#include <mach/mx28.h>
|
||||
#include <mach/devices-common.h>
|
||||
|
||||
#define mxs_flexcan_data_entry_single(soc, _id, _hwid, _size) \
|
||||
{ \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _CAN ## _hwid ## _BASE_ADDR, \
|
||||
.iosize = _size, \
|
||||
.irq = soc ## _INT_CAN ## _hwid, \
|
||||
}
|
||||
|
||||
#define mxs_flexcan_data_entry(soc, _id, _hwid, _size) \
|
||||
[_id] = mxs_flexcan_data_entry_single(soc, _id, _hwid, _size)
|
||||
|
||||
#ifdef CONFIG_SOC_IMX28
|
||||
const struct mxs_flexcan_data mx28_flexcan_data[] __initconst = {
|
||||
#define mx28_flexcan_data_entry(_id, _hwid) \
|
||||
mxs_flexcan_data_entry_single(MX28, _id, _hwid, SZ_8K)
|
||||
mx28_flexcan_data_entry(0, 0),
|
||||
mx28_flexcan_data_entry(1, 1),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX28 */
|
||||
|
||||
struct platform_device *__init mxs_add_flexcan(
|
||||
const struct mxs_flexcan_data *data,
|
||||
const struct flexcan_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + data->iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return mxs_add_platform_device("flexcan", data->id,
|
||||
res, ARRAY_SIZE(res), pdata, sizeof(*pdata));
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
/*
|
||||
* Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License version 2 as published by the
|
||||
* Free Software Foundation.
|
||||
*/
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/init.h>
|
||||
|
||||
#include <mach/mx23.h>
|
||||
#include <mach/mx28.h>
|
||||
#include <mach/devices-common.h>
|
||||
|
||||
struct platform_device *__init mxs_add_gpio(
|
||||
char *name, int id, resource_size_t iobase, int irq)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = iobase,
|
||||
.end = iobase + SZ_8K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = irq,
|
||||
.end = irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return platform_device_register_resndata(&mxs_apbh_bus,
|
||||
name, id, res, ARRAY_SIZE(res), NULL, 0);
|
||||
}
|
|
@ -1,81 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* 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.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
#include <asm/sizes.h>
|
||||
#include <mach/mx23.h>
|
||||
#include <mach/mx28.h>
|
||||
#include <mach/devices-common.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
|
||||
#ifdef CONFIG_SOC_IMX23
|
||||
const struct mxs_gpmi_nand_data mx23_gpmi_nand_data __initconst = {
|
||||
.devid = "imx23-gpmi-nand",
|
||||
.res = {
|
||||
/* GPMI */
|
||||
DEFINE_RES_MEM_NAMED(MX23_GPMI_BASE_ADDR, SZ_8K,
|
||||
GPMI_NAND_GPMI_REGS_ADDR_RES_NAME),
|
||||
DEFINE_RES_IRQ_NAMED(MX23_INT_GPMI_ATTENTION,
|
||||
GPMI_NAND_GPMI_INTERRUPT_RES_NAME),
|
||||
/* BCH */
|
||||
DEFINE_RES_MEM_NAMED(MX23_BCH_BASE_ADDR, SZ_8K,
|
||||
GPMI_NAND_BCH_REGS_ADDR_RES_NAME),
|
||||
DEFINE_RES_IRQ_NAMED(MX23_INT_BCH,
|
||||
GPMI_NAND_BCH_INTERRUPT_RES_NAME),
|
||||
/* DMA */
|
||||
DEFINE_RES_NAMED(MX23_DMA_GPMI0,
|
||||
MX23_DMA_GPMI3 - MX23_DMA_GPMI0 + 1,
|
||||
GPMI_NAND_DMA_CHANNELS_RES_NAME,
|
||||
IORESOURCE_DMA),
|
||||
DEFINE_RES_IRQ_NAMED(MX23_INT_GPMI_DMA,
|
||||
GPMI_NAND_DMA_INTERRUPT_RES_NAME),
|
||||
},
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SOC_IMX28
|
||||
const struct mxs_gpmi_nand_data mx28_gpmi_nand_data __initconst = {
|
||||
.devid = "imx28-gpmi-nand",
|
||||
.res = {
|
||||
/* GPMI */
|
||||
DEFINE_RES_MEM_NAMED(MX28_GPMI_BASE_ADDR, SZ_8K,
|
||||
GPMI_NAND_GPMI_REGS_ADDR_RES_NAME),
|
||||
DEFINE_RES_IRQ_NAMED(MX28_INT_GPMI,
|
||||
GPMI_NAND_GPMI_INTERRUPT_RES_NAME),
|
||||
/* BCH */
|
||||
DEFINE_RES_MEM_NAMED(MX28_BCH_BASE_ADDR, SZ_8K,
|
||||
GPMI_NAND_BCH_REGS_ADDR_RES_NAME),
|
||||
DEFINE_RES_IRQ_NAMED(MX28_INT_BCH,
|
||||
GPMI_NAND_BCH_INTERRUPT_RES_NAME),
|
||||
/* DMA */
|
||||
DEFINE_RES_NAMED(MX28_DMA_GPMI0,
|
||||
MX28_DMA_GPMI7 - MX28_DMA_GPMI0 + 1,
|
||||
GPMI_NAND_DMA_CHANNELS_RES_NAME,
|
||||
IORESOURCE_DMA),
|
||||
DEFINE_RES_IRQ_NAMED(MX28_INT_GPMI_DMA,
|
||||
GPMI_NAND_DMA_INTERRUPT_RES_NAME),
|
||||
},
|
||||
};
|
||||
#endif
|
||||
|
||||
struct platform_device *__init
|
||||
mxs_add_gpmi_nand(const struct gpmi_nand_platform_data *pdata,
|
||||
const struct mxs_gpmi_nand_data *data)
|
||||
{
|
||||
return mxs_add_platform_device_dmamask(data->devid, -1,
|
||||
data->res, GPMI_NAND_RES_SIZE,
|
||||
pdata, sizeof(*pdata), DMA_BIT_MASK(32));
|
||||
}
|
|
@ -1,52 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2011 Pengutronix
|
||||
* Wolfram Sang <w.sang@pengutronix.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License version 2 as published by the
|
||||
* Free Software Foundation.
|
||||
*/
|
||||
#include <asm/sizes.h>
|
||||
#include <mach/mx28.h>
|
||||
#include <mach/devices-common.h>
|
||||
|
||||
#define mxs_i2c_data_entry_single(soc, _id) \
|
||||
{ \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _I2C ## _id ## _BASE_ADDR, \
|
||||
.errirq = soc ## _INT_I2C ## _id ## _ERROR, \
|
||||
.dmairq = soc ## _INT_I2C ## _id ## _DMA, \
|
||||
}
|
||||
|
||||
#define mxs_i2c_data_entry(soc, _id) \
|
||||
[_id] = mxs_i2c_data_entry_single(soc, _id)
|
||||
|
||||
#ifdef CONFIG_SOC_IMX28
|
||||
const struct mxs_mxs_i2c_data mx28_mxs_i2c_data[] __initconst = {
|
||||
mxs_i2c_data_entry(MX28, 0),
|
||||
mxs_i2c_data_entry(MX28, 1),
|
||||
};
|
||||
#endif
|
||||
|
||||
struct platform_device *__init mxs_add_mxs_i2c(
|
||||
const struct mxs_mxs_i2c_data *data)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + SZ_8K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->errirq,
|
||||
.end = data->errirq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}, {
|
||||
.start = data->dmairq,
|
||||
.end = data->dmairq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return mxs_add_platform_device("mxs-i2c", data->id, res,
|
||||
ARRAY_SIZE(res), NULL, 0);
|
||||
}
|
|
@ -1,76 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*
|
||||
* Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License version 2 as published by the
|
||||
* Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/init.h>
|
||||
|
||||
#include <mach/mx23.h>
|
||||
#include <mach/mx28.h>
|
||||
#include <mach/devices-common.h>
|
||||
|
||||
#define mxs_mxs_mmc_data_entry_single(soc, _devid, _id, hwid) \
|
||||
{ \
|
||||
.devid = _devid, \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _SSP ## hwid ## _BASE_ADDR, \
|
||||
.dma = soc ## _DMA_SSP ## hwid, \
|
||||
.irq_err = soc ## _INT_SSP ## hwid ## _ERROR, \
|
||||
.irq_dma = soc ## _INT_SSP ## hwid ## _DMA, \
|
||||
}
|
||||
|
||||
#define mxs_mxs_mmc_data_entry(soc, _devid, _id, hwid) \
|
||||
[_id] = mxs_mxs_mmc_data_entry_single(soc, _devid, _id, hwid)
|
||||
|
||||
|
||||
#ifdef CONFIG_SOC_IMX23
|
||||
const struct mxs_mxs_mmc_data mx23_mxs_mmc_data[] __initconst = {
|
||||
mxs_mxs_mmc_data_entry(MX23, "imx23-mmc", 0, 1),
|
||||
mxs_mxs_mmc_data_entry(MX23, "imx23-mmc", 1, 2),
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SOC_IMX28
|
||||
const struct mxs_mxs_mmc_data mx28_mxs_mmc_data[] __initconst = {
|
||||
mxs_mxs_mmc_data_entry(MX28, "imx28-mmc", 0, 0),
|
||||
mxs_mxs_mmc_data_entry(MX28, "imx28-mmc", 1, 1),
|
||||
mxs_mxs_mmc_data_entry(MX28, "imx28-mmc", 2, 2),
|
||||
mxs_mxs_mmc_data_entry(MX28, "imx28-mmc", 3, 3),
|
||||
};
|
||||
#endif
|
||||
|
||||
struct platform_device *__init mxs_add_mxs_mmc(
|
||||
const struct mxs_mxs_mmc_data *data,
|
||||
const struct mxs_mmc_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + SZ_8K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->dma,
|
||||
.end = data->dma,
|
||||
.flags = IORESOURCE_DMA,
|
||||
}, {
|
||||
.start = data->irq_err,
|
||||
.end = data->irq_err,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}, {
|
||||
.start = data->irq_dma,
|
||||
.end = data->irq_dma,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return mxs_add_platform_device(data->devid, data->id,
|
||||
res, ARRAY_SIZE(res), pdata, sizeof(*pdata));
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Sascha Hauer <s.hauer@pengutronix.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License version 2 as published by the
|
||||
* Free Software Foundation.
|
||||
*/
|
||||
#include <asm/sizes.h>
|
||||
#include <mach/devices-common.h>
|
||||
|
||||
struct platform_device *__init mxs_add_mxs_pwm(resource_size_t iobase, int id)
|
||||
{
|
||||
struct resource res = {
|
||||
.flags = IORESOURCE_MEM,
|
||||
};
|
||||
|
||||
res.start = iobase + 0x10 + 0x20 * id;
|
||||
res.end = res.start + 0x1f;
|
||||
|
||||
return mxs_add_platform_device("mxs-pwm", id, &res, 1, NULL, 0);
|
||||
}
|
|
@ -1,61 +0,0 @@
|
|||
/*
|
||||
* Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License version 2 as published by the
|
||||
* Free Software Foundation.
|
||||
*/
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/init.h>
|
||||
|
||||
#include <mach/mx23.h>
|
||||
#include <mach/mx28.h>
|
||||
#include <mach/devices-common.h>
|
||||
|
||||
#define mxs_saif_data_entry_single(soc, _id) \
|
||||
{ \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _SAIF ## _id ## _BASE_ADDR, \
|
||||
.irq = soc ## _INT_SAIF ## _id, \
|
||||
.dma = soc ## _DMA_SAIF ## _id, \
|
||||
.dmairq = soc ## _INT_SAIF ## _id ##_DMA, \
|
||||
}
|
||||
|
||||
#define mxs_saif_data_entry(soc, _id) \
|
||||
[_id] = mxs_saif_data_entry_single(soc, _id)
|
||||
|
||||
#ifdef CONFIG_SOC_IMX28
|
||||
const struct mxs_saif_data mx28_saif_data[] __initconst = {
|
||||
mxs_saif_data_entry(MX28, 0),
|
||||
mxs_saif_data_entry(MX28, 1),
|
||||
};
|
||||
#endif
|
||||
|
||||
struct platform_device *__init mxs_add_saif(const struct mxs_saif_data *data,
|
||||
const struct mxs_saif_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + SZ_4K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}, {
|
||||
.start = data->dma,
|
||||
.end = data->dma,
|
||||
.flags = IORESOURCE_DMA,
|
||||
}, {
|
||||
.start = data->dmairq,
|
||||
.end = data->dmairq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
return mxs_add_platform_device("mxs-saif", data->id, res,
|
||||
ARRAY_SIZE(res), pdata, sizeof(*pdata));
|
||||
}
|
|
@ -1,47 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2011 Pengutronix, Sascha Hauer <s.hauer@pengutronix.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License version 2 as published by the
|
||||
* Free Software Foundation.
|
||||
*/
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <asm/sizes.h>
|
||||
#include <mach/mx23.h>
|
||||
#include <mach/mx28.h>
|
||||
#include <mach/devices-common.h>
|
||||
#include <linux/mxsfb.h>
|
||||
|
||||
#ifdef CONFIG_SOC_IMX23
|
||||
struct platform_device *__init mx23_add_mxsfb(
|
||||
const struct mxsfb_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = MX23_LCDIF_BASE_ADDR,
|
||||
.end = MX23_LCDIF_BASE_ADDR + SZ_8K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
return mxs_add_platform_device_dmamask("imx23-fb", -1,
|
||||
res, ARRAY_SIZE(res), pdata, sizeof(*pdata), DMA_BIT_MASK(32));
|
||||
}
|
||||
#endif /* ifdef CONFIG_SOC_IMX23 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX28
|
||||
struct platform_device *__init mx28_add_mxsfb(
|
||||
const struct mxsfb_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = MX28_LCDIF_BASE_ADDR,
|
||||
.end = MX28_LCDIF_BASE_ADDR + SZ_8K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
return mxs_add_platform_device_dmamask("imx28-fb", -1,
|
||||
res, ARRAY_SIZE(res), pdata, sizeof(*pdata), DMA_BIT_MASK(32));
|
||||
}
|
||||
#endif /* ifdef CONFIG_SOC_IMX28 */
|
|
@ -1,51 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2011 Pengutronix, Wolfram Sang <w.sang@pengutronix.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License version 2 as published by the
|
||||
* Free Software Foundation.
|
||||
*/
|
||||
#include <asm/sizes.h>
|
||||
#include <mach/mx23.h>
|
||||
#include <mach/mx28.h>
|
||||
#include <mach/devices-common.h>
|
||||
|
||||
#ifdef CONFIG_SOC_IMX23
|
||||
struct platform_device *__init mx23_add_rtc_stmp3xxx(void)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = MX23_RTC_BASE_ADDR,
|
||||
.end = MX23_RTC_BASE_ADDR + SZ_8K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = MX23_INT_RTC_ALARM,
|
||||
.end = MX23_INT_RTC_ALARM,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return mxs_add_platform_device("stmp3xxx-rtc", 0, res, ARRAY_SIZE(res),
|
||||
NULL, 0);
|
||||
}
|
||||
#endif /* CONFIG_SOC_IMX23 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX28
|
||||
struct platform_device *__init mx28_add_rtc_stmp3xxx(void)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = MX28_RTC_BASE_ADDR,
|
||||
.end = MX28_RTC_BASE_ADDR + SZ_8K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = MX28_INT_RTC_ALARM,
|
||||
.end = MX28_INT_RTC_ALARM,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return mxs_add_platform_device("stmp3xxx-rtc", 0, res, ARRAY_SIZE(res),
|
||||
NULL, 0);
|
||||
}
|
||||
#endif /* CONFIG_SOC_IMX28 */
|
|
@ -1,114 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2009-2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License version 2 as published by the
|
||||
* Free Software Foundation.
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/amba/bus.h>
|
||||
|
||||
extern struct device mxs_apbh_bus;
|
||||
|
||||
struct platform_device *mxs_add_platform_device_dmamask(
|
||||
const char *name, int id,
|
||||
const struct resource *res, unsigned int num_resources,
|
||||
const void *data, size_t size_data, u64 dmamask);
|
||||
|
||||
static inline struct platform_device *mxs_add_platform_device(
|
||||
const char *name, int id,
|
||||
const struct resource *res, unsigned int num_resources,
|
||||
const void *data, size_t size_data)
|
||||
{
|
||||
return mxs_add_platform_device_dmamask(
|
||||
name, id, res, num_resources, data, size_data, 0);
|
||||
}
|
||||
|
||||
/* auart */
|
||||
struct mxs_auart_data {
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init mxs_add_auart(
|
||||
const struct mxs_auart_data *data);
|
||||
|
||||
/* fec */
|
||||
#include <linux/fec.h>
|
||||
struct mxs_fec_data {
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init mxs_add_fec(
|
||||
const struct mxs_fec_data *data,
|
||||
const struct fec_platform_data *pdata);
|
||||
|
||||
/* flexcan */
|
||||
#include <linux/can/platform/flexcan.h>
|
||||
struct mxs_flexcan_data {
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init mxs_add_flexcan(
|
||||
const struct mxs_flexcan_data *data,
|
||||
const struct flexcan_platform_data *pdata);
|
||||
|
||||
/* gpmi-nand */
|
||||
#include <linux/mtd/gpmi-nand.h>
|
||||
struct mxs_gpmi_nand_data {
|
||||
const char *devid;
|
||||
const struct resource res[GPMI_NAND_RES_SIZE];
|
||||
};
|
||||
struct platform_device *__init
|
||||
mxs_add_gpmi_nand(const struct gpmi_nand_platform_data *pdata,
|
||||
const struct mxs_gpmi_nand_data *data);
|
||||
|
||||
/* i2c */
|
||||
struct mxs_mxs_i2c_data {
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t errirq;
|
||||
resource_size_t dmairq;
|
||||
};
|
||||
struct platform_device * __init mxs_add_mxs_i2c(
|
||||
const struct mxs_mxs_i2c_data *data);
|
||||
|
||||
/* mmc */
|
||||
#include <linux/mmc/mxs-mmc.h>
|
||||
struct mxs_mxs_mmc_data {
|
||||
const char *devid;
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t dma;
|
||||
resource_size_t irq_err;
|
||||
resource_size_t irq_dma;
|
||||
};
|
||||
struct platform_device *__init mxs_add_mxs_mmc(
|
||||
const struct mxs_mxs_mmc_data *data,
|
||||
const struct mxs_mmc_platform_data *pdata);
|
||||
|
||||
/* pwm */
|
||||
struct platform_device *__init mxs_add_mxs_pwm(
|
||||
resource_size_t iobase, int id);
|
||||
|
||||
/* saif */
|
||||
#include <sound/saif.h>
|
||||
struct mxs_saif_data {
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t irq;
|
||||
resource_size_t dma;
|
||||
resource_size_t dmairq;
|
||||
};
|
||||
|
||||
struct platform_device *__init mxs_add_saif(
|
||||
const struct mxs_saif_data *data,
|
||||
const struct mxs_saif_platform_data *pdata);
|
Загрузка…
Ссылка в новой задаче