devices-common.h 3.7 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
#include <linux/platform_device.h>
#include <linux/dma-mapping.h>
#include <linux/sys_soc.h>
14
#include <linux/amba/bus.h>
15
#include <linux/platform_data/i2c-nomadik.h>
16
#include <mach/crypto-ux500.h>
R
Rabin Vincent 已提交
17 18 19 20

struct spi_master_cntlr;

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

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

struct mmci_platform_data;

static inline struct amba_device *
41 42
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 已提交
43
{
44 45
	return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0,
				   pdata, periphid);
R
Rabin Vincent 已提交
46 47
}

48 49
struct amba_pl011_data;

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

struct nmk_i2c_controller;

static inline struct platform_device *
60
dbx500_add_i2c(struct device *parent, int id, resource_size_t base, int irq,
61
	       struct nmk_i2c_controller *data)
R
Rabin Vincent 已提交
62
{
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
	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 已提交
80 81 82
}

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

89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
struct cryp_platform_data;

static inline struct platform_device *
dbx500_add_cryp1(struct device *parent, int id, resource_size_t base, int irq,
		struct cryp_platform_data *pdata)
{
	struct resource res[] = {
			DEFINE_RES_MEM(base, SZ_4K),
			DEFINE_RES_IRQ(irq),
	};

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

	return platform_device_register_full(&pdevinfo);
}

struct hash_platform_data;

static inline struct platform_device *
dbx500_add_hash1(struct device *parent, int id, resource_size_t base,
		struct hash_platform_data *pdata)
{
	struct resource res[] = {
			DEFINE_RES_MEM(base, SZ_4K),
	};

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

	return platform_device_register_full(&pdevinfo);
}

R
Rabin Vincent 已提交
138 139
struct nmk_gpio_platform_data;

140 141
void dbx500_add_gpios(struct device *parent, resource_size_t *base, int num,
		      int irq, struct nmk_gpio_platform_data *pdata);
R
Rabin Vincent 已提交
142

143 144 145 146 147 148 149 150 151 152 153 154
static inline void
dbx500_add_pinctrl(struct device *parent, const char *name)
{
	struct platform_device_info pdevinfo = {
		.parent = parent,
		.name = name,
		.id = -1,
	};

	platform_device_register_full(&pdevinfo);
}

R
Rabin Vincent 已提交
155
#endif