Skip to content

Commit 3d5489a

Browse files
author
Seppo Takalo
authored
Merge pull request #10644 from fkjagodzinski/hal-gpio_pinmap
Add a gpio pinmap
2 parents 9875338 + 61f9a1c commit 3d5489a

File tree

10 files changed

+278
-0
lines changed

10 files changed

+278
-0
lines changed

TESTS/mbed_hal/pinmap/main.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
using namespace utest::v1;
2222

23+
#include "gpio_api.h"
2324
#include "analogin_api.h"
2425
#include "analogout_api.h"
2526
#include "can_api.h"
@@ -38,6 +39,7 @@ typedef struct {
3839
} pinmap_info_t;
3940

4041
const pinmap_info_t pinmap_functions[] = {
42+
PINMAP_TEST_ENTRY(gpio_pinmap),
4143
#if DEVICE_ANALOGIN
4244
PINMAP_TEST_ENTRY(analogin_pinmap),
4345
#endif

hal/gpio_api.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
#include <stdint.h>
2424
#include "device.h"
25+
#include "pinmap.h"
2526

2627
#ifdef __cplusplus
2728
extern "C" {
@@ -135,6 +136,18 @@ void gpio_init_out_ex(gpio_t *gpio, PinName pin, int value);
135136
*/
136137
void gpio_init_inout(gpio_t *gpio, PinName pin, PinDirection direction, PinMode mode, int value);
137138

139+
/** Get the pins that support all GPIO tests
140+
*
141+
* Return a PinMap array of pins that support GPIO. The
142+
* array is terminated with {NC, NC, 0}.
143+
*
144+
* Targets should override the weak implementation of this
145+
* function to provide the actual pinmap for GPIO testing.
146+
*
147+
* @return PinMap array
148+
*/
149+
const PinMap *gpio_pinmap(void);
150+
138151
/**@}*/
139152

140153
#ifdef __cplusplus

hal/mbed_gpio.c

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
* limitations under the License.
1616
*/
1717
#include "hal/gpio_api.h"
18+
#include "platform/mbed_toolchain.h"
1819

1920
static inline void _gpio_init_in(gpio_t *gpio, PinName pin, PinMode mode)
2021
{
@@ -66,3 +67,53 @@ void gpio_init_inout(gpio_t *gpio, PinName pin, PinDirection direction, PinMode
6667
_gpio_init_out(gpio, pin, mode, value);
6768
}
6869
}
70+
71+
#ifdef TARGET_FF_ARDUINO
72+
73+
typedef enum {
74+
DEFAULT_GPIO = 0,
75+
} DefaultGPIOPeripheralName;
76+
77+
MBED_WEAK const PinMap *gpio_pinmap()
78+
{
79+
// Targets should override this weak implementation to provide correct data.
80+
static const PinMap empty_gpio_pinmap[] = {
81+
{D0, DEFAULT_GPIO, 0},
82+
{D1, DEFAULT_GPIO, 0},
83+
{D2, DEFAULT_GPIO, 0},
84+
{D3, DEFAULT_GPIO, 0},
85+
{D4, DEFAULT_GPIO, 0},
86+
{D5, DEFAULT_GPIO, 0},
87+
{D6, DEFAULT_GPIO, 0},
88+
{D7, DEFAULT_GPIO, 0},
89+
{D8, DEFAULT_GPIO, 0},
90+
{D9, DEFAULT_GPIO, 0},
91+
{D10, DEFAULT_GPIO, 0},
92+
{D11, DEFAULT_GPIO, 0},
93+
{D12, DEFAULT_GPIO, 0},
94+
{D13, DEFAULT_GPIO, 0},
95+
{D14, DEFAULT_GPIO, 0},
96+
{D15, DEFAULT_GPIO, 0},
97+
{A0, DEFAULT_GPIO, 0},
98+
{A1, DEFAULT_GPIO, 0},
99+
{A2, DEFAULT_GPIO, 0},
100+
{A3, DEFAULT_GPIO, 0},
101+
{A4, DEFAULT_GPIO, 0},
102+
{A5, DEFAULT_GPIO, 0},
103+
104+
{NC, NC, 0},
105+
};
106+
return empty_gpio_pinmap;
107+
}
108+
109+
#else
110+
111+
MBED_WEAK const PinMap *gpio_pinmap()
112+
{
113+
static const PinMap empty_gpio_pinmap[] = {
114+
{NC, NC, 0},
115+
};
116+
return empty_gpio_pinmap;
117+
}
118+
119+
#endif

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KW24D/TARGET_FRDM/PeripheralNames.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
extern "C" {
2323
#endif
2424

25+
typedef enum {
26+
GPIO_X = 0, // dummy peripheral used instead of GPIO_A..GPIO_E
27+
} GPIOName;
28+
2529
typedef enum {
2630
OSC32KCLK = 0,
2731
} RTCName;

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KW24D/TARGET_FRDM/PeripheralPins.c

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,47 @@
1616

1717
#include "PeripheralPins.h"
1818

19+
/************GPIO***************/
20+
const PinMap PinMap_GPIO[] = {
21+
{PTA0, GPIO_X, 1},
22+
{PTA1, GPIO_X, 1},
23+
{PTA2, GPIO_X, 1},
24+
{PTA3, GPIO_X, 1},
25+
{PTA4, GPIO_X, 1},
26+
{PTA18, GPIO_X, 1},
27+
{PTA19, GPIO_X, 1},
28+
29+
{PTC4, GPIO_X, 1},
30+
{PTC5, GPIO_X, 1},
31+
{PTC6, GPIO_X, 1},
32+
{PTC7, GPIO_X, 1},
33+
34+
{PTD1, GPIO_X, 1},
35+
{PTD2, GPIO_X, 1},
36+
{PTD3, GPIO_X, 1},
37+
{PTD4, GPIO_X, 1},
38+
{PTD5, GPIO_X, 1},
39+
{PTD6, GPIO_X, 1},
40+
{PTD7, GPIO_X, 1},
41+
42+
{PTE0, GPIO_X, 1},
43+
{PTE1, GPIO_X, 1},
44+
{PTE2, GPIO_X, 1},
45+
{PTE3, GPIO_X, 1},
46+
{PTE4, GPIO_X, 1},
47+
{PTE16, GPIO_X, 1},
48+
{PTE17, GPIO_X, 1},
49+
{PTE18, GPIO_X, 1},
50+
{PTE19, GPIO_X, 1},
51+
52+
{NC , NC , 0}
53+
};
54+
55+
const PinMap *gpio_pinmap()
56+
{
57+
return PinMap_GPIO;
58+
}
59+
1960
/************RTC***************/
2061
const PinMap PinMap_RTC[] = {
2162
{NC, OSC32KCLK, 0},

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KW41Z/TARGET_FRDM/PeripheralNames.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
extern "C" {
2323
#endif
2424

25+
typedef enum {
26+
GPIO_X = 0, // dummy peripheral used instead of GPIO_A..GPIO_C
27+
} GPIOName;
28+
2529
typedef enum {
2630
OSC32KCLK = 0
2731
} RTCName;

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_KW41Z/TARGET_FRDM/PeripheralPins.c

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,45 @@
1616

1717
#include "PeripheralPins.h"
1818

19+
/************GPIO***************/
20+
const PinMap PinMap_GPIO[] = {
21+
{PTA0, GPIO_X, 1},
22+
{PTA1, GPIO_X, 1},
23+
{PTA2, GPIO_X, 1},
24+
{PTA16, GPIO_X, 1},
25+
{PTA17, GPIO_X, 1},
26+
{PTA18, GPIO_X, 1},
27+
{PTA19, GPIO_X, 1},
28+
29+
{PTB0, GPIO_X, 1},
30+
{PTB1, GPIO_X, 1},
31+
{PTB2, GPIO_X, 1},
32+
{PTB3, GPIO_X, 1},
33+
{PTB16, GPIO_X, 1},
34+
{PTB17, GPIO_X, 1},
35+
{PTB18, GPIO_X, 1},
36+
37+
// {PTC0, GPIO_X, 1}, // PTC0 is not available on the 48-pin Laminate QFN package.
38+
{PTC1, GPIO_X, 1},
39+
{PTC2, GPIO_X, 1},
40+
{PTC3, GPIO_X, 1},
41+
{PTC4, GPIO_X, 1},
42+
{PTC5, GPIO_X, 1},
43+
{PTC6, GPIO_X, 1},
44+
{PTC7, GPIO_X, 1},
45+
{PTC16, GPIO_X, 1},
46+
{PTC17, GPIO_X, 1},
47+
{PTC18, GPIO_X, 1},
48+
{PTC19, GPIO_X, 1},
49+
50+
{NC , NC , 0}
51+
};
52+
53+
const PinMap *gpio_pinmap()
54+
{
55+
return PinMap_GPIO;
56+
}
57+
1958
/************RTC***************/
2059
const PinMap PinMap_RTC[] = {
2160
{NC, OSC32KCLK, 0},

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/TARGET_FRDM/PeripheralNames.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
extern "C" {
2323
#endif
2424

25+
typedef enum {
26+
GPIO_X = 0, // dummy peripheral used instead of GPIO_A..GPIO_E
27+
} GPIOName;
28+
2529
typedef enum {
2630
OSC32KCLK = 0,
2731
} RTCName;

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K64F/TARGET_FRDM/PeripheralPins.c

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,123 @@
1616

1717
#include "PeripheralPins.h"
1818

19+
/************GPIO***************/
20+
const PinMap PinMap_GPIO[] = {
21+
{PTA0, GPIO_X, 1},
22+
{PTA1, GPIO_X, 1},
23+
{PTA2, GPIO_X, 1},
24+
{PTA3, GPIO_X, 1},
25+
{PTA4, GPIO_X, 1},
26+
{PTA5, GPIO_X, 1},
27+
{PTA6, GPIO_X, 1},
28+
{PTA7, GPIO_X, 1},
29+
{PTA8, GPIO_X, 1},
30+
{PTA9, GPIO_X, 1},
31+
{PTA10, GPIO_X, 1},
32+
{PTA11, GPIO_X, 1},
33+
{PTA12, GPIO_X, 1},
34+
{PTA13, GPIO_X, 1},
35+
{PTA14, GPIO_X, 1},
36+
{PTA15, GPIO_X, 1},
37+
{PTA16, GPIO_X, 1},
38+
{PTA17, GPIO_X, 1},
39+
{PTA18, GPIO_X, 1},
40+
{PTA19, GPIO_X, 1},
41+
{PTA24, GPIO_X, 1},
42+
{PTA25, GPIO_X, 1},
43+
{PTA26, GPIO_X, 1},
44+
{PTA27, GPIO_X, 1},
45+
{PTA28, GPIO_X, 1},
46+
{PTA29, GPIO_X, 1},
47+
48+
{PTB0, GPIO_X, 1},
49+
{PTB1, GPIO_X, 1},
50+
{PTB2, GPIO_X, 1},
51+
{PTB3, GPIO_X, 1},
52+
{PTB4, GPIO_X, 1},
53+
{PTB5, GPIO_X, 1},
54+
{PTB6, GPIO_X, 1},
55+
{PTB7, GPIO_X, 1},
56+
{PTB8, GPIO_X, 1},
57+
{PTB9, GPIO_X, 1},
58+
{PTB10, GPIO_X, 1},
59+
{PTB11, GPIO_X, 1},
60+
{PTB12, GPIO_X, 1},
61+
{PTB13, GPIO_X, 1},
62+
{PTB16, GPIO_X, 1},
63+
{PTB17, GPIO_X, 1},
64+
{PTB18, GPIO_X, 1},
65+
{PTB19, GPIO_X, 1},
66+
{PTB20, GPIO_X, 1},
67+
{PTB21, GPIO_X, 1},
68+
{PTB22, GPIO_X, 1},
69+
{PTB23, GPIO_X, 1},
70+
71+
{PTC0, GPIO_X, 1},
72+
{PTC1, GPIO_X, 1},
73+
{PTC2, GPIO_X, 1},
74+
{PTC3, GPIO_X, 1},
75+
{PTC4, GPIO_X, 1},
76+
{PTC5, GPIO_X, 1},
77+
{PTC6, GPIO_X, 1},
78+
{PTC7, GPIO_X, 1},
79+
{PTC8, GPIO_X, 1},
80+
{PTC9, GPIO_X, 1},
81+
{PTC10, GPIO_X, 1},
82+
{PTC11, GPIO_X, 1},
83+
{PTC12, GPIO_X, 1},
84+
{PTC13, GPIO_X, 1},
85+
{PTC14, GPIO_X, 1},
86+
{PTC15, GPIO_X, 1},
87+
{PTC16, GPIO_X, 1},
88+
{PTC17, GPIO_X, 1},
89+
{PTC18, GPIO_X, 1},
90+
{PTC19, GPIO_X, 1},
91+
92+
{PTD0, GPIO_X, 1},
93+
{PTD1, GPIO_X, 1},
94+
{PTD2, GPIO_X, 1},
95+
{PTD3, GPIO_X, 1},
96+
{PTD4, GPIO_X, 1},
97+
{PTD5, GPIO_X, 1},
98+
{PTD6, GPIO_X, 1},
99+
{PTD7, GPIO_X, 1},
100+
{PTD8, GPIO_X, 1},
101+
{PTD9, GPIO_X, 1},
102+
{PTD10, GPIO_X, 1},
103+
{PTD11, GPIO_X, 1},
104+
{PTD12, GPIO_X, 1},
105+
{PTD13, GPIO_X, 1},
106+
{PTD14, GPIO_X, 1},
107+
{PTD15, GPIO_X, 1},
108+
109+
{PTE0, GPIO_X, 1},
110+
{PTE1, GPIO_X, 1},
111+
{PTE2, GPIO_X, 1},
112+
{PTE3, GPIO_X, 1},
113+
{PTE4, GPIO_X, 1},
114+
{PTE5, GPIO_X, 1},
115+
{PTE6, GPIO_X, 1},
116+
{PTE7, GPIO_X, 1},
117+
{PTE8, GPIO_X, 1},
118+
{PTE9, GPIO_X, 1},
119+
{PTE10, GPIO_X, 1},
120+
{PTE11, GPIO_X, 1},
121+
{PTE12, GPIO_X, 1},
122+
// {PTE24, GPIO_X, 1}, // fixed pull-up (for I2C)
123+
// {PTE25, GPIO_X, 1}, // fixed pull-up (for I2C)
124+
{PTE26, GPIO_X, 1},
125+
{PTE27, GPIO_X, 1},
126+
{PTE28, GPIO_X, 1},
127+
128+
{NC , NC , 0}
129+
};
130+
131+
const PinMap *gpio_pinmap()
132+
{
133+
return PinMap_GPIO;
134+
}
135+
19136
/************RTC***************/
20137
const PinMap PinMap_RTC[] = {
21138
{NC, OSC32KCLK, 0},

targets/TARGET_Freescale/TARGET_MCUXpresso_MCUS/api/PeripheralPins.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
#include "pinmap.h"
2121
#include "PeripheralNames.h"
2222

23+
/************GPIO***************/
24+
extern const PinMap PinMap_GPIO[];
25+
2326
/************RTC***************/
2427
extern const PinMap PinMap_RTC[];
2528

0 commit comments

Comments
 (0)