mirror of https://gitee.com/openkylin/linux.git
pinctrl: lpc18xx: add support for usb1 pinconf
The dedicated USB1 pins can be configured with pull-down and for low power mode (suspend). Add support for this in the pinctrl driver. Signed-off-by: Joachim Eastwood <manabian@gmail.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
d96310aedd
commit
bd6eab9007
|
@ -37,6 +37,9 @@
|
|||
#define LPC18XX_SCU_PIN_EHD_MASK 0x300
|
||||
#define LPC18XX_SCU_PIN_EHD_POS 8
|
||||
|
||||
#define LPC18XX_SCU_USB1_EPD BIT(2)
|
||||
#define LPC18XX_SCU_USB1_EPWR BIT(4)
|
||||
|
||||
#define LPC18XX_SCU_I2C0_EFP BIT(0)
|
||||
#define LPC18XX_SCU_I2C0_EHD BIT(2)
|
||||
#define LPC18XX_SCU_I2C0_EZI BIT(3)
|
||||
|
@ -617,8 +620,31 @@ static const struct pinctrl_pin_desc lpc18xx_pins[] = {
|
|||
|
||||
static int lpc18xx_pconf_get_usb1(enum pin_config_param param, int *arg, u32 reg)
|
||||
{
|
||||
/* TODO */
|
||||
return -ENOTSUPP;
|
||||
switch (param) {
|
||||
case PIN_CONFIG_LOW_POWER_MODE:
|
||||
if (reg & LPC18XX_SCU_USB1_EPWR)
|
||||
*arg = 0;
|
||||
else
|
||||
*arg = 1;
|
||||
break;
|
||||
|
||||
case PIN_CONFIG_BIAS_DISABLE:
|
||||
if (reg & LPC18XX_SCU_USB1_EPD)
|
||||
return -EINVAL;
|
||||
break;
|
||||
|
||||
case PIN_CONFIG_BIAS_PULL_DOWN:
|
||||
if (reg & LPC18XX_SCU_USB1_EPD)
|
||||
*arg = 1;
|
||||
else
|
||||
return -EINVAL;
|
||||
break;
|
||||
|
||||
default:
|
||||
return -ENOTSUPP;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int lpc18xx_pconf_get_i2c0(enum pin_config_param param, int *arg, u32 reg,
|
||||
|
@ -782,8 +808,28 @@ static int lpc18xx_pconf_set_usb1(struct pinctrl_dev *pctldev,
|
|||
enum pin_config_param param,
|
||||
u16 param_val, u32 *reg)
|
||||
{
|
||||
/* TODO */
|
||||
return -ENOTSUPP;
|
||||
switch (param) {
|
||||
case PIN_CONFIG_LOW_POWER_MODE:
|
||||
if (param_val)
|
||||
*reg &= ~LPC18XX_SCU_USB1_EPWR;
|
||||
else
|
||||
*reg |= LPC18XX_SCU_USB1_EPWR;
|
||||
break;
|
||||
|
||||
case PIN_CONFIG_BIAS_DISABLE:
|
||||
*reg &= ~LPC18XX_SCU_USB1_EPD;
|
||||
break;
|
||||
|
||||
case PIN_CONFIG_BIAS_PULL_DOWN:
|
||||
*reg |= LPC18XX_SCU_USB1_EPD;
|
||||
break;
|
||||
|
||||
default:
|
||||
dev_err(pctldev->dev, "Property not supported\n");
|
||||
return -ENOTSUPP;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int lpc18xx_pconf_set_i2c0(struct pinctrl_dev *pctldev,
|
||||
|
|
Loading…
Reference in New Issue