1 /*
2  * Copyright (c) 2019 Winner Microelectronics Co., Ltd.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2018-11-21     fanwenl      first version
9  */
10 
11 #include <rtthread.h>
12 #include "wm_io.h"
13 #include "pin_map.h"
14 
15 #if defined(SOC_W600_A8xx)
16 #define WM60X_PIN_NUMBERS 33
17 #elif defined(SOC_W601_A8xx)
18 #define WM60X_PIN_NUMBERS 69
19 #endif
20 
21 #define __WM_PIN(index, gpio_index) (gpio_index)
22 #define WM_PIN_NUM(items) (sizeof(items) / sizeof(items[0]))
23 
24 /* WM chip GPIO map*/
25 static const rt_int16_t pins[] =
26 {
27     __WM_PIN(0, WM_PIN_DEFAULT),
28 #if (WM60X_PIN_NUMBERS == 33)
29     __WM_PIN(1, WM_PIN_DEFAULT),
30     __WM_PIN(2, WM_PIN_DEFAULT),
31     __WM_PIN(3, WM_PIN_DEFAULT),
32     __WM_PIN(4, WM_PIN_DEFAULT),
33     __WM_PIN(5, WM_PIN_DEFAULT),
34     __WM_PIN(6, WM_PIN_DEFAULT),
35     __WM_PIN(7, WM_PIN_DEFAULT),
36     __WM_PIN(8, WM_PIN_DEFAULT),
37     __WM_PIN(9, WM_PIN_DEFAULT),
38     __WM_PIN(10, WM_PIN_DEFAULT),
39     __WM_PIN(11, WM_PIN_DEFAULT),
40     __WM_PIN(12, WM_PIN_DEFAULT),
41     __WM_PIN(13, WM_IO_PA_00),
42     __WM_PIN(14, WM_IO_PA_01),
43     __WM_PIN(15, WM_IO_PA_04),
44     __WM_PIN(16, WM_PIN_DEFAULT),
45     __WM_PIN(17, WM_IO_PA_05),
46     __WM_PIN(18, WM_IO_PB_13),
47     __WM_PIN(19, WM_IO_PB_14),
48     __WM_PIN(20, WM_IO_PB_15),
49     __WM_PIN(21, WM_IO_PB_16),
50     __WM_PIN(22, WM_IO_PB_17),
51     __WM_PIN(23, WM_IO_PB_18),
52     __WM_PIN(24, WM_PIN_DEFAULT),
53     __WM_PIN(25, WM_PIN_DEFAULT),
54     __WM_PIN(26, WM_IO_PB_06),
55     __WM_PIN(27, WM_IO_PB_07),
56     __WM_PIN(28, WM_IO_PB_08),
57     __WM_PIN(29, WM_IO_PB_09),
58     __WM_PIN(30, WM_IO_PB_10),
59     __WM_PIN(31, WM_IO_PB_11),
60     __WM_PIN(32, WM_IO_PB_12),
61     __WM_PIN(33, WM_PIN_DEFAULT),
62 #elif (WM60X_PIN_NUMBERS == 69)
63     __WM_PIN(1, WM_IO_PB_19),
64     __WM_PIN(2, WM_IO_PB_20),
65     __WM_PIN(3, WM_IO_PB_21),
66     __WM_PIN(4, WM_IO_PB_22),
67     __WM_PIN(5, WM_IO_PB_23),
68     __WM_PIN(6, WM_IO_PB_24),
69     __WM_PIN(7, WM_IO_PB_25),
70     __WM_PIN(8, WM_IO_PB_26),
71     __WM_PIN(9, WM_PIN_DEFAULT),
72     __WM_PIN(10, WM_PIN_DEFAULT),
73     __WM_PIN(11, WM_PIN_DEFAULT),
74     __WM_PIN(12, WM_PIN_DEFAULT),
75     __WM_PIN(13, WM_PIN_DEFAULT),
76     __WM_PIN(14, WM_PIN_DEFAULT),
77     __WM_PIN(15, WM_PIN_DEFAULT),
78     __WM_PIN(16, WM_PIN_DEFAULT),
79     __WM_PIN(17, WM_PIN_DEFAULT),
80     __WM_PIN(18, WM_PIN_DEFAULT),
81     __WM_PIN(19, WM_PIN_DEFAULT),
82     __WM_PIN(20, WM_PIN_DEFAULT),
83     __WM_PIN(21, WM_PIN_DEFAULT),
84     __WM_PIN(22, WM_PIN_DEFAULT),
85     __WM_PIN(23, WM_IO_PA_00),
86     __WM_PIN(24, WM_IO_PA_01),
87     __WM_PIN(25, WM_IO_PA_02),
88     __WM_PIN(26, WM_IO_PA_03),
89     __WM_PIN(27, WM_IO_PA_04),
90     __WM_PIN(28, WM_PIN_DEFAULT),
91     __WM_PIN(29, WM_IO_PA_05),
92     __WM_PIN(30, WM_IO_PA_13),
93     __WM_PIN(31, WM_IO_PA_14),
94     __WM_PIN(32, WM_IO_PA_15),
95     __WM_PIN(33, WM_IO_PA_06),
96     __WM_PIN(34, WM_PIN_DEFAULT),
97     __WM_PIN(35, WM_IO_PA_07),
98     __WM_PIN(36, WM_IO_PA_08),
99     __WM_PIN(37, WM_IO_PA_09),
100     __WM_PIN(38, WM_IO_PA_10),
101     __WM_PIN(39, WM_IO_PA_11),
102     __WM_PIN(40, WM_IO_PA_12),
103     __WM_PIN(41, WM_IO_PB_28),
104     __WM_PIN(42, WM_PIN_DEFAULT),
105     __WM_PIN(43, WM_IO_PB_13),
106     __WM_PIN(44, WM_IO_PB_14),
107     __WM_PIN(45, WM_IO_PB_15),
108     __WM_PIN(46, WM_PIN_DEFAULT),
109     __WM_PIN(47, WM_IO_PB_16),
110     __WM_PIN(48, WM_IO_PB_17),
111     __WM_PIN(49, WM_IO_PB_18),
112     __WM_PIN(50, WM_PIN_DEFAULT),
113     __WM_PIN(51, WM_IO_PB_30),
114     __WM_PIN(52, WM_IO_PB_31),
115     __WM_PIN(53, WM_IO_PB_27),
116     __WM_PIN(54, WM_IO_PB_00),
117     __WM_PIN(55, WM_IO_PB_01),
118     __WM_PIN(56, WM_IO_PB_02),
119     __WM_PIN(57, WM_IO_PB_03),
120     __WM_PIN(58, WM_PIN_DEFAULT),
121     __WM_PIN(59, WM_IO_PB_04),
122     __WM_PIN(60, WM_IO_PB_05),
123     __WM_PIN(61, WM_IO_PB_06),
124     __WM_PIN(62, WM_IO_PB_07),
125     __WM_PIN(63, WM_IO_PB_08),
126     __WM_PIN(64, WM_IO_PB_09),
127     __WM_PIN(65, WM_IO_PB_10),
128     __WM_PIN(66, WM_IO_PB_11),
129     __WM_PIN(67, WM_IO_PB_12),
130     __WM_PIN(68, WM_PIN_DEFAULT),
131     __WM_PIN(69, WM_PIN_DEFAULT),
132 #endif
133 };
134 
wm_get_pin(rt_base_t pin_index)135 rt_int16_t wm_get_pin(rt_base_t pin_index)
136 {
137     rt_int16_t gpio_pin = WM_PIN_DEFAULT;
138     if (pin_index < WM_PIN_NUM(pins))
139     {
140         gpio_pin = pins[pin_index];
141     }
142     return gpio_pin;
143 }
144