162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * This header provides constants specific to AM43XX pinctrl bindings. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#ifndef _DT_BINDINGS_PINCTRL_AM43XX_H 762306a36Sopenharmony_ci#define _DT_BINDINGS_PINCTRL_AM43XX_H 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#define MUX_MODE0 0 1062306a36Sopenharmony_ci#define MUX_MODE1 1 1162306a36Sopenharmony_ci#define MUX_MODE2 2 1262306a36Sopenharmony_ci#define MUX_MODE3 3 1362306a36Sopenharmony_ci#define MUX_MODE4 4 1462306a36Sopenharmony_ci#define MUX_MODE5 5 1562306a36Sopenharmony_ci#define MUX_MODE6 6 1662306a36Sopenharmony_ci#define MUX_MODE7 7 1762306a36Sopenharmony_ci#define MUX_MODE8 8 1862306a36Sopenharmony_ci#define MUX_MODE9 9 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#define PULL_DISABLE (1 << 16) 2162306a36Sopenharmony_ci#define PULL_UP (1 << 17) 2262306a36Sopenharmony_ci#define INPUT_EN (1 << 18) 2362306a36Sopenharmony_ci#define SLEWCTRL_SLOW (1 << 19) 2462306a36Sopenharmony_ci#define SLEWCTRL_FAST 0 2562306a36Sopenharmony_ci#define DS0_FORCE_OFF_MODE (1 << 24) 2662306a36Sopenharmony_ci#define DS0_INPUT (1 << 25) 2762306a36Sopenharmony_ci#define DS0_FORCE_OUT_HIGH (1 << 26) 2862306a36Sopenharmony_ci#define DS0_PULL_UP_DOWN_EN (0 << 27) 2962306a36Sopenharmony_ci#define DS0_PULL_UP_DOWN_DIS (1 << 27) 3062306a36Sopenharmony_ci#define DS0_PULL_UP_SEL (1 << 28) 3162306a36Sopenharmony_ci#define WAKEUP_ENABLE (1 << 29) 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci#define DS0_PIN_OUTPUT (DS0_FORCE_OFF_MODE) 3462306a36Sopenharmony_ci#define DS0_PIN_OUTPUT_HIGH (DS0_FORCE_OFF_MODE | DS0_FORCE_OUT_HIGH) 3562306a36Sopenharmony_ci#define DS0_PIN_OUTPUT_PULLUP (DS0_FORCE_OFF_MODE | DS0_PULL_UP_DOWN_EN | DS0_PULL_UP_SEL) 3662306a36Sopenharmony_ci#define DS0_PIN_OUTPUT_PULLDOWN (DS0_FORCE_OFF_MODE | DS0_PULL_UP_DOWN_EN) 3762306a36Sopenharmony_ci#define DS0_PIN_INPUT (DS0_FORCE_OFF_MODE | DS0_INPUT) 3862306a36Sopenharmony_ci#define DS0_PIN_INPUT_PULLUP (DS0_FORCE_OFF_MODE | DS0_INPUT | DS0_PULL_UP_DOWN_EN | DS0_PULL_UP_SEL) 3962306a36Sopenharmony_ci#define DS0_PIN_INPUT_PULLDOWN (DS0_FORCE_OFF_MODE | DS0_INPUT | DS0_PULL_UP_DOWN_EN) 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci#define PIN_OUTPUT (PULL_DISABLE) 4262306a36Sopenharmony_ci#define PIN_OUTPUT_PULLUP (PULL_UP) 4362306a36Sopenharmony_ci#define PIN_OUTPUT_PULLDOWN 0 4462306a36Sopenharmony_ci#define PIN_INPUT (INPUT_EN | PULL_DISABLE) 4562306a36Sopenharmony_ci#define PIN_INPUT_PULLUP (INPUT_EN | PULL_UP) 4662306a36Sopenharmony_ci#define PIN_INPUT_PULLDOWN (INPUT_EN) 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci/* 4962306a36Sopenharmony_ci * Macro to allow using the absolute physical address instead of the 5062306a36Sopenharmony_ci * padconf registers instead of the offset from padconf base. 5162306a36Sopenharmony_ci */ 5262306a36Sopenharmony_ci#define AM4372_IOPAD(pa, val) (((pa) & 0xffff) - 0x0800) (val) 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci#endif 5562306a36Sopenharmony_ci 56