| /* |
| * 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); |
| } |
| |
| int __init mxs_add_amba_device(const struct amba_device *dev); |
| |
| /* duart */ |
| int __init mxs_add_duart(const struct amba_device *dev); |
| |
| /* 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 <mach/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); |