@ -21,6 +21,9 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME);
@@ -21,6 +21,9 @@ LOG_MODULE_REGISTER(LOG_MODULE_NAME);
# define DT_DRV_COMPAT xlnx_ps_gpio_bank
# define DEV_CFG(_dev) ((const struct gpio_xlnx_ps_bank_dev_cfg *)(_dev)->config)
# define DEV_DATA(_dev) ((struct gpio_xlnx_ps_bank_dev_data *const)(_dev)->data)
/**
* @ brief GPIO bank pin configuration function
*
@ -47,7 +50,8 @@ static int gpio_xlnx_ps_pin_configure(const struct device *dev,
@@ -47,7 +50,8 @@ static int gpio_xlnx_ps_pin_configure(const struct device *dev,
gpio_pin_t pin ,
gpio_flags_t flags )
{
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = dev - > config ;
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = DEV_CFG ( dev ) ;
struct gpio_xlnx_ps_bank_dev_data * dev_data = DEV_DATA ( dev ) ;
uint32_t pin_mask = BIT ( pin ) ;
uint32_t bank_data ;
uint32_t dirm_data ;
@ -127,7 +131,8 @@ static int gpio_xlnx_ps_pin_configure(const struct device *dev,
@@ -127,7 +131,8 @@ static int gpio_xlnx_ps_pin_configure(const struct device *dev,
static int gpio_xlnx_ps_bank_get ( const struct device * dev ,
gpio_port_value_t * value )
{
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = dev - > config ;
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = DEV_CFG ( dev ) ;
struct gpio_xlnx_ps_bank_dev_data * dev_data = DEV_DATA ( dev ) ;
* value = sys_read32 ( GPIO_XLNX_PS_BANK_DATA_REG ) ;
return 0 ;
@ -159,7 +164,8 @@ static int gpio_xlnx_ps_bank_set_masked(const struct device *dev,
@@ -159,7 +164,8 @@ static int gpio_xlnx_ps_bank_set_masked(const struct device *dev,
gpio_port_pins_t mask ,
gpio_port_value_t value )
{
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = dev - > config ;
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = DEV_CFG ( dev ) ;
struct gpio_xlnx_ps_bank_dev_data * dev_data = DEV_DATA ( dev ) ;
uint32_t bank_data ;
bank_data = sys_read32 ( GPIO_XLNX_PS_BANK_DATA_REG ) ;
@ -187,7 +193,8 @@ static int gpio_xlnx_ps_bank_set_masked(const struct device *dev,
@@ -187,7 +193,8 @@ static int gpio_xlnx_ps_bank_set_masked(const struct device *dev,
static int gpio_xlnx_ps_bank_set_bits ( const struct device * dev ,
gpio_port_pins_t pins )
{
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = dev - > config ;
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = DEV_CFG ( dev ) ;
struct gpio_xlnx_ps_bank_dev_data * dev_data = DEV_DATA ( dev ) ;
uint32_t bank_data ;
bank_data = sys_read32 ( GPIO_XLNX_PS_BANK_DATA_REG ) ;
@ -215,7 +222,8 @@ static int gpio_xlnx_ps_bank_set_bits(const struct device *dev,
@@ -215,7 +222,8 @@ static int gpio_xlnx_ps_bank_set_bits(const struct device *dev,
static int gpio_xlnx_ps_bank_clear_bits ( const struct device * dev ,
gpio_port_pins_t pins )
{
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = dev - > config ;
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = DEV_CFG ( dev ) ;
struct gpio_xlnx_ps_bank_dev_data * dev_data = DEV_DATA ( dev ) ;
uint32_t bank_data ;
bank_data = sys_read32 ( GPIO_XLNX_PS_BANK_DATA_REG ) ;
@ -243,7 +251,8 @@ static int gpio_xlnx_ps_bank_clear_bits(const struct device *dev,
@@ -243,7 +251,8 @@ static int gpio_xlnx_ps_bank_clear_bits(const struct device *dev,
static int gpio_xlnx_ps_bank_toggle_bits ( const struct device * dev ,
gpio_port_pins_t pins )
{
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = dev - > config ;
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = DEV_CFG ( dev ) ;
struct gpio_xlnx_ps_bank_dev_data * dev_data = DEV_DATA ( dev ) ;
uint32_t bank_data ;
bank_data = sys_read32 ( GPIO_XLNX_PS_BANK_DATA_REG ) ;
@ -282,7 +291,8 @@ static int gpio_xlnx_ps_bank_pin_irq_configure(const struct device *dev,
@@ -282,7 +291,8 @@ static int gpio_xlnx_ps_bank_pin_irq_configure(const struct device *dev,
enum gpio_int_mode mode ,
enum gpio_int_trig trig )
{
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = dev - > config ;
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = DEV_CFG ( dev ) ;
struct gpio_xlnx_ps_bank_dev_data * dev_data = DEV_DATA ( dev ) ;
uint32_t pin_mask = BIT ( pin ) ;
uint32_t int_type_data ;
uint32_t int_polarity_data ;
@ -358,7 +368,8 @@ static int gpio_xlnx_ps_bank_pin_irq_configure(const struct device *dev,
@@ -358,7 +368,8 @@ static int gpio_xlnx_ps_bank_pin_irq_configure(const struct device *dev,
*/
static uint32_t gpio_xlnx_ps_bank_get_int_status ( const struct device * dev )
{
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = dev - > config ;
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = DEV_CFG ( dev ) ;
struct gpio_xlnx_ps_bank_dev_data * dev_data = DEV_DATA ( dev ) ;
uint32_t int_status ;
int_status = sys_read32 ( GPIO_XLNX_PS_BANK_INT_STAT_REG ) ;
@ -387,7 +398,7 @@ static int gpio_xlnx_ps_bank_manage_callback(const struct device *dev,
@@ -387,7 +398,7 @@ static int gpio_xlnx_ps_bank_manage_callback(const struct device *dev,
struct gpio_callback * callback ,
bool set )
{
struct gpio_xlnx_ps_bank_dev_data * dev_data = dev - > data ;
struct gpio_xlnx_ps_bank_dev_data * dev_data = DEV_DATA ( dev ) ;
return gpio_manage_callback ( & dev_data - > callbacks , callback , set ) ;
}
@ -419,7 +430,14 @@ static DEVICE_API(gpio, gpio_xlnx_ps_bank_apis) = {
@@ -419,7 +430,14 @@ static DEVICE_API(gpio, gpio_xlnx_ps_bank_apis) = {
*/
static int gpio_xlnx_ps_bank_init ( const struct device * dev )
{
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = dev - > config ;
const struct gpio_xlnx_ps_bank_dev_cfg * dev_conf = DEV_CFG ( dev ) ;
struct gpio_xlnx_ps_bank_dev_data * dev_data = DEV_DATA ( dev ) ;
__ASSERT ( dev_data - > base ! = 0 , " %s mapped base address missing " , dev - > name ) ;
if ( dev_data - > base = = 0 ) {
LOG_ERR ( " %s mapped base address missing " , dev - > name ) ;
return - EIO ;
}
sys_write32 ( ~ 0x0 , GPIO_XLNX_PS_BANK_INT_DIS_REG ) ; /* Disable all interrupts */
sys_write32 ( ~ 0x0 , GPIO_XLNX_PS_BANK_INT_STAT_REG ) ; /* Clear all interrupts */
@ -436,10 +454,11 @@ static const struct gpio_xlnx_ps_bank_dev_cfg gpio_xlnx_ps_bank##idx##_cfg = {\
@@ -436,10 +454,11 @@ static const struct gpio_xlnx_ps_bank_dev_cfg gpio_xlnx_ps_bank##idx##_cfg = {\
. common = { \
. port_pin_mask = GPIO_PORT_PIN_MASK_FROM_DT_INST ( idx ) , \
} , \
. base_addr = DT_REG_ADDR ( DT_PARENT ( DT_INST ( idx , DT_DRV_COMPAT ) ) ) , \
. bank_index = idx , \
} ; \
static struct gpio_xlnx_ps_bank_dev_data gpio_xlnx_ps_bank # # idx # # _data ; \
static struct gpio_xlnx_ps_bank_dev_data gpio_xlnx_ps_bank # # idx # # _data = { \
. base = 0 , \
} ; \
DEVICE_DT_INST_DEFINE ( idx , gpio_xlnx_ps_bank_init , NULL , \
& gpio_xlnx_ps_bank # # idx # # _data , & gpio_xlnx_ps_bank # # idx # # _cfg , \
PRE_KERNEL_1 , CONFIG_GPIO_INIT_PRIORITY , & gpio_xlnx_ps_bank_apis ) ;