Skip to content
Merged
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
18 changes: 13 additions & 5 deletions drivers/mfd/mfd_npm2100.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,11 @@

#define EVENTS_SIZE 5U

#define GPIO_USAGE_INTLO 0x01U
#define GPIO_USAGE_INTHI 0x02U
#define GPIO_CONFIG_OUTPUT 0x02U
#define GPIO_USAGE_INTLO 0x01U
#define GPIO_USAGE_INTHI 0x02U
#define GPIO_CONFIG_OUTPUT 0x02U
#define GPIO_CONFIG_OPENDRAIN 0x04U
#define GPIO_CONFIG_PULLUP 0x10U

#define RESET_STICKY_PWRBUT 0x04U

Expand Down Expand Up @@ -171,10 +173,17 @@ static int config_pmic_int(const struct device *dev)
{
const struct mfd_npm2100_config *config = dev->config;
uint8_t usage = GPIO_USAGE_INTHI;
uint8_t gpio_config = GPIO_CONFIG_OUTPUT;

if (config->pmic_int_flags & GPIO_ACTIVE_LOW) {
usage = GPIO_USAGE_INTLO;
}
if ((config->pmic_int_flags & GPIO_SINGLE_ENDED) != 0U) {
gpio_config |= GPIO_CONFIG_OPENDRAIN;
}
if (config->pmic_int_flags & GPIO_PULL_UP) {
gpio_config |= GPIO_CONFIG_PULLUP;
}

/* Set specified PMIC pin to be interrupt output */
int ret = i2c_reg_write_byte_dt(&config->i2c, GPIO_USAGE + config->pmic_int_pin, usage);
Expand All @@ -184,8 +193,7 @@ static int config_pmic_int(const struct device *dev)
}

/* Configure PMIC output pin */
return i2c_reg_write_byte_dt(&config->i2c, GPIO_CONFIG + config->pmic_int_pin,
GPIO_CONFIG_OUTPUT);
return i2c_reg_write_byte_dt(&config->i2c, GPIO_CONFIG + config->pmic_int_pin, gpio_config);
}

static int config_shphold(const struct device *dev)
Expand Down