aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/w1
diff options
context:
space:
mode:
authorDavid Fries <David@Fries.net>2014-01-15 23:29:21 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-02-07 18:40:18 -0500
commitf28c4e1f31802ec746a1b1dc0d7ec97f8de47024 (patch)
treebba1e0419cbed441ea09be8c9d55f99f93d930f3 /drivers/w1
parent5dbf5671c73f23c2dd7082c0a14da4e7e902983a (diff)
w1: ds2490 reduce magic numbers
Use a #define for the usb vendor request type, clear the status byte and use that instead of a magic offset in checking if idle. Signed-off-by: David Fries <David@Fries.net> Acked-by: Evgeniy Polyakov <zbr@ioremap.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/w1')
-rw-r--r--drivers/w1/masters/ds2490.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/drivers/w1/masters/ds2490.c b/drivers/w1/masters/ds2490.c
index 4f7e1d770f81..6a3d0a1e02b8 100644
--- a/drivers/w1/masters/ds2490.c
+++ b/drivers/w1/masters/ds2490.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * dscore.c 2 * ds2490.c USB to one wire bridge
3 * 3 *
4 * Copyright (c) 2004 Evgeniy Polyakov <zbr@ioremap.net> 4 * Copyright (c) 2004 Evgeniy Polyakov <zbr@ioremap.net>
5 * 5 *
@@ -28,6 +28,10 @@
28#include "../w1_int.h" 28#include "../w1_int.h"
29#include "../w1.h" 29#include "../w1.h"
30 30
31/* USB Standard */
32/* USB Control request vendor type */
33#define VENDOR 0x40
34
31/* COMMAND TYPE CODES */ 35/* COMMAND TYPE CODES */
32#define CONTROL_CMD 0x00 36#define CONTROL_CMD 0x00
33#define COMM_CMD 0x01 37#define COMM_CMD 0x01
@@ -107,6 +111,8 @@
107#define ST_HALT 0x10 /* DS2490 is currently halted */ 111#define ST_HALT 0x10 /* DS2490 is currently halted */
108#define ST_IDLE 0x20 /* DS2490 is currently idle */ 112#define ST_IDLE 0x20 /* DS2490 is currently idle */
109#define ST_EPOF 0x80 113#define ST_EPOF 0x80
114/* Status transfer size, 16 bytes status, 16 byte result flags */
115#define ST_SIZE 0x20
110 116
111/* Result Register flags */ 117/* Result Register flags */
112#define RR_DETECT 0xA5 /* New device detected */ 118#define RR_DETECT 0xA5 /* New device detected */
@@ -198,7 +204,7 @@ static int ds_send_control_cmd(struct ds_device *dev, u16 value, u16 index)
198 int err; 204 int err;
199 205
200 err = usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, dev->ep[EP_CONTROL]), 206 err = usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, dev->ep[EP_CONTROL]),
201 CONTROL_CMD, 0x40, value, index, NULL, 0, 1000); 207 CONTROL_CMD, VENDOR, value, index, NULL, 0, 1000);
202 if (err < 0) { 208 if (err < 0) {
203 printk(KERN_ERR "Failed to send command control message %x.%x: err=%d.\n", 209 printk(KERN_ERR "Failed to send command control message %x.%x: err=%d.\n",
204 value, index, err); 210 value, index, err);
@@ -213,7 +219,7 @@ static int ds_send_control_mode(struct ds_device *dev, u16 value, u16 index)
213 int err; 219 int err;
214 220
215 err = usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, dev->ep[EP_CONTROL]), 221 err = usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, dev->ep[EP_CONTROL]),
216 MODE_CMD, 0x40, value, index, NULL, 0, 1000); 222 MODE_CMD, VENDOR, value, index, NULL, 0, 1000);
217 if (err < 0) { 223 if (err < 0) {
218 printk(KERN_ERR "Failed to send mode control message %x.%x: err=%d.\n", 224 printk(KERN_ERR "Failed to send mode control message %x.%x: err=%d.\n",
219 value, index, err); 225 value, index, err);
@@ -228,7 +234,7 @@ static int ds_send_control(struct ds_device *dev, u16 value, u16 index)
228 int err; 234 int err;
229 235
230 err = usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, dev->ep[EP_CONTROL]), 236 err = usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, dev->ep[EP_CONTROL]),
231 COMM_CMD, 0x40, value, index, NULL, 0, 1000); 237 COMM_CMD, VENDOR, value, index, NULL, 0, 1000);
232 if (err < 0) { 238 if (err < 0) {
233 printk(KERN_ERR "Failed to send control message %x.%x: err=%d.\n", 239 printk(KERN_ERR "Failed to send control message %x.%x: err=%d.\n",
234 value, index, err); 240 value, index, err);
@@ -353,7 +359,7 @@ static int ds_recv_data(struct ds_device *dev, unsigned char *buf, int size)
353 err = usb_bulk_msg(dev->udev, usb_rcvbulkpipe(dev->udev, dev->ep[EP_DATA_IN]), 359 err = usb_bulk_msg(dev->udev, usb_rcvbulkpipe(dev->udev, dev->ep[EP_DATA_IN]),
354 buf, size, &count, 1000); 360 buf, size, &count, 1000);
355 if (err < 0) { 361 if (err < 0) {
356 u8 buf[0x20]; 362 u8 buf[ST_SIZE];
357 int count; 363 int count;
358 364
359 printk(KERN_INFO "Clearing ep0x%x.\n", dev->ep[EP_DATA_IN]); 365 printk(KERN_INFO "Clearing ep0x%x.\n", dev->ep[EP_DATA_IN]);
@@ -398,7 +404,7 @@ int ds_stop_pulse(struct ds_device *dev, int limit)
398{ 404{
399 struct ds_status st; 405 struct ds_status st;
400 int count = 0, err = 0; 406 int count = 0, err = 0;
401 u8 buf[0x20]; 407 u8 buf[ST_SIZE];
402 408
403 do { 409 do {
404 err = ds_send_control(dev, CTL_HALT_EXE_IDLE, 0); 410 err = ds_send_control(dev, CTL_HALT_EXE_IDLE, 0);
@@ -450,10 +456,11 @@ int ds_detect(struct ds_device *dev, struct ds_status *st)
450 456
451static int ds_wait_status(struct ds_device *dev, struct ds_status *st) 457static int ds_wait_status(struct ds_device *dev, struct ds_status *st)
452{ 458{
453 u8 buf[0x20]; 459 u8 buf[ST_SIZE];
454 int err, count = 0; 460 int err, count = 0;
455 461
456 do { 462 do {
463 st->status = 0;
457 err = ds_recv_status_nodump(dev, st, buf, sizeof(buf)); 464 err = ds_recv_status_nodump(dev, st, buf, sizeof(buf));
458#if 0 465#if 0
459 if (err >= 0) { 466 if (err >= 0) {
@@ -464,7 +471,7 @@ static int ds_wait_status(struct ds_device *dev, struct ds_status *st)
464 printk("\n"); 471 printk("\n");
465 } 472 }
466#endif 473#endif
467 } while (!(buf[0x08] & ST_IDLE) && !(err < 0) && ++count < 100); 474 } while (!(st->status & ST_IDLE) && !(err < 0) && ++count < 100);
468 475
469 if (err >= 16 && st->status & ST_EPOF) { 476 if (err >= 16 && st->status & ST_EPOF) {
470 printk(KERN_INFO "Resetting device after ST_EPOF.\n"); 477 printk(KERN_INFO "Resetting device after ST_EPOF.\n");