summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/drivers/include/drivers/pin.h13
-rw-r--r--components/drivers/misc/pin.c13
2 files changed, 9 insertions, 17 deletions
diff --git a/components/drivers/include/drivers/pin.h b/components/drivers/include/drivers/pin.h
index ac35ed3baa..a76798e284 100644
--- a/components/drivers/include/drivers/pin.h
+++ b/components/drivers/include/drivers/pin.h
@@ -50,6 +50,9 @@ struct rt_device_pin
#define PIN_IRQ_MODE_FALLING 0x01
#define PIN_IRQ_MODE_RISING_FALLING 0x02
+#define PIN_IRQ_DISABLE 0x00
+#define PIN_IRQ_ENABLE 0x01
+
#define PIN_IRQ_PIN_NONE -1
struct rt_device_pin_mode
@@ -64,8 +67,8 @@ struct rt_device_pin_status
};
struct rt_pin_irq_hdr
{
- rt_int32_t pin;
- rt_uint32_t mode;
+ rt_int16_t pin;
+ rt_uint16_t mode;
void (*hdr)(void *args);
void *args;
};
@@ -79,8 +82,7 @@ struct rt_pin_ops
rt_err_t (*pin_attach_irq)(struct rt_device *device, rt_int32_t pin,
rt_uint32_t mode, void (*hdr)(void *args), void *args);
rt_err_t (*pin_dettach_irq)(struct rt_device *device, rt_int32_t pin);
- rt_err_t (*pin_irq_enable)(struct rt_device *device, rt_base_t pin);
- rt_err_t (*pin_irq_disable)(struct rt_device *device, rt_base_t pin);
+ rt_err_t (*pin_irq_enable)(struct rt_device *device, rt_base_t pin, rt_uint32_t enabled);
};
int rt_device_pin_register(const char *name, const struct rt_pin_ops *ops, void *user_data);
@@ -91,8 +93,7 @@ int rt_pin_read(rt_base_t pin);
rt_err_t rt_pin_attach_irq(rt_int32_t pin, rt_uint32_t mode,
void (*hdr)(void *args), void *args);
rt_err_t rt_pin_dettach_irq(rt_int32_t pin);
-rt_err_t pin_irq_enable(rt_base_t pin);
-rt_err_t pin_irq_disable(rt_base_t pin);
+rt_err_t pin_irq_enable(rt_base_t pin, rt_uint32_t enabled);
int rt_device_pin_irq_register(const char *name, const struct rt_pin_ops *ops,
void *user_data);
diff --git a/components/drivers/misc/pin.c b/components/drivers/misc/pin.c
index a3232b8e03..fb139575b4 100644
--- a/components/drivers/misc/pin.c
+++ b/components/drivers/misc/pin.c
@@ -117,21 +117,12 @@ rt_err_t rt_pin_dettach_irq(rt_int32_t pin)
}
return RT_ENOSYS;
}
-rt_err_t pin_irq_enable(rt_base_t pin)
+rt_err_t pin_irq_enable(rt_base_t pin, rt_uint32_t enabled)
{
RT_ASSERT(_hw_pin.ops != RT_NULL);
if(_hw_pin.ops->pin_irq_enable)
{
- return _hw_pin.ops->pin_irq_enable(&_hw_pin.parent, pin);
- }
- return RT_ENOSYS;
-}
-rt_err_t pin_irq_disable(rt_base_t pin)
-{
- RT_ASSERT(_hw_pin.ops != RT_NULL);
- if(_hw_pin.ops->pin_irq_disable)
- {
- return _hw_pin.ops->pin_irq_disable(&_hw_pin.parent, pin);
+ return _hw_pin.ops->pin_irq_enable(&_hw_pin.parent, pin, enabled);
}
return RT_ENOSYS;
}