1*1fe98f82SClément Léger /* SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) */ 2*1fe98f82SClément Léger /* 3*1fe98f82SClément Léger * Copyright (C) 2022 Microchip 4*1fe98f82SClément Léger */ 5*1fe98f82SClément Léger 6*1fe98f82SClément Léger #ifndef _DT_BINDINGS_GPIO_ATMEL_PIOBU_H 7*1fe98f82SClément Léger #define _DT_BINDINGS_GPIO_ATMEL_PIOBU_H 8*1fe98f82SClément Léger 9*1fe98f82SClément Léger #define PIOBU_PIN_AFV_SHIFT 0 10*1fe98f82SClément Léger #define PIOBU_PIN_AFV_MASK 0xF 11*1fe98f82SClément Léger #define PIOBU_PIN_AFV(val) (((val) & PIOBU_PIN_AFV_MASK) >> \ 12*1fe98f82SClément Léger PIOBU_PIN_AFV_SHIFT) 13*1fe98f82SClément Léger 14*1fe98f82SClément Léger #define PIOBU_PIN_RFV_SHIFT 4 15*1fe98f82SClément Léger #define PIOBU_PIN_RFV_MASK 0xF0 16*1fe98f82SClément Léger #define PIOBU_PIN_RFV(val) (((val) & PIOBU_PIN_RFV_MASK) >> \ 17*1fe98f82SClément Léger PIOBU_PIN_RFV_SHIFT) 18*1fe98f82SClément Léger 19*1fe98f82SClément Léger #define PIOBU_PIN_PULL_MODE_SHIFT 8 20*1fe98f82SClément Léger #define PIOBU_PIN_PULL_MODE_MASK (0x3 << PIOBU_PIN_PULL_MODE_SHIFT) 21*1fe98f82SClément Léger #define PIOBU_PIN_PULL_MODE(val) (((val) & PIOBU_PIN_PULL_MODE_MASK) >> \ 22*1fe98f82SClément Léger PIOBU_PIN_PULL_MODE_SHIFT) 23*1fe98f82SClément Léger #define PIOBU_PIN_PULL_NONE 0 24*1fe98f82SClément Léger #define PIOBU_PIN_PULL_UP 1 25*1fe98f82SClément Léger #define PIOBU_PIN_PULL_DOWN 2 26*1fe98f82SClément Léger 27*1fe98f82SClément Léger #define PIOBU_PIN_DEF_LEVEL_SHIFT 10 28*1fe98f82SClément Léger #define PIOBU_PIN_DEF_LEVEL_MASK (BIT(PIOBU_PIN_DEF_LEVEL_SHIFT)) 29*1fe98f82SClément Léger #define PIOBU_PIN_DEF_LEVEL(val) (((val) & PIOBU_PIN_DEF_LEVEL_MASK) >> \ 30*1fe98f82SClément Léger PIOBU_PIN_DEF_LEVEL_SHIFT) 31*1fe98f82SClément Léger #define PIOBU_PIN_DEF_LEVEL_LOW 0 32*1fe98f82SClément Léger #define PIOBU_PIN_DEF_LEVEL_HIGH 1 33*1fe98f82SClément Léger 34*1fe98f82SClément Léger #define PIOBU_PIN_WAKEUP_SHIFT 11 35*1fe98f82SClément Léger #define PIOBU_PIN_WAKEUP_MASK (BIT(PIOBU_PIN_WAKEUP_SHIFT)) 36*1fe98f82SClément Léger #define PIOBU_PIN_WAKEUP(val) (((val) & PIOBU_PIN_WAKEUP_MASK) >> \ 37*1fe98f82SClément Léger PIOBU_PIN_WAKEUP_SHIFT) 38*1fe98f82SClément Léger #define PIOBU_PIN_WAKEUP_DISABLE 0 39*1fe98f82SClément Léger #define PIOBU_PIN_WAKEUP_ENABLE 1 40*1fe98f82SClément Léger 41*1fe98f82SClément Léger #define PIOBU_PIN_INPUT(afv, rfv, pull_mode, def_level, wakeup) \ 42*1fe98f82SClément Léger ((afv) | \ 43*1fe98f82SClément Léger ((rfv) << PIOBU_PIN_RFV_SHIFT) & PIOBU_PIN_RFV_MASK | \ 44*1fe98f82SClément Léger ((pull_mode) << PIOBU_PIN_PULL_MODE_SHIFT) & \ 45*1fe98f82SClément Léger PIOBU_PIN_PULL_MODE_MASK | \ 46*1fe98f82SClément Léger ((def_level) << PIOBU_PIN_DEF_LEVEL_SHIFT) & \ 47*1fe98f82SClément Léger PIOBU_PIN_DEF_LEVEL_MASK | \ 48*1fe98f82SClément Léger ((wakeup) << PIOBU_PIN_WAKEUP_SHIFT) & PIOBU_PIN_WAKEUP_MASK) 49*1fe98f82SClément Léger 50*1fe98f82SClément Léger #endif /* _DT_BINDINGS_GPIO_ATMEL_PIOBU_H */ 51