|
@@ -490,28 +490,15 @@ static int ds_set_pullup(struct ds_device *dev, int delay)
|
|
|
|
|
|
static int ds_touch_bit(struct ds_device *dev, u8 bit, u8 *tbit)
|
|
static int ds_touch_bit(struct ds_device *dev, u8 bit, u8 *tbit)
|
|
{
|
|
{
|
|
- int err, count;
|
|
|
|
|
|
+ int err;
|
|
struct ds_status st;
|
|
struct ds_status st;
|
|
- u16 value = (COMM_BIT_IO | COMM_IM) | ((bit) ? COMM_D : 0);
|
|
|
|
- u16 cmd;
|
|
|
|
|
|
|
|
- err = ds_send_control(dev, value, 0);
|
|
|
|
|
|
+ err = ds_send_control(dev, COMM_BIT_IO | COMM_IM | (bit ? COMM_D : 0),
|
|
|
|
+ 0);
|
|
if (err)
|
|
if (err)
|
|
return err;
|
|
return err;
|
|
|
|
|
|
- count = 0;
|
|
|
|
- do {
|
|
|
|
- err = ds_wait_status(dev, &st);
|
|
|
|
- if (err)
|
|
|
|
- return err;
|
|
|
|
-
|
|
|
|
- cmd = st.command0 | (st.command1 << 8);
|
|
|
|
- } while (cmd != value && ++count < 10);
|
|
|
|
-
|
|
|
|
- if (err < 0 || count >= 10) {
|
|
|
|
- printk(KERN_ERR "Failed to obtain status.\n");
|
|
|
|
- return -EINVAL;
|
|
|
|
- }
|
|
|
|
|
|
+ ds_wait_status(dev, &st);
|
|
|
|
|
|
err = ds_recv_data(dev, tbit, sizeof(*tbit));
|
|
err = ds_recv_data(dev, tbit, sizeof(*tbit));
|
|
if (err < 0)
|
|
if (err < 0)
|