1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
/*
* Copyright (C) ST-Ericsson SA 2011
*
* Author: Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>
*Author: Bartosz Markowski <bartosz.markowski@tieto.com> for ST-Ericsson
* License terms: GNU General Public License (GPL) version 2
*/
#include <linux/kernel.h>
#include <linux/err.h>
#include <linux/platform_device.h>
#include <linux/regulator/consumer.h>
#include <linux/mfd/dbx500-prcmu.h>
#include <asm/mach-types.h>
#include <mach/irqs.h>
#include "pins.h"
#include <mach/cw1200_plat.h>
static void cw1200_release(struct device *dev);
static int cw1200_prcmu_ctrl(const struct cw1200_platform_data *pdata,
bool enable);
static struct resource cw1200_u5500_resources[] = {
{
.start = NOMADIK_GPIO_TO_IRQ(129),
.end = NOMADIK_GPIO_TO_IRQ(129),
.flags = IORESOURCE_IRQ,
.name = "cw1200_irq",
},
};
static struct cw1200_platform_data cw1200_u5500_platform_data = {
.prcmu_ctrl = cw1200_prcmu_ctrl,
};
static struct platform_device cw1200_device = {
.name = "cw1200_wlan",
.dev = {
.platform_data = &cw1200_u5500_platform_data,
.release = cw1200_release,
.init_name = "cw1200_wlan",
},
};
const struct cw1200_platform_data *cw1200_u5500_get_platform_data(void)
{
return &cw1200_u5500_platform_data;
}
EXPORT_SYMBOL_GPL(cw1200_u5500_get_platform_data);
static int cw1200_prcmu_ctrl(const struct cw1200_platform_data *pdata,
bool enable)
{
int ret;
if (enable)
ret = prcmu_resetout(2, 1);
else
ret = prcmu_resetout(2, 0);
return ret;
}
int __init u5500_wlan_init(void)
{
if (machine_is_u5500()) {
cw1200_device.num_resources = ARRAY_SIZE(cw1200_u5500_resources);
cw1200_device.resource = cw1200_u5500_resources;
} else {
dev_err(&cw1200_device.dev,
"Unsupported mach type %d "
"(check mach-types.h)\n",
__machine_arch_type);
return -ENOTSUPP;
}
cw1200_u5500_platform_data.mmc_id = "mmc2";
cw1200_u5500_platform_data.irq = &cw1200_device.resource[0];
cw1200_device.dev.release = cw1200_release;
return platform_device_register(&cw1200_device);
}
static void cw1200_release(struct device *dev)
{
}
|