Merged in paulpatience/nuttx/gpio (pull request #85)

ioexpander/gpio: Add missing argument to gpin_read and gpout_read
This commit is contained in:
Gregory Nutt 2016-07-05 14:10:50 -06:00
commit 2456014f34
2 changed files with 60 additions and 47 deletions

View File

@ -168,7 +168,7 @@ static int gpio_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
{ {
FAR struct inode *inode; FAR struct inode *inode;
FAR struct gpio_common_dev_s *dev; FAR struct gpio_common_dev_s *dev;
int ret = OK; int ret;
DEBUGASSERT(filep != NULL && filep->f_inode != NULL); DEBUGASSERT(filep != NULL && filep->f_inode != NULL);
inode = filep->f_inode; inode = filep->f_inode;
@ -205,13 +205,17 @@ static int gpio_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
*/ */
case GPIO_READ: case GPIO_READ:
{
FAR int *ptr = (FAR int *)((uintptr_t)arg);
DEBUGASSERT(ptr != NULL);
if (dev->gp_output) if (dev->gp_output)
{ {
FAR struct gpio_output_dev_s *outdev = FAR struct gpio_output_dev_s *outdev =
(FAR struct gpio_output_dev_s *)dev; (FAR struct gpio_output_dev_s *)dev;
DEBUGASSERT(outdev->gpout_read != NULL); DEBUGASSERT(outdev->gpout_read != NULL);
ret = outdev->gpout_read(outdev); ret = outdev->gpout_read(outdev, ptr);
} }
else else
{ {
@ -219,8 +223,17 @@ static int gpio_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
(FAR struct gpio_input_dev_s *)dev; (FAR struct gpio_input_dev_s *)dev;
DEBUGASSERT(indev->gpin_read != NULL); DEBUGASSERT(indev->gpin_read != NULL);
ret = indev->gpin_read(indev); ret = indev->gpin_read(indev, ptr);
} }
DEBUGASSERT(ret < 0 || *ptr == 0 || *ptr == 1);
}
break;
/* Unrecognized command */
default:
ret = -ENOTTY;
break; break;
} }

View File

@ -85,7 +85,7 @@ struct gpio_input_dev_s
/* Fields unique to input pins */ /* Fields unique to input pins */
CODE int (*gpin_read)(FAR struct gpio_input_dev_s *dev); CODE int (*gpin_read)(FAR struct gpio_input_dev_s *dev, FAR int *value);
/* Lower-half private definitions may follow */ /* Lower-half private definitions may follow */
}; };
@ -101,7 +101,7 @@ struct gpio_output_dev_s
/* Fields unique to output pins */ /* Fields unique to output pins */
CODE int (*gpout_read)(FAR struct gpio_output_dev_s *dev); CODE int (*gpout_read)(FAR struct gpio_output_dev_s *dev, FAR int *value);
CODE int (*gpout_write)(FAR struct gpio_output_dev_s *dev, int value); CODE int (*gpout_write)(FAR struct gpio_output_dev_s *dev, int value);
/* Lower-half private definitions may follow */ /* Lower-half private definitions may follow */