blob: 27f86a1a8d6bccdecfa8782f2e7ccd5a60b1988b [file] [log] [blame]
/*
* Copyright (c) 2021 Telink Semiconductor
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_B91_PINCTRL_COMMON_H_
#define ZEPHYR_B91_PINCTRL_COMMON_H_
/* IDs for GPIO functions */
#define B91_FUNC_A 0x000000
#define B91_FUNC_B 0x010000
#define B91_FUNC_C 0x020000
/* IDs for GPIO Ports */
#define B91_PORT_A 0x0000
#define B91_PORT_B 0x0100
#define B91_PORT_C 0x0200
#define B91_PORT_D 0x0300
#define B91_PORT_E 0x0400
/* IDs for GPIO Pins */
#define B91_PIN_0 0x01
#define B91_PIN_1 0x02
#define B91_PIN_2 0x04
#define B91_PIN_3 0x08
#define B91_PIN_4 0x10
#define B91_PIN_5 0x20
#define B91_PIN_6 0x40
#define B91_PIN_7 0x80
/* Setters and getters */
#define B91_PINMUX_SET(func, port, pin) (func | port | pin)
#define B91_PINMUX_GET_FUNC(pinmux) ((pinmux >> 16) & 0xFF)
#define B91_PINMUX_GET_PIN(pinmux) (pinmux & 0xFFFF)
#define B91_PINMUX_DT_INST_GET_ELEM(idx, x, inst) \
DT_PROP(DT_INST_PINCTRL_BY_IDX(inst, x, idx), pinmux),
#define B91_PINMUX_DT_INST_GET_ARRAY(inst, x) \
{ COND_CODE_1(DT_INST_PINCTRL_HAS_IDX(inst, x), \
(UTIL_LISTIFY(DT_INST_NUM_PINCTRLS_BY_IDX(inst, x), \
B91_PINMUX_DT_INST_GET_ELEM, \
x, \
inst)), \
()) \
}
#endif /* ZEPHYR_B91_PINCTRL_COMMON_H_ */