]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - arch/arm/mach-ux500/devices-common.h
Merge tag 'pinctrl' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[karo-tx-linux.git] / arch / arm / mach-ux500 / devices-common.h
1 /*
2  * Copyright (C) ST-Ericsson SA 2010
3  *
4  * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
5  * License terms: GNU General Public License (GPL), version 2.
6  */
7
8 #ifndef __DEVICES_COMMON_H
9 #define __DEVICES_COMMON_H
10
11 #include <linux/platform_device.h>
12 #include <linux/dma-mapping.h>
13 #include <linux/sys_soc.h>
14 #include <linux/amba/bus.h>
15 #include <plat/i2c.h>
16
17 struct spi_master_cntlr;
18
19 static inline struct amba_device *
20 dbx500_add_msp_spi(struct device *parent, const char *name,
21                    resource_size_t base, int irq,
22                    struct spi_master_cntlr *pdata)
23 {
24         return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0,
25                                    pdata, 0);
26 }
27
28 static inline struct amba_device *
29 dbx500_add_spi(struct device *parent, const char *name, resource_size_t base,
30                int irq, struct spi_master_cntlr *pdata,
31                u32 periphid)
32 {
33         return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0,
34                                    pdata, periphid);
35 }
36
37 struct mmci_platform_data;
38
39 static inline struct amba_device *
40 dbx500_add_sdi(struct device *parent, const char *name, resource_size_t base,
41                int irq, struct mmci_platform_data *pdata, u32 periphid)
42 {
43         return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0,
44                                    pdata, periphid);
45 }
46
47 struct amba_pl011_data;
48
49 static inline struct amba_device *
50 dbx500_add_uart(struct device *parent, const char *name, resource_size_t base,
51                 int irq, struct amba_pl011_data *pdata)
52 {
53         return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0, pdata, 0);
54 }
55
56 struct nmk_i2c_controller;
57
58 static inline struct platform_device *
59 dbx500_add_i2c(struct device *parent, int id, resource_size_t base, int irq,
60                struct nmk_i2c_controller *data)
61 {
62         struct resource res[] = {
63                 DEFINE_RES_MEM(base, SZ_4K),
64                 DEFINE_RES_IRQ(irq),
65         };
66
67         struct platform_device_info pdevinfo = {
68                 .parent = parent,
69                 .name = "nmk-i2c",
70                 .id = id,
71                 .res = res,
72                 .num_res = ARRAY_SIZE(res),
73                 .data = data,
74                 .size_data = sizeof(*data),
75                 .dma_mask = DMA_BIT_MASK(32),
76         };
77
78         return platform_device_register_full(&pdevinfo);
79 }
80
81 static inline struct amba_device *
82 dbx500_add_rtc(struct device *parent, resource_size_t base, int irq)
83 {
84         return amba_apb_device_add(parent, "rtc-pl031", base, SZ_4K, irq,
85                                 0, NULL, 0);
86 }
87
88 struct nmk_gpio_platform_data;
89
90 void dbx500_add_gpios(struct device *parent, resource_size_t *base, int num,
91                       int irq, struct nmk_gpio_platform_data *pdata);
92
93 static inline void
94 dbx500_add_pinctrl(struct device *parent, const char *name)
95 {
96         struct platform_device_info pdevinfo = {
97                 .parent = parent,
98                 .name = name,
99                 .id = -1,
100         };
101
102         platform_device_register_full(&pdevinfo);
103 }
104
105 #endif