123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358 |
- /*
- * Copyright (c) 2021-2023 HPMicro
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
- #ifndef HPM_IOC_H
- #define HPM_IOC_H
- typedef struct {
- struct {
- __RW uint32_t FUNC_CTL; /* 0x0: ALT SELECT */
- __RW uint32_t PAD_CTL; /* 0x4: PAD SETTINGS */
- } PAD[492];
- } IOC_Type;
- /* Bitfield definition for register of struct array PAD: FUNC_CTL */
- /*
- * LOOP_BACK (RW)
- *
- * force input on
- * 0: disable
- * 1: enable
- */
- #define IOC_PAD_FUNC_CTL_LOOP_BACK_MASK (0x10000UL)
- #define IOC_PAD_FUNC_CTL_LOOP_BACK_SHIFT (16U)
- #define IOC_PAD_FUNC_CTL_LOOP_BACK_SET(x) (((uint32_t)(x) << IOC_PAD_FUNC_CTL_LOOP_BACK_SHIFT) & IOC_PAD_FUNC_CTL_LOOP_BACK_MASK)
- #define IOC_PAD_FUNC_CTL_LOOP_BACK_GET(x) (((uint32_t)(x) & IOC_PAD_FUNC_CTL_LOOP_BACK_MASK) >> IOC_PAD_FUNC_CTL_LOOP_BACK_SHIFT)
- /*
- * ANALOG (RW)
- *
- * select analog pin in pad
- * 0: disable
- * 1: enable
- */
- #define IOC_PAD_FUNC_CTL_ANALOG_MASK (0x100U)
- #define IOC_PAD_FUNC_CTL_ANALOG_SHIFT (8U)
- #define IOC_PAD_FUNC_CTL_ANALOG_SET(x) (((uint32_t)(x) << IOC_PAD_FUNC_CTL_ANALOG_SHIFT) & IOC_PAD_FUNC_CTL_ANALOG_MASK)
- #define IOC_PAD_FUNC_CTL_ANALOG_GET(x) (((uint32_t)(x) & IOC_PAD_FUNC_CTL_ANALOG_MASK) >> IOC_PAD_FUNC_CTL_ANALOG_SHIFT)
- /*
- * ALT_SELECT (RW)
- *
- * alt select
- * 0: ALT0
- * 1: ALT1
- * …
- * 31:ALT31
- */
- #define IOC_PAD_FUNC_CTL_ALT_SELECT_MASK (0x1FU)
- #define IOC_PAD_FUNC_CTL_ALT_SELECT_SHIFT (0U)
- #define IOC_PAD_FUNC_CTL_ALT_SELECT_SET(x) (((uint32_t)(x) << IOC_PAD_FUNC_CTL_ALT_SELECT_SHIFT) & IOC_PAD_FUNC_CTL_ALT_SELECT_MASK)
- #define IOC_PAD_FUNC_CTL_ALT_SELECT_GET(x) (((uint32_t)(x) & IOC_PAD_FUNC_CTL_ALT_SELECT_MASK) >> IOC_PAD_FUNC_CTL_ALT_SELECT_SHIFT)
- /* Bitfield definition for register of struct array PAD: PAD_CTL */
- /*
- * MS (RW)
- *
- * pin voltage select, only available in high-speed IO
- * 0: 3.3V
- * 1: 1.8V
- */
- #define IOC_PAD_PAD_CTL_MS_MASK (0x4000U)
- #define IOC_PAD_PAD_CTL_MS_SHIFT (14U)
- #define IOC_PAD_PAD_CTL_MS_SET(x) (((uint32_t)(x) << IOC_PAD_PAD_CTL_MS_SHIFT) & IOC_PAD_PAD_CTL_MS_MASK)
- #define IOC_PAD_PAD_CTL_MS_GET(x) (((uint32_t)(x) & IOC_PAD_PAD_CTL_MS_MASK) >> IOC_PAD_PAD_CTL_MS_SHIFT)
- /*
- * OD (RW)
- *
- * open drain
- * 0: open drain disable
- * 1: open drain enable
- */
- #define IOC_PAD_PAD_CTL_OD_MASK (0x2000U)
- #define IOC_PAD_PAD_CTL_OD_SHIFT (13U)
- #define IOC_PAD_PAD_CTL_OD_SET(x) (((uint32_t)(x) << IOC_PAD_PAD_CTL_OD_SHIFT) & IOC_PAD_PAD_CTL_OD_MASK)
- #define IOC_PAD_PAD_CTL_OD_GET(x) (((uint32_t)(x) & IOC_PAD_PAD_CTL_OD_MASK) >> IOC_PAD_PAD_CTL_OD_SHIFT)
- /*
- * SMT (RW)
- *
- * schmitt trigger enable, only avaiable in high-speed IO
- * 0: disable
- * 1: enable
- */
- #define IOC_PAD_PAD_CTL_SMT_MASK (0x1000U)
- #define IOC_PAD_PAD_CTL_SMT_SHIFT (12U)
- #define IOC_PAD_PAD_CTL_SMT_SET(x) (((uint32_t)(x) << IOC_PAD_PAD_CTL_SMT_SHIFT) & IOC_PAD_PAD_CTL_SMT_MASK)
- #define IOC_PAD_PAD_CTL_SMT_GET(x) (((uint32_t)(x) & IOC_PAD_PAD_CTL_SMT_MASK) >> IOC_PAD_PAD_CTL_SMT_SHIFT)
- /*
- * PS (RW)
- *
- * pull select
- * 0: pull down
- * 1: pull up
- */
- #define IOC_PAD_PAD_CTL_PS_MASK (0x800U)
- #define IOC_PAD_PAD_CTL_PS_SHIFT (11U)
- #define IOC_PAD_PAD_CTL_PS_SET(x) (((uint32_t)(x) << IOC_PAD_PAD_CTL_PS_SHIFT) & IOC_PAD_PAD_CTL_PS_MASK)
- #define IOC_PAD_PAD_CTL_PS_GET(x) (((uint32_t)(x) & IOC_PAD_PAD_CTL_PS_MASK) >> IOC_PAD_PAD_CTL_PS_SHIFT)
- /*
- * PE (RW)
- *
- * pull enable
- * 0: pull disable
- * 1: pull enable
- */
- #define IOC_PAD_PAD_CTL_PE_MASK (0x10U)
- #define IOC_PAD_PAD_CTL_PE_SHIFT (4U)
- #define IOC_PAD_PAD_CTL_PE_SET(x) (((uint32_t)(x) << IOC_PAD_PAD_CTL_PE_SHIFT) & IOC_PAD_PAD_CTL_PE_MASK)
- #define IOC_PAD_PAD_CTL_PE_GET(x) (((uint32_t)(x) & IOC_PAD_PAD_CTL_PE_MASK) >> IOC_PAD_PAD_CTL_PE_SHIFT)
- /*
- * DS (RW)
- *
- * drive strength
- * for high-speed IO 3.3V:
- * 000: 85.61Ohm
- * 001: 61.2 Ohm
- * 010: 42.88Ohm
- * 011: 35.76Ohm
- * 111: 30.67Ohm
- * for high-speed IO 1.8V:
- * 000: 84.07Ohm
- * 001: 60.14Ohm
- * 010: 42.15Ohm
- * 011: 35.19Ohm
- * 111: 30.2 Ohm
- * for general IO:
- * 00: 4mA
- * 01: 8mA
- * 11: 12mA
- */
- #define IOC_PAD_PAD_CTL_DS_MASK (0x7U)
- #define IOC_PAD_PAD_CTL_DS_SHIFT (0U)
- #define IOC_PAD_PAD_CTL_DS_SET(x) (((uint32_t)(x) << IOC_PAD_PAD_CTL_DS_SHIFT) & IOC_PAD_PAD_CTL_DS_MASK)
- #define IOC_PAD_PAD_CTL_DS_GET(x) (((uint32_t)(x) & IOC_PAD_PAD_CTL_DS_MASK) >> IOC_PAD_PAD_CTL_DS_SHIFT)
- /* PAD register group index macro definition */
- #define IOC_PAD_PA00 (0UL)
- #define IOC_PAD_PA01 (1UL)
- #define IOC_PAD_PA02 (2UL)
- #define IOC_PAD_PA03 (3UL)
- #define IOC_PAD_PA04 (4UL)
- #define IOC_PAD_PA05 (5UL)
- #define IOC_PAD_PA06 (6UL)
- #define IOC_PAD_PA07 (7UL)
- #define IOC_PAD_PA08 (8UL)
- #define IOC_PAD_PA09 (9UL)
- #define IOC_PAD_PA10 (10UL)
- #define IOC_PAD_PA11 (11UL)
- #define IOC_PAD_PA12 (12UL)
- #define IOC_PAD_PA13 (13UL)
- #define IOC_PAD_PA14 (14UL)
- #define IOC_PAD_PA15 (15UL)
- #define IOC_PAD_PA16 (16UL)
- #define IOC_PAD_PA17 (17UL)
- #define IOC_PAD_PA18 (18UL)
- #define IOC_PAD_PA19 (19UL)
- #define IOC_PAD_PA20 (20UL)
- #define IOC_PAD_PA21 (21UL)
- #define IOC_PAD_PA22 (22UL)
- #define IOC_PAD_PA23 (23UL)
- #define IOC_PAD_PA24 (24UL)
- #define IOC_PAD_PA25 (25UL)
- #define IOC_PAD_PA26 (26UL)
- #define IOC_PAD_PA27 (27UL)
- #define IOC_PAD_PA28 (28UL)
- #define IOC_PAD_PA29 (29UL)
- #define IOC_PAD_PA30 (30UL)
- #define IOC_PAD_PA31 (31UL)
- #define IOC_PAD_PB00 (32UL)
- #define IOC_PAD_PB01 (33UL)
- #define IOC_PAD_PB02 (34UL)
- #define IOC_PAD_PB03 (35UL)
- #define IOC_PAD_PB04 (36UL)
- #define IOC_PAD_PB05 (37UL)
- #define IOC_PAD_PB06 (38UL)
- #define IOC_PAD_PB07 (39UL)
- #define IOC_PAD_PB08 (40UL)
- #define IOC_PAD_PB09 (41UL)
- #define IOC_PAD_PB10 (42UL)
- #define IOC_PAD_PB11 (43UL)
- #define IOC_PAD_PB12 (44UL)
- #define IOC_PAD_PB13 (45UL)
- #define IOC_PAD_PB14 (46UL)
- #define IOC_PAD_PB15 (47UL)
- #define IOC_PAD_PB16 (48UL)
- #define IOC_PAD_PB17 (49UL)
- #define IOC_PAD_PB18 (50UL)
- #define IOC_PAD_PB19 (51UL)
- #define IOC_PAD_PB20 (52UL)
- #define IOC_PAD_PB21 (53UL)
- #define IOC_PAD_PB22 (54UL)
- #define IOC_PAD_PB23 (55UL)
- #define IOC_PAD_PB24 (56UL)
- #define IOC_PAD_PB25 (57UL)
- #define IOC_PAD_PB26 (58UL)
- #define IOC_PAD_PB27 (59UL)
- #define IOC_PAD_PB28 (60UL)
- #define IOC_PAD_PB29 (61UL)
- #define IOC_PAD_PB30 (62UL)
- #define IOC_PAD_PB31 (63UL)
- #define IOC_PAD_PC00 (64UL)
- #define IOC_PAD_PC01 (65UL)
- #define IOC_PAD_PC02 (66UL)
- #define IOC_PAD_PC03 (67UL)
- #define IOC_PAD_PC04 (68UL)
- #define IOC_PAD_PC05 (69UL)
- #define IOC_PAD_PC06 (70UL)
- #define IOC_PAD_PC07 (71UL)
- #define IOC_PAD_PC08 (72UL)
- #define IOC_PAD_PC09 (73UL)
- #define IOC_PAD_PC10 (74UL)
- #define IOC_PAD_PC11 (75UL)
- #define IOC_PAD_PC12 (76UL)
- #define IOC_PAD_PC13 (77UL)
- #define IOC_PAD_PC14 (78UL)
- #define IOC_PAD_PC15 (79UL)
- #define IOC_PAD_PC16 (80UL)
- #define IOC_PAD_PC17 (81UL)
- #define IOC_PAD_PC18 (82UL)
- #define IOC_PAD_PC19 (83UL)
- #define IOC_PAD_PC20 (84UL)
- #define IOC_PAD_PC21 (85UL)
- #define IOC_PAD_PC22 (86UL)
- #define IOC_PAD_PC23 (87UL)
- #define IOC_PAD_PC24 (88UL)
- #define IOC_PAD_PC25 (89UL)
- #define IOC_PAD_PC26 (90UL)
- #define IOC_PAD_PC27 (91UL)
- #define IOC_PAD_PC28 (92UL)
- #define IOC_PAD_PC29 (93UL)
- #define IOC_PAD_PC30 (94UL)
- #define IOC_PAD_PC31 (95UL)
- #define IOC_PAD_PD00 (96UL)
- #define IOC_PAD_PD01 (97UL)
- #define IOC_PAD_PD02 (98UL)
- #define IOC_PAD_PD03 (99UL)
- #define IOC_PAD_PD04 (100UL)
- #define IOC_PAD_PD05 (101UL)
- #define IOC_PAD_PD06 (102UL)
- #define IOC_PAD_PD07 (103UL)
- #define IOC_PAD_PD08 (104UL)
- #define IOC_PAD_PD09 (105UL)
- #define IOC_PAD_PD10 (106UL)
- #define IOC_PAD_PD11 (107UL)
- #define IOC_PAD_PD12 (108UL)
- #define IOC_PAD_PD13 (109UL)
- #define IOC_PAD_PD14 (110UL)
- #define IOC_PAD_PD15 (111UL)
- #define IOC_PAD_PD16 (112UL)
- #define IOC_PAD_PD17 (113UL)
- #define IOC_PAD_PD18 (114UL)
- #define IOC_PAD_PD19 (115UL)
- #define IOC_PAD_PD20 (116UL)
- #define IOC_PAD_PD21 (117UL)
- #define IOC_PAD_PD22 (118UL)
- #define IOC_PAD_PD23 (119UL)
- #define IOC_PAD_PD24 (120UL)
- #define IOC_PAD_PD25 (121UL)
- #define IOC_PAD_PD26 (122UL)
- #define IOC_PAD_PD27 (123UL)
- #define IOC_PAD_PD28 (124UL)
- #define IOC_PAD_PD29 (125UL)
- #define IOC_PAD_PD30 (126UL)
- #define IOC_PAD_PD31 (127UL)
- #define IOC_PAD_PE00 (128UL)
- #define IOC_PAD_PE01 (129UL)
- #define IOC_PAD_PE02 (130UL)
- #define IOC_PAD_PE03 (131UL)
- #define IOC_PAD_PE04 (132UL)
- #define IOC_PAD_PE05 (133UL)
- #define IOC_PAD_PE06 (134UL)
- #define IOC_PAD_PE07 (135UL)
- #define IOC_PAD_PE08 (136UL)
- #define IOC_PAD_PE09 (137UL)
- #define IOC_PAD_PE10 (138UL)
- #define IOC_PAD_PE11 (139UL)
- #define IOC_PAD_PE12 (140UL)
- #define IOC_PAD_PE13 (141UL)
- #define IOC_PAD_PE14 (142UL)
- #define IOC_PAD_PE15 (143UL)
- #define IOC_PAD_PE16 (144UL)
- #define IOC_PAD_PE17 (145UL)
- #define IOC_PAD_PE18 (146UL)
- #define IOC_PAD_PE19 (147UL)
- #define IOC_PAD_PE20 (148UL)
- #define IOC_PAD_PE21 (149UL)
- #define IOC_PAD_PE22 (150UL)
- #define IOC_PAD_PE23 (151UL)
- #define IOC_PAD_PE24 (152UL)
- #define IOC_PAD_PE25 (153UL)
- #define IOC_PAD_PE26 (154UL)
- #define IOC_PAD_PE27 (155UL)
- #define IOC_PAD_PE28 (156UL)
- #define IOC_PAD_PE29 (157UL)
- #define IOC_PAD_PE30 (158UL)
- #define IOC_PAD_PE31 (159UL)
- #define IOC_PAD_PF00 (160UL)
- #define IOC_PAD_PF01 (161UL)
- #define IOC_PAD_PF02 (162UL)
- #define IOC_PAD_PF03 (163UL)
- #define IOC_PAD_PF04 (164UL)
- #define IOC_PAD_PF05 (165UL)
- #define IOC_PAD_PF06 (166UL)
- #define IOC_PAD_PF07 (167UL)
- #define IOC_PAD_PF08 (168UL)
- #define IOC_PAD_PF09 (169UL)
- #define IOC_PAD_PF10 (170UL)
- #define IOC_PAD_PX00 (416UL)
- #define IOC_PAD_PX01 (417UL)
- #define IOC_PAD_PX02 (418UL)
- #define IOC_PAD_PX03 (419UL)
- #define IOC_PAD_PX04 (420UL)
- #define IOC_PAD_PX05 (421UL)
- #define IOC_PAD_PX06 (422UL)
- #define IOC_PAD_PX07 (423UL)
- #define IOC_PAD_PX08 (424UL)
- #define IOC_PAD_PX09 (425UL)
- #define IOC_PAD_PX10 (426UL)
- #define IOC_PAD_PX11 (427UL)
- #define IOC_PAD_PY00 (448UL)
- #define IOC_PAD_PY01 (449UL)
- #define IOC_PAD_PY02 (450UL)
- #define IOC_PAD_PY03 (451UL)
- #define IOC_PAD_PY04 (452UL)
- #define IOC_PAD_PY05 (453UL)
- #define IOC_PAD_PY06 (454UL)
- #define IOC_PAD_PY07 (455UL)
- #define IOC_PAD_PY08 (456UL)
- #define IOC_PAD_PY09 (457UL)
- #define IOC_PAD_PY10 (458UL)
- #define IOC_PAD_PY11 (459UL)
- #define IOC_PAD_PZ00 (480UL)
- #define IOC_PAD_PZ01 (481UL)
- #define IOC_PAD_PZ02 (482UL)
- #define IOC_PAD_PZ03 (483UL)
- #define IOC_PAD_PZ04 (484UL)
- #define IOC_PAD_PZ05 (485UL)
- #define IOC_PAD_PZ06 (486UL)
- #define IOC_PAD_PZ07 (487UL)
- #define IOC_PAD_PZ08 (488UL)
- #define IOC_PAD_PZ09 (489UL)
- #define IOC_PAD_PZ10 (490UL)
- #define IOC_PAD_PZ11 (491UL)
- #endif /* HPM_IOC_H */
|