aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2013-02-11 15:30:47 -0500
committerJohn W. Linville <linville@tuxdriver.com>2013-02-11 15:32:21 -0500
commit5d8eac3ad982ee32e3dee56626ba3d1fc577fcbc (patch)
tree354c294c7eea0af66cd72036deff5f8c6ec6d53b
parent8708aac79e4572ba673d7a21e94ddca9f3abb7fc (diff)
parentcd48d8ba149484c4723a2b75159deeb83f3d2273 (diff)
Merge tag 'nfc-next-3.9-3' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/nfc-next
Samuel Ortiz <sameo@linux.intel.com> says: "This 3rd NFC pull request for 3.9 contains a fix for the microread MEI physical layer support, as the MEI bus API changed. From the MEI code, we now pass the MEI id back to the driver probe routine, and we also pass a name and a MEI id table through the mei_bus_driver structure. A few renames as well like e.g. mei_bus_driver to mei_driver or mei_bus_client to mei_device in order to be closer to the driver model practices." Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/nfc/microread/mei.c43
1 files changed, 24 insertions, 19 deletions
diff --git a/drivers/nfc/microread/mei.c b/drivers/nfc/microread/mei.c
index c078e56d7d14..eef38cfd812e 100644
--- a/drivers/nfc/microread/mei.c
+++ b/drivers/nfc/microread/mei.c
@@ -48,7 +48,7 @@ struct mei_nfc_hdr {
48#define MEI_NFC_MAX_READ (MEI_NFC_HEADER_SIZE + MEI_NFC_MAX_HCI_PAYLOAD) 48#define MEI_NFC_MAX_READ (MEI_NFC_HEADER_SIZE + MEI_NFC_MAX_HCI_PAYLOAD)
49 49
50struct microread_mei_phy { 50struct microread_mei_phy {
51 struct mei_bus_client *client; 51 struct mei_device *mei_device;
52 struct nfc_hci_dev *hdev; 52 struct nfc_hci_dev *hdev;
53 53
54 int powered; 54 int powered;
@@ -105,14 +105,14 @@ static int microread_mei_write(void *phy_id, struct sk_buff *skb)
105 105
106 MEI_DUMP_SKB_OUT("mei frame sent", skb); 106 MEI_DUMP_SKB_OUT("mei frame sent", skb);
107 107
108 r = mei_bus_send(phy->client, skb->data, skb->len); 108 r = mei_send(phy->device, skb->data, skb->len);
109 if (r > 0) 109 if (r > 0)
110 r = 0; 110 r = 0;
111 111
112 return r; 112 return r;
113} 113}
114 114
115static void microread_event_cb(struct mei_bus_client *client, u32 events, 115static void microread_event_cb(struct mei_device *device, u32 events,
116 void *context) 116 void *context)
117{ 117{
118 struct microread_mei_phy *phy = context; 118 struct microread_mei_phy *phy = context;
@@ -120,7 +120,7 @@ static void microread_event_cb(struct mei_bus_client *client, u32 events,
120 if (phy->hard_fault != 0) 120 if (phy->hard_fault != 0)
121 return; 121 return;
122 122
123 if (events & BIT(MEI_BUS_EVENT_RX)) { 123 if (events & BIT(MEI_EVENT_RX)) {
124 struct sk_buff *skb; 124 struct sk_buff *skb;
125 int reply_size; 125 int reply_size;
126 126
@@ -128,7 +128,7 @@ static void microread_event_cb(struct mei_bus_client *client, u32 events,
128 if (!skb) 128 if (!skb)
129 return; 129 return;
130 130
131 reply_size = mei_bus_recv(client, skb->data, MEI_NFC_MAX_READ); 131 reply_size = mei_recv(device, skb->data, MEI_NFC_MAX_READ);
132 if (reply_size < MEI_NFC_HEADER_SIZE) { 132 if (reply_size < MEI_NFC_HEADER_SIZE) {
133 kfree(skb); 133 kfree(skb);
134 return; 134 return;
@@ -149,7 +149,8 @@ static struct nfc_phy_ops mei_phy_ops = {
149 .disable = microread_mei_disable, 149 .disable = microread_mei_disable,
150}; 150};
151 151
152static int microread_mei_probe(struct mei_bus_client *client) 152static int microread_mei_probe(struct mei_device *device,
153 const struct mei_id *id)
153{ 154{
154 struct microread_mei_phy *phy; 155 struct microread_mei_phy *phy;
155 int r; 156 int r;
@@ -162,10 +163,10 @@ static int microread_mei_probe(struct mei_bus_client *client)
162 return -ENOMEM; 163 return -ENOMEM;
163 } 164 }
164 165
165 phy->client = client; 166 phy->device = device;
166 mei_bus_set_clientdata(client, phy); 167 mei_set_clientdata(device, phy);
167 168
168 r = mei_bus_register_event_cb(client, microread_event_cb, phy); 169 r = mei_register_event_cb(device, microread_event_cb, phy);
169 if (r) { 170 if (r) {
170 pr_err(MICROREAD_DRIVER_NAME ": event cb registration failed\n"); 171 pr_err(MICROREAD_DRIVER_NAME ": event cb registration failed\n");
171 goto err_out; 172 goto err_out;
@@ -185,9 +186,9 @@ err_out:
185 return r; 186 return r;
186} 187}
187 188
188static int microread_mei_remove(struct mei_bus_client *client) 189static int microread_mei_remove(struct mei_device *device)
189{ 190{
190 struct microread_mei_phy *phy = mei_bus_get_clientdata(client); 191 struct microread_mei_phy *phy = mei_get_clientdata(device);
191 192
192 pr_info("Removing microread\n"); 193 pr_info("Removing microread\n");
193 194
@@ -201,14 +202,18 @@ static int microread_mei_remove(struct mei_bus_client *client)
201 return 0; 202 return 0;
202} 203}
203 204
204static struct mei_bus_driver microread_driver = { 205static struct mei_id microread_mei_tbl[] = {
205 .driver = { 206 { MICROREAD_DRIVER_NAME, MICROREAD_UUID },
206 .name = MICROREAD_DRIVER_NAME, 207
207 }, 208 /* required last entry */
208 .id = { 209 { }
209 .name = MICROREAD_DRIVER_NAME, 210};
210 .uuid = MICROREAD_UUID, 211
211 }, 212MODULE_DEVICE_TABLE(mei, microread_mei_tbl);
213
214static struct mei_driver microread_driver = {
215 .id_table = microread_mei_tbl,
216 .name = MICROREAD_DRIVER_NAME,
212 217
213 .probe = microread_mei_probe, 218 .probe = microread_mei_probe,
214 .remove = microread_mei_remove, 219 .remove = microread_mei_remove,