| .. | .. |
|---|
| 256 | 256 | |
|---|
| 257 | 257 | #define BM_OBE_ENABLED BIT(17) |
|---|
| 258 | 258 | #define BM_IBE_ENABLED BIT(16) |
|---|
| 259 | | -#define BM_LK_ENABLED BIT(15) |
|---|
| 260 | 259 | #define BM_MUX_MODE 0xf00 |
|---|
| 261 | 260 | #define BP_MUX_MODE 8 |
|---|
| 262 | | -#define BM_PULL_ENABLED BIT(1) |
|---|
| 263 | | - |
|---|
| 264 | | -static const struct imx_cfg_params_decode imx7ulp_cfg_decodes[] = { |
|---|
| 265 | | - IMX_CFG_PARAMS_DECODE(PIN_CONFIG_DRIVE_STRENGTH, BIT(6), 6), |
|---|
| 266 | | - IMX_CFG_PARAMS_DECODE(PIN_CONFIG_DRIVE_PUSH_PULL, BIT(5), 5), |
|---|
| 267 | | - IMX_CFG_PARAMS_DECODE(PIN_CONFIG_SLEW_RATE, BIT(2), 2), |
|---|
| 268 | | - IMX_CFG_PARAMS_DECODE(PIN_CONFIG_BIAS_DISABLE, BIT(1), 1), |
|---|
| 269 | | - IMX_CFG_PARAMS_DECODE(PIN_CONFIG_BIAS_PULL_UP, BIT(0), 0), |
|---|
| 270 | | - |
|---|
| 271 | | - IMX_CFG_PARAMS_DECODE_INVERT(PIN_CONFIG_DRIVE_OPEN_DRAIN, BIT(5), 5), |
|---|
| 272 | | - IMX_CFG_PARAMS_DECODE_INVERT(PIN_CONFIG_BIAS_PULL_DOWN, BIT(0), 0), |
|---|
| 273 | | -}; |
|---|
| 274 | | - |
|---|
| 275 | | -static void imx7ulp_cfg_params_fixup(unsigned long *configs, |
|---|
| 276 | | - unsigned int num_configs, |
|---|
| 277 | | - u32 *raw_config) |
|---|
| 278 | | -{ |
|---|
| 279 | | - enum pin_config_param param; |
|---|
| 280 | | - u32 param_val; |
|---|
| 281 | | - int i; |
|---|
| 282 | | - |
|---|
| 283 | | - /* lock field disabled */ |
|---|
| 284 | | - *raw_config &= ~BM_LK_ENABLED; |
|---|
| 285 | | - |
|---|
| 286 | | - for (i = 0; i < num_configs; i++) { |
|---|
| 287 | | - param = pinconf_to_config_param(configs[i]); |
|---|
| 288 | | - param_val = pinconf_to_config_argument(configs[i]); |
|---|
| 289 | | - |
|---|
| 290 | | - if ((param == PIN_CONFIG_BIAS_PULL_UP) || |
|---|
| 291 | | - (param == PIN_CONFIG_BIAS_PULL_DOWN)) { |
|---|
| 292 | | - /* pull enabled */ |
|---|
| 293 | | - *raw_config |= BM_PULL_ENABLED; |
|---|
| 294 | | - |
|---|
| 295 | | - return; |
|---|
| 296 | | - } |
|---|
| 297 | | - } |
|---|
| 298 | | -} |
|---|
| 299 | 261 | |
|---|
| 300 | 262 | static int imx7ulp_pmx_gpio_set_direction(struct pinctrl_dev *pctldev, |
|---|
| 301 | 263 | struct pinctrl_gpio_range *range, |
|---|
| .. | .. |
|---|
| 326 | 288 | .gpio_set_direction = imx7ulp_pmx_gpio_set_direction, |
|---|
| 327 | 289 | .mux_mask = BM_MUX_MODE, |
|---|
| 328 | 290 | .mux_shift = BP_MUX_MODE, |
|---|
| 329 | | - .generic_pinconf = true, |
|---|
| 330 | | - .decodes = imx7ulp_cfg_decodes, |
|---|
| 331 | | - .num_decodes = ARRAY_SIZE(imx7ulp_cfg_decodes), |
|---|
| 332 | | - .fixup = imx7ulp_cfg_params_fixup, |
|---|
| 333 | 291 | }; |
|---|
| 334 | 292 | |
|---|
| 335 | 293 | static const struct of_device_id imx7ulp_pinctrl_of_match[] = { |
|---|