devices-common.h 2.5 KB
Newer Older
R
Rabin Vincent 已提交
1 2 3 4 5 6 7 8 9 10
/*
 * Copyright (C) ST-Ericsson SA 2010
 *
 * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
 * License terms: GNU General Public License (GPL), version 2.
 */

#ifndef __DEVICES_COMMON_H
#define __DEVICES_COMMON_H

11 12 13 14
#include <linux/platform_device.h>
#include <linux/dma-mapping.h>
#include <linux/sys_soc.h>
#include <plat/i2c.h>
R
Rabin Vincent 已提交
15

16 17 18 19
extern struct amba_device *
dbx500_add_amba_device(struct device *parent, const char *name,
		       resource_size_t base, int irq, void *pdata,
		       unsigned int periphid);
R
Rabin Vincent 已提交
20 21 22 23

struct spi_master_cntlr;

static inline struct amba_device *
24 25
dbx500_add_msp_spi(struct device *parent, const char *name,
		   resource_size_t base, int irq,
R
Rabin Vincent 已提交
26 27
		   struct spi_master_cntlr *pdata)
{
28 29
	return dbx500_add_amba_device(parent, name, base, irq,
				      pdata, 0);
R
Rabin Vincent 已提交
30 31 32
}

static inline struct amba_device *
33 34
dbx500_add_spi(struct device *parent, const char *name, resource_size_t base,
	       int irq, struct spi_master_cntlr *pdata,
35
	       u32 periphid)
R
Rabin Vincent 已提交
36
{
37 38
	return dbx500_add_amba_device(parent, name, base, irq,
				      pdata, periphid);
R
Rabin Vincent 已提交
39 40 41 42 43
}

struct mmci_platform_data;

static inline struct amba_device *
44 45
dbx500_add_sdi(struct device *parent, const char *name, resource_size_t base,
	       int irq, struct mmci_platform_data *pdata, u32 periphid)
R
Rabin Vincent 已提交
46
{
47 48
	return dbx500_add_amba_device(parent, name, base, irq,
				      pdata, periphid);
R
Rabin Vincent 已提交
49 50
}

51 52
struct amba_pl011_data;

R
Rabin Vincent 已提交
53
static inline struct amba_device *
54 55
dbx500_add_uart(struct device *parent, const char *name, resource_size_t base,
		int irq, struct amba_pl011_data *pdata)
R
Rabin Vincent 已提交
56
{
57
	return dbx500_add_amba_device(parent, name, base, irq, pdata, 0);
R
Rabin Vincent 已提交
58 59 60 61 62
}

struct nmk_i2c_controller;

static inline struct platform_device *
63
dbx500_add_i2c(struct device *parent, int id, resource_size_t base, int irq,
64
	       struct nmk_i2c_controller *data)
R
Rabin Vincent 已提交
65
{
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
	struct resource res[] = {
		DEFINE_RES_MEM(base, SZ_4K),
		DEFINE_RES_IRQ(irq),
	};

	struct platform_device_info pdevinfo = {
		.parent = parent,
		.name = "nmk-i2c",
		.id = id,
		.res = res,
		.num_res = ARRAY_SIZE(res),
		.data = data,
		.size_data = sizeof(*data),
		.dma_mask = DMA_BIT_MASK(32),
	};

	return platform_device_register_full(&pdevinfo);
R
Rabin Vincent 已提交
83 84 85
}

static inline struct amba_device *
86
dbx500_add_rtc(struct device *parent, resource_size_t base, int irq)
R
Rabin Vincent 已提交
87
{
88
	return dbx500_add_amba_device(parent, "rtc-pl031", base, irq, NULL, 0);
R
Rabin Vincent 已提交
89 90
}

R
Rabin Vincent 已提交
91 92
struct nmk_gpio_platform_data;

93 94
void dbx500_add_gpios(struct device *parent, resource_size_t *base, int num,
		      int irq, struct nmk_gpio_platform_data *pdata);
R
Rabin Vincent 已提交
95

R
Rabin Vincent 已提交
96
#endif