drivers: gpio: mcux: add drive strength flags support
Add support for setting high/low GPIO output drive strength. Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
This commit is contained in:
parent
52c298e0e3
commit
0acb38adf1
1 changed files with 16 additions and 0 deletions
|
@ -96,6 +96,22 @@ static int gpio_mcux_configure(const struct device *dev,
|
|||
pcr |= PORT_PCR_PE_MASK;
|
||||
}
|
||||
|
||||
#if defined(FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH) && FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH
|
||||
/* Determine the drive strength */
|
||||
switch (flags & (GPIO_DS_LOW_MASK | GPIO_DS_HIGH_MASK)) {
|
||||
case GPIO_DS_DFLT_LOW | GPIO_DS_DFLT_HIGH:
|
||||
/* Default is low drive strength */
|
||||
mask |= PORT_PCR_DSE_MASK;
|
||||
break;
|
||||
case GPIO_DS_ALT_LOW | GPIO_DS_ALT_HIGH:
|
||||
/* Alternate is high drive strength */
|
||||
pcr |= PORT_PCR_DSE_MASK;
|
||||
break;
|
||||
default:
|
||||
return -ENOTSUP;
|
||||
}
|
||||
#endif /* defined(FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH) && FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH */
|
||||
|
||||
/* Accessing by pin, we only need to write one PCR register. */
|
||||
port_base->PCR[pin] = (port_base->PCR[pin] & ~mask) | pcr;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue