diff options
author | David Fries <David@Fries.net> | 2014-01-15 23:29:21 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-02-07 18:40:18 -0500 |
commit | f28c4e1f31802ec746a1b1dc0d7ec97f8de47024 (patch) | |
tree | bba1e0419cbed441ea09be8c9d55f99f93d930f3 /drivers/w1 | |
parent | 5dbf5671c73f23c2dd7082c0a14da4e7e902983a (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.c | 23 |
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 | ||
451 | static int ds_wait_status(struct ds_device *dev, struct ds_status *st) | 457 | static 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"); |