mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
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
1 changed files with 50 additions and 4 deletions
|
@ -37,6 +37,9 @@
|
||||||
#define LPC18XX_SCU_PIN_EHD_MASK 0x300
|
#define LPC18XX_SCU_PIN_EHD_MASK 0x300
|
||||||
#define LPC18XX_SCU_PIN_EHD_POS 8
|
#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_EFP BIT(0)
|
||||||
#define LPC18XX_SCU_I2C0_EHD BIT(2)
|
#define LPC18XX_SCU_I2C0_EHD BIT(2)
|
||||||
#define LPC18XX_SCU_I2C0_EZI BIT(3)
|
#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)
|
static int lpc18xx_pconf_get_usb1(enum pin_config_param param, int *arg, u32 reg)
|
||||||
{
|
{
|
||||||
/* TODO */
|
switch (param) {
|
||||||
return -ENOTSUPP;
|
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,
|
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,
|
enum pin_config_param param,
|
||||||
u16 param_val, u32 *reg)
|
u16 param_val, u32 *reg)
|
||||||
{
|
{
|
||||||
/* TODO */
|
switch (param) {
|
||||||
return -ENOTSUPP;
|
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,
|
static int lpc18xx_pconf_set_i2c0(struct pinctrl_dev *pctldev,
|
||||||
|
|
Loading…
Reference in a new issue