Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions components/drivers/include/drivers/dev_pin.h
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ struct rt_pin_ops
#endif
#ifdef RT_USING_PINCTRL
rt_err_t (*pin_ctrl_confs_apply)(struct rt_device *device, void *fw_conf_np);
rt_err_t (*pin_ctrl_gpio_request)(struct rt_device *device, rt_base_t gpio, rt_uint32_t flags);
#endif /* RT_USING_PINCTRL */
};

Expand Down
8 changes: 7 additions & 1 deletion components/drivers/pin/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@ menuconfig RT_USING_PIN
bool "Using Generic GPIO device drivers"
default y

if RT_USING_PIN
config RT_PIN_PL061
bool "ARM PL061"
depends on RT_USING_DM
depends on RT_USING_PIN
default n

if RT_USING_DM && RT_USING_PIN
osource "$(SOC_DM_PIN_DIR)/Kconfig"
endif
3 changes: 3 additions & 0 deletions components/drivers/pin/SConscript
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ if GetDepend(['RT_USING_DM']):
if GetDepend(['RT_USING_OFW']):
src += ['dev_pin_ofw.c']

if GetDepend(['RT_PIN_PL061']):
src += ['pin-pl061.c']

group = DefineGroup('DeviceDrivers', src, depend = [''], CPPPATH = CPPPATH)

Return('group')
17 changes: 17 additions & 0 deletions components/drivers/pin/dev_pin_dm.c
Original file line number Diff line number Diff line change
Expand Up @@ -456,3 +456,20 @@ rt_ssize_t rt_pin_get_named_pin_count(struct rt_device *dev, const char *propnam

return count;
}

#ifdef RT_USING_PINCTRL
rt_err_t pin_gpio_request(struct rt_device_pin *pinctrl, rt_base_t gpio, rt_uint32_t flags)
{
if (!pinctrl || gpio < 0)
{
return -RT_EINVAL;
}

if (pinctrl->ops->pin_ctrl_gpio_request)
{
return pinctrl->ops->pin_ctrl_gpio_request(&pinctrl->parent, gpio, flags);
}

return RT_EOK;
}
#endif /* RT_USING_PINCTRL */
38 changes: 38 additions & 0 deletions components/drivers/pin/dev_pin_dm.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,47 @@
#include <rtthread.h>
#include <rtdevice.h>

/**
* Bind GPIO pin to system PIN API
*
* @param gpio Pin device
* @param pin_nr GPIO pin number
*
* @return RT_EOK on success, error code otherwise
*/
rt_err_t pin_api_init(struct rt_device_pin *gpio, rt_size_t pin_nr);

/**
* Bind GPIO pin to system PIN PIC
*
* @param gpio Pin device
* @param pin_irq GPIO irqno
*
* @return RT_EOK on success, error code otherwise
*/
rt_err_t pin_pic_init(struct rt_device_pin *gpio, int pin_irq);

/**
* Handle GPIO one pin's ISR
*
* @param gpio Pin device
* @param pin GPIO pin
*
* @return RT_EOK on success, error code otherwise
*/
rt_err_t pin_pic_handle_isr(struct rt_device_pin *gpio, rt_base_t pin);

#ifdef RT_USING_PINCTRL
/**
* Request GPIO pin configuration from pinctrl
*
* @param pinctrl Pinctrl device
* @param gpio GPIO pin number
* @param flags GPIO configuration flags
*
* @return RT_EOK on success, error code otherwise
*/
rt_err_t pin_gpio_request(struct rt_device_pin *pinctrl, rt_base_t gpio, rt_uint32_t flags);
#endif

#endif /* __DEV_PIN_DM_H__ */
Loading