162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/* Include file for the EP93XX GPIO controller machine specifics */
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#ifndef __GPIO_EP93XX_H
562306a36Sopenharmony_ci#define __GPIO_EP93XX_H
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include "ep93xx-regs.h"
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#define EP93XX_GPIO_PHYS_BASE		EP93XX_APB_PHYS(0x00040000)
1062306a36Sopenharmony_ci#define EP93XX_GPIO_BASE		EP93XX_APB_IOMEM(0x00040000)
1162306a36Sopenharmony_ci#define EP93XX_GPIO_REG(x)		(EP93XX_GPIO_BASE + (x))
1262306a36Sopenharmony_ci#define EP93XX_GPIO_F_INT_STATUS	EP93XX_GPIO_REG(0x5c)
1362306a36Sopenharmony_ci#define EP93XX_GPIO_A_INT_STATUS	EP93XX_GPIO_REG(0xa0)
1462306a36Sopenharmony_ci#define EP93XX_GPIO_B_INT_STATUS	EP93XX_GPIO_REG(0xbc)
1562306a36Sopenharmony_ci#define EP93XX_GPIO_EEDRIVE		EP93XX_GPIO_REG(0xc8)
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci/* GPIO port A.  */
1862306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_A(x)		((x) + 0)
1962306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO0		EP93XX_GPIO_LINE_A(0)
2062306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO1		EP93XX_GPIO_LINE_A(1)
2162306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO2		EP93XX_GPIO_LINE_A(2)
2262306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO3		EP93XX_GPIO_LINE_A(3)
2362306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO4		EP93XX_GPIO_LINE_A(4)
2462306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO5		EP93XX_GPIO_LINE_A(5)
2562306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO6		EP93XX_GPIO_LINE_A(6)
2662306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO7		EP93XX_GPIO_LINE_A(7)
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci/* GPIO port B.  */
2962306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_B(x)		((x) + 8)
3062306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO8		EP93XX_GPIO_LINE_B(0)
3162306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO9		EP93XX_GPIO_LINE_B(1)
3262306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO10	EP93XX_GPIO_LINE_B(2)
3362306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO11	EP93XX_GPIO_LINE_B(3)
3462306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO12	EP93XX_GPIO_LINE_B(4)
3562306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO13	EP93XX_GPIO_LINE_B(5)
3662306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO14	EP93XX_GPIO_LINE_B(6)
3762306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EGPIO15	EP93XX_GPIO_LINE_B(7)
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci/* GPIO port C.  */
4062306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_C(x)		((x) + 40)
4162306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_ROW0		EP93XX_GPIO_LINE_C(0)
4262306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_ROW1		EP93XX_GPIO_LINE_C(1)
4362306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_ROW2		EP93XX_GPIO_LINE_C(2)
4462306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_ROW3		EP93XX_GPIO_LINE_C(3)
4562306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_ROW4		EP93XX_GPIO_LINE_C(4)
4662306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_ROW5		EP93XX_GPIO_LINE_C(5)
4762306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_ROW6		EP93XX_GPIO_LINE_C(6)
4862306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_ROW7		EP93XX_GPIO_LINE_C(7)
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci/* GPIO port D.  */
5162306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_D(x)		((x) + 24)
5262306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_COL0		EP93XX_GPIO_LINE_D(0)
5362306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_COL1		EP93XX_GPIO_LINE_D(1)
5462306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_COL2		EP93XX_GPIO_LINE_D(2)
5562306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_COL3		EP93XX_GPIO_LINE_D(3)
5662306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_COL4		EP93XX_GPIO_LINE_D(4)
5762306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_COL5		EP93XX_GPIO_LINE_D(5)
5862306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_COL6		EP93XX_GPIO_LINE_D(6)
5962306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_COL7		EP93XX_GPIO_LINE_D(7)
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci/* GPIO port E.  */
6262306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_E(x)		((x) + 32)
6362306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_GRLED		EP93XX_GPIO_LINE_E(0)
6462306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_RDLED		EP93XX_GPIO_LINE_E(1)
6562306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_DIORn		EP93XX_GPIO_LINE_E(2)
6662306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_IDECS1n	EP93XX_GPIO_LINE_E(3)
6762306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_IDECS2n	EP93XX_GPIO_LINE_E(4)
6862306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_IDEDA0		EP93XX_GPIO_LINE_E(5)
6962306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_IDEDA1		EP93XX_GPIO_LINE_E(6)
7062306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_IDEDA2		EP93XX_GPIO_LINE_E(7)
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci/* GPIO port F.  */
7362306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_F(x)		((x) + 16)
7462306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_WP		EP93XX_GPIO_LINE_F(0)
7562306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_MCCD1		EP93XX_GPIO_LINE_F(1)
7662306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_MCCD2		EP93XX_GPIO_LINE_F(2)
7762306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_MCBVD1		EP93XX_GPIO_LINE_F(3)
7862306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_MCBVD2		EP93XX_GPIO_LINE_F(4)
7962306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_VS1		EP93XX_GPIO_LINE_F(5)
8062306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_READY		EP93XX_GPIO_LINE_F(6)
8162306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_VS2		EP93XX_GPIO_LINE_F(7)
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci/* GPIO port G.  */
8462306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_G(x)		((x) + 48)
8562306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EECLK		EP93XX_GPIO_LINE_G(0)
8662306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_EEDAT		EP93XX_GPIO_LINE_G(1)
8762306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_SLA0		EP93XX_GPIO_LINE_G(2)
8862306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_SLA1		EP93XX_GPIO_LINE_G(3)
8962306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_DD12		EP93XX_GPIO_LINE_G(4)
9062306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_DD13		EP93XX_GPIO_LINE_G(5)
9162306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_DD14		EP93XX_GPIO_LINE_G(6)
9262306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_DD15		EP93XX_GPIO_LINE_G(7)
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci/* GPIO port H.  */
9562306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_H(x)		((x) + 56)
9662306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_DD0		EP93XX_GPIO_LINE_H(0)
9762306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_DD1		EP93XX_GPIO_LINE_H(1)
9862306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_DD2		EP93XX_GPIO_LINE_H(2)
9962306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_DD3		EP93XX_GPIO_LINE_H(3)
10062306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_DD4		EP93XX_GPIO_LINE_H(4)
10162306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_DD5		EP93XX_GPIO_LINE_H(5)
10262306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_DD6		EP93XX_GPIO_LINE_H(6)
10362306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_DD7		EP93XX_GPIO_LINE_H(7)
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci/* maximum value for gpio line identifiers */
10662306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_MAX		EP93XX_GPIO_LINE_H(7)
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci/* maximum value for irq capable line identifiers */
10962306a36Sopenharmony_ci#define EP93XX_GPIO_LINE_MAX_IRQ	EP93XX_GPIO_LINE_F(7)
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci#endif /* __GPIO_EP93XX_H */
112