8000 Move pin struct to the peripherals library. · eighthree/circuitpython@168aa39 · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Nov 27, 2024. It is now read-only.

Commit 168aa39

Browse files
committed
Move pin struct to the peripherals library.
Its slimmed down by removing the qstr and bit packing TCC info. The trinket m0 build actually grows by 20 bytes. The arduino zero build shrinks by 188 bytes.
1 parent e7ae5a3 commit 168aa39

File tree

21 files changed

+165
-150
lines changed

21 files changed

+165
-150
lines changed

ports/atmel-samd/common-hal/analogio/AnalogIn.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ void common_hal_analogio_analogin_construct(analogio_analogin_obj_t* self,
6363
}
6464
claim_pin(pin);
6565

66-
gpio_set_pin_function(pin->pin, GPIO_PIN_FUNCTION_B);
66+
gpio_set_pin_function(pin->number, GPIO_PIN_FUNCTION_B);
6767

6868
static Adc* adc_insts[] = ADC_INSTS;
6969
self->instance = adc_insts[adc_index];
@@ -79,7 +79,7 @@ void common_hal_analogio_analogin_deinit(analogio_analogin_obj_t *self) {
7979
if (common_hal_analogio_analogin_deinited(self)) {
8080
return;
8181
}
82-
reset_pin(self->pin->pin);
82+
reset_pin(self->pin->number);
8383
self->pin = mp_const_none;
8484
}
8585

ports/atmel-samd/common-hal/analogio/AnalogOut.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@
4444

4545
void common_hal_analogio_analogout_construct(analogio_analogout_obj_t* self,
4646
const mcu_pin_obj_t *pin) {
47-
if (pin->pin != PIN_PA02
47+
if (pin->number != PIN_PA02
4848
#ifdef SAMD51
49-
&& pin->pin != PIN_PA05
49+
&& pin->number != PIN_PA05
5050
#endif
5151
) {
5252
mp_raise_ValueError("AnalogOut not supported on given pin");
@@ -55,7 +55,7 @@ void common_hal_analogio_analogout_construct(analogio_analogout_obj_t* self,
5555

5656
self->channel = 0;
5757
#ifdef SAMD51
58-
if (pin->pin == PIN_PA05) {
58+
if (pin->number == PIN_PA05) {
5959
self->channel = 1;
6060
}
6161
#endif
@@ -93,7 +93,7 @@ void common_hal_analogio_analogout_construct(analogio_analogout_obj_t* self,
9393
}
9494
claim_pin(pin);
9595

96-
gpio_set_pin_function(pin->pin, GPIO_PIN_FUNCTION_B);
96+
gpio_set_pin_function(pin->number, GPIO_PIN_FUNCTION_B);
9797

9898
dac_sync_enable_channel(&self->descriptor, self->channel);
9999
}

ports/atmel-samd/common-hal/audiobusio/I2SOut.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,9 @@ void common_hal_audiobusio_i2sout_construct(audiobusio_i2sout_obj_t* self,
193193
claim_pin(word_select);
194194
claim_pin(data);
195195

196-
gpio_set_pin_function(self->bit_clock->pin, GPIO_I2S_FUNCTION);
197-
gpio_set_pin_function(self->word_select->pin, GPIO_I2S_FUNCTION);
198-
gpio_set_pin_function(self->data->pin, GPIO_I2S_FUNCTION);
196+
gpio_set_pin_function(self->bit_clock->number, GPIO_I2S_FUNCTION);
197+
gpio_set_pin_function(self->word_select->number, GPIO_I2S_FUNCTION);
198+
gpio_set_pin_function(self->data->number, GPIO_I2S_FUNCTION);
199199

200200
self->left_justified = left_justified;
201201
self->playing = false;
@@ -211,11 +211,11 @@ void common_hal_audiobusio_i2sout_deinit(audiobusio_i2sout_obj_t* self) {
211211
return;
212212
}
213213

214-
reset_pin(self->bit_clock->pin);
214+
reset_pin(self->bit_clock->number);
215215
self->bit_clock = mp_const_none;
216-
reset_pin(self->word_select->pin);
216+
reset_pin(self->word_select->number);
217217
self->word_select = mp_const_none;
218-
reset_pin(self->data->pin);
218+
reset_pin(self->data->number);
219219
self->data = mp_const_none;
220220
}
221221

ports/atmel-samd/common-hal/audiobusio/PDMIn.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,8 @@ void common_hal_audiobusio_pdmin_construct(audiobusio_pdmin_obj_t* self,
210210
claim_pin(clock_pin);
211211
claim_pin(data_pin);
212212

213-
gpio_set_pin_function(self->clock_pin->pin, GPIO_I2S_FUNCTION);
214-
gpio_set_pin_function(self->data_pin->pin, GPIO_I2S_FUNCTION);
213+
gpio_set_pin_function(self->clock_pin->number, GPIO_I2S_FUNCTION);
214+
gpio_set_pin_function(self->data_pin->number, GPIO_I2S_FUNCTION);
215215

216216
self->bytes_per_sample = oversample >> 3;
217217
self->bit_depth = bit_depth;
@@ -234,8 +234,8 @@ void common_hal_audiobusio_pdmin_deinit(audiobusio_pdmin_obj_t* self) {
234234
disconnect_gclk_from_peripheral(self->gclk, I2S_GCLK_ID_0 + self->clock_unit);
235235
disable_clock_generator(self->gclk);
236236

237-
reset_pin(self->clock_pin->pin);
238-
reset_pin(self->data_pin->pin);
237+
reset_pin(self->clock_pin->number);
238+
reset_pin(self->data_pin->number);
239239
self->clock_pin = mp_const_none;
240240
self->data_pin = mp_const_none;
241241
}

ports/atmel-samd/common-hal/audioio/AudioOut.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,12 @@ void common_hal_audioio_audioout_construct(audioio_audioout_obj_t* self,
9393
if (right_channel != NULL) {
9494
claim_pin(right_channel);
9595
self->right_channel = right_channel;
96-
gpio_set_pin_function(self->right_channel->pin, GPIO_PIN_FUNCTION_B);
96+
gpio_set_pin_function(self->right_channel->number, GPIO_PIN_FUNCTION_B);
9797
audio_dma_init(&self->right_dma);
9898
}
9999
#endif
100100
self->left_channel = left_channel;
101-
gpio_set_pin_function(self->left_channel->pin, GPIO_PIN_FUNCTION_B);
101+
gpio_set_pin_function(self->left_channel->number, GPIO_PIN_FUNCTION_B);
102102
audio_dma_init(&self->left_dma);
103103

104104
#ifdef SAMD51
@@ -243,10 +243,10 @@ void common_hal_audioio_audioout_deinit(audioio_audioout_obj_t* self) {
243243

244244
tc_set_enable(tc_insts[self->tc_index], false);
245245

246-
reset_pin(self->left_channel->pin);
246+
reset_pin(self->left_channel->number);
247247
self->left_channel = mp_const_none;
248248
#ifdef SAMD51
249-
reset_pin(self->right_channel->pin);
249+
reset_pin(self->right_channel->number);
250250
self->right_channel = mp_const_none;
251251
#endif
252252
}

ports/atmel-samd/common-hal/busio/I2C.c

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@ void common_hal_busio_i2c_construct(busio_i2c_obj_t *self,
5959
sda->sercom[i].pad != 0) {
6060
continue;
6161
}
62-
sda_pinmux = PINMUX(sda->pin, (i == 0) ? MUX_C : MUX_D);
62+
sda_pinmux = PINMUX(sda->number, (i == 0) ? MUX_C : MUX_D);
6363
for (int j = 0; j < NUM_SERCOMS_PER_PIN; j++) {
6464
if (sercom_index == scl->sercom[j].index &&
6565
scl->sercom[j].pad == 1) {
66-
scl_pinmux = PINMUX(scl->pin, (j == 0) ? MUX_C : MUX_D);
66+
scl_pinmux = PINMUX(scl->number, (j == 0) ? MUX_C : MUX_D);
6767
sercom = potential_sercom;
6868
break;
6969
}
@@ -77,50 +77,50 @@ void common_hal_busio_i2c_construct(busio_i2c_obj_t *self,
7777
}
7878

7979
// Test that the pins are in a high state. (Hopefully indicating they are pulled up.)
80-
gpio_set_pin_function(sda->pin, GPIO_PIN_FUNCTION_OFF);
81-
gpio_set_pin_function(scl->pin, GPIO_PIN_FUNCTION_OFF);
82-
gpio_set_pin_direction(sda->pin, GPIO_DIRECTION_IN);
83-
gpio_set_pin_direction(scl->pin, GPIO_DIRECTION_IN);
80+
gpio_set_pin_function(sda->number, GPIO_PIN_FUNCTION_OFF);
81+
gpio_set_pin_function(scl->number, GPIO_PIN_FUNCTION_OFF);
82+
gpio_set_pin_direction(sda->number, GPIO_DIRECTION_IN);
83+
gpio_set_pin_direction(scl->number, GPIO_DIRECTION_IN);
8484

85-
gpio_set_pin_pull_mode(sda->pin, GPIO_PULL_DOWN);
86-
gpio_set_pin_pull_mode(scl->pin, GPIO_PULL_DOWN);
85+
gpio_set_pin_pull_mode(sda->number, GPIO_PULL_DOWN);
86+
gpio_set_pin_pull_mode(scl->number, GPIO_PULL_DOWN);
8787

8888
common_hal_mcu_delay_us(10);
8989

90-
gpio_set_pin_pull_mode(sda->pin, GPIO_PULL_OFF);
91-
gpio_set_pin_pull_mode(scl->pin, GPIO_PULL_OFF);
90+
gpio_set_pin_pull_mode(sda->number, GPIO_PULL_OFF);
91+
gpio_set_pin_pull_mode(scl->number, GPIO_PULL_OFF);
9292

9393
// We must pull up within 3us to achieve 400khz.
9494
common_hal_mcu_delay_us(3);
9595

96-
if (!gpio_get_pin_level(sda->pin) || !gpio_get_pin_level(scl->pin)) {
97-
reset_pin(sda->pin);
98-
reset_pin(scl->pin);
96+
if (!gpio_get_pin_level(sda->number) || !gpio_get_pin_level(scl->number)) {
97+
reset_pin(sda->number);
98+
reset_pin(scl->number);
9999
mp_raise_RuntimeError("SDA or SCL needs a pull up");
100100
}
101-
gpio_set_pin_function(sda->pin, sda_pinmux);
102-
gpio_set_pin_function(scl->pin, scl_pinmux);
101+
gpio_set_pin_function(sda->number, sda_pinmux);
102+
gpio_set_pin_function(scl->number, scl_pinmux);
103103

104104
// Set up I2C clocks on sercom.
105105
samd_peripherals_sercom_clock_init(sercom, sercom_index);
106106

107107
if (i2c_m_sync_init(&self->i2c_desc, sercom) != ERR_NONE) {
108-
reset_pin(sda->pin);
109-
reset_pin(scl->pin);
108+
reset_pin(sda->number);
109+
reset_pin(scl->number);
110110
mp_raise_OSError(MP_EIO);
111111
}
112112

113113
// clkrate is always 0. baud_rate is in kHz.
114114

115115
// Frequency must be set before the I2C device is enabled.
116116
if (i2c_m_sync_set_baudrate(&self->i2c_desc, 0, frequency / 1000) != ERR_NONE) {
117-
reset_pin(sda->pin);
118-
reset_pin(scl->pin);
117+
reset_pin(sda->number);
118+
reset_pin(scl->number);
119119
mp_raise_ValueError("Unsupported baudrate");
120120
}
121121

122-
self->sda_pin = sda->pin;
123-
self->scl_pin = scl->pin;
122+
self->sda_pin = sda->number;
123+
self->scl_pin = scl->number;
124124
claim_pin(sda);
125125
claim_pin(scl);
126126

ports/atmel-samd/common-hal/busio/SPI.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,15 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
6969
#endif
7070
continue;
7171
}
72-
clock_pinmux = PINMUX(clock->pin, (i == 0) ? MUX_C : MUX_D);
72+
clock_pinmux = PINMUX(clock->number, (i == 0) ? MUX_C : MUX_D);
7373
clock_pad = clock->sercom[i].pad;
7474
if (!samd_peripherals_valid_spi_clock_pad(clock_pad)) {
7575
continue;
7676
}
7777
for (int j = 0; j < NUM_SERCOMS_PER_PIN; j++) {
7878
if (!mosi_none) {
7979
if (sercom_index == mosi->sercom[j].index) {
80-
mosi_pinmux = PINMUX(mosi->pin, (j == 0) ? MUX_C : MUX_D);
80+
mosi_pinmux = PINMUX(mosi->number, (j == 0) ? MUX_C : MUX_D);
8181
mosi_pad = mosi->sercom[j].pad;
8282
dopo = samd_peripherals_get_spi_dopo(clock_pad, mosi_pad);
8383
if (dopo > 0x3) {
@@ -94,7 +94,7 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
9494
if (!miso_none) {
9595
for (int k = 0; k < NUM_SERCOMS_PER_PIN; k++) {
9696
if (sercom_index == miso->sercom[k].index) {
97-
miso_pinmux = PINMUX(miso->pin, (k == 0) ? MUX_C : MUX_D);
97+
miso_pinmux = PINMUX(miso->number, (k == 0) ? MUX_C : MUX_D);
9898
miso_pad = miso->sercom[k].pad;
9999
sercom = potential_sercom;
100100
break;
@@ -138,29 +138,29 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
138138
mp_raise_OSError(MP_EIO);
139139
}
140140

141-
gpio_set_pin_direction(clock->pin, GPIO_DIRECTION_OUT);
142-
gpio_set_pin_pull_mode(clock->pin, GPIO_PULL_OFF);
143-
gpio_set_pin_function(clock->pin, clock_pinmux);
141+
gpio_set_pin_direction(clock->number, GPIO_DIRECTION_OUT);
142+
gpio_set_pin_pull_mode(clock->number, GPIO_PULL_OFF);
143+
gpio_set_pin_function(clock->number, clock_pinmux);
144144
claim_pin(clock);
145-
self->clock_pin = clock->pin;
145+
self->clock_pin = clock->number;
146146

147147
if (mosi_none) {
148148
self->MOSI_pin = NO_PIN;
149149
} else {
150-
gpio_set_pin_direction(mosi->pin, GPIO_DIRECTION_OUT);
151-
gpio_set_pin_pull_mode(mosi->pin, GPIO_PULL_OFF);
152-
gpio_set_pin_function(mosi->pin, mosi_pinmux);
153-
self->MOSI_pin = mosi->pin;
150+
gpio_set_pin_direction(mosi->number, GPIO_DIRECTION_OUT);
151+
gpio_set_pin_pull_mode(mosi->number, GPIO_PULL_OFF);
152+
gpio_set_pin_function(mosi->number, mosi_pinmux);
153+
self->MOSI_pin = mosi->number;
154154
claim_pin(mosi);
155155
}
156156

157157
if (miso_none) {
158158
self->MISO_pin = NO_PIN;
159159
} else {
160-
gpio_set_pin_direction(miso->pin, GPIO_DIRECTION_IN);
161-
gpio_set_pin_pull_mode(miso->pin, GPIO_PULL_OFF);
162-
gpio_set_pin_function(miso->pin, miso_pinmux);
163-
self->MISO_pin = miso->pin;
160+
gpio_set_pin_direction(miso->number, GPIO_DIRECTION_IN);
161+
gpio_set_pin_pull_mode(miso->number, GPIO_PULL_OFF);
162+
gpio_set_pin_function(miso->number, miso_pinmux);
163+
self->MISO_pin = miso->number;
164164
claim_pin(miso);
165165
}
166166

ports/atmel-samd/common-hal/busio/UART.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
9191
tx->sercom[i].pad == 2)) {
9292
continue;
9393
}
94-
tx_pinmux = PINMUX(tx->pin, (i == 0) ? MUX_C : MUX_D);
94+
tx_pinmux = PINMUX(tx->number, (i == 0) ? MUX_C : MUX_D);
9595
tx_pad = tx->sercom[i].pad;
9696
if (rx == mp_const_none) {
9797
sercom = potential_sercom;
@@ -103,7 +103,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
103103
sercom_insts[rx->sercom[j].index]->USART.CTRLA.bit.ENABLE == 0) ||
104104
sercom_index == rx->sercom[j].index) &&
105105
rx->sercom[j].pad != tx_pad) {
106-
rx_pinmux = PINMUX(rx->pin, (j == 0) ? MUX_C : MUX_D);
106+
rx_pinmux = PINMUX(rx->number, (j == 0) ? MUX_C : MUX_D);
107107
rx_pad = rx->sercom[j].pad;
108108
sercom = sercom_insts[rx->sercom[j].index];
109109
sercom_index = rx->sercom[j].index;
@@ -187,20 +187,20 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
187187

188188

189189
if (have_tx) {
190-
gpio_set_pin_direction(tx->pin, GPIO_DIRECTION_OUT);
191-
gpio_set_pin_pull_mode(tx->pin, GPIO_PULL_OFF);
192-
gpio_set_pin_function(tx->pin, tx_pinmux);
193-
self->tx_pin = tx->pin;
190+
gpio_set_pin_direction(tx->number, GPIO_DIRECTION_OUT);
191+
gpio_set_pin_pull_mode(tx->number, GPIO_PULL_OFF);
192+
gpio_set_pin_function(tx->number, tx_pinmux);
193+
self->tx_pin = tx->number;
194194
claim_pin(tx);
195195
} else {
196196
self->tx_pin = NO_PIN;
197197
}
198198

199199
if (have_rx) {
200-
gpio_set_pin_direction(rx->pin, GPIO_DIRECTION_IN);
201-
gpio_set_pin_pull_mode(rx->pin, GPIO_PULL_OFF);
202-
gpio_set_pin_function(rx->pin, rx_pinmux);
203-
self->rx_pin = rx->pin;
200+
gpio_set_pin_direction(rx->number, GPIO_DIRECTION_IN);
201+
gpio_set_pin_pull_mode(rx->number, GPIO_PULL_OFF);
202+
gpio_set_pin_function(rx->number, rx_pinmux);
203+
self->rx_pin = rx->number;
204204
claim_pin(rx);
205205
} else {
206206
self->rx_pin = NO_PIN;

ports/atmel-samd/common-hal/digitalio/DigitalInOut.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ digitalinout_result_t common_hal_digitalio_digitalinout_construct(
4141
self->pin = pin;
4242

4343
// Must set pull after setting direction.
44-
gpio_set_pin_direction(pin->pin, GPIO_DIRECTION_IN);
45-
gpio_set_pin_pull_mode(pin->pin, GPIO_PULL_OFF);
44+
gpio_set_pin_direction(pin->number, GPIO_DIRECTION_IN);
45+
gpio_set_pin_pull_mode(pin->number, GPIO_PULL_OFF);
4646
return DIGITALINOUT_OK;
4747
}
4848

@@ -54,7 +54,7 @@ void common_hal_digitalio_digitalinout_deinit(digitalio_digitalinout_obj_t* self
5454
if (common_hal_digitalio_digitalinout_deinited(self)) {
5555
return;
5656
}
57-
reset_pin(self->pin->pin);
57+
reset_pin(self->pin->number);
5858
self->pin = mp_const_none;
5959
}
6060

@@ -68,7 +68,7 @@ void common_hal_digitalio_digitalinout_switch_to_input(
6868
void common_hal_digitalio_digitalinout_switch_to_output(
6969
digitalio_digitalinout_obj_t* self, bool value,
7070
digitalio_drive_mode_t drive_mode) {
71-
const uint8_t pin = self->pin->pin;
71+
const uint8_t pin = self->pin->number;
7272
gpio_set_pin_pull_mode(pin, GPIO_PULL_OFF);
7373
// Turn on "strong" pin driving (more current available). See DRVSTR doc in datasheet.
7474
hri_port_set_PINCFG_DRVSTR_bit(PORT, (enum gpio_port)GPIO_PORT(pin), GPIO_PIN(pin));
@@ -87,7 +87,7 @@ digitalio_direction_t common_hal_digitalio_digitalinout_get_direction(
8787

8888
void common_hal_digitalio_digitalinout_set_value(
8989
digitalio_digitalinout_obj_t* self, bool value) {
90-
const uint8_t pin = self->pin->pin;
90+
const uint8_t pin = self->pin->number;
9191
const uint8_t port = GPIO_PORT(pin);
9292
const uint32_t pin_mask = 1U << GPIO_PIN(pin);
9393
if (value) {
@@ -108,7 +108,7 @@ void common_hal_digitalio_digitalinout_set_value(
108108

109109
bool common_hal_digitalio_digitalinout_get_value(
110110
digitalio_digitalinout_obj_t* self) {
111-
const uint8_t pin = self->pin->pin;
111+
const uint8_t pin = self->pin->number;
112112
if (!self->output) {
113113
return gpio_get_pin_level(pin);
114114
} else {
@@ -156,13 +156,13 @@ void common_hal_digitalio_digitalinout_set_pull(
156156
break;
157157
}
158158
// Must set pull after setting direction.
159-
gpio_set_pin_direction(self->pin->pin, GPIO_DIRECTION_IN);
160-
gpio_set_pin_pull_mode(self->pin->pin, asf_pull);
159+
gpio_set_pin_direction(self->pin->number, GPIO_DIRECTION_IN);
160+
gpio_set_pin_pull_mode(self->pin->number, asf_pull);
161161
}
162162

163163
digitalio_pull_t common_hal_digitalio_digitalinout_get_pull(
164164
digitalio_digitalinout_obj_t* self) {
165-
uint32_t pin = self->pin->pin;
165+
uint32_t pin = self->pin->number;
166166
if (self->output) {
167167
mp_raise_AttributeError("Cannot get pull while in output mode");
168168
return PULL_NONE;

0 commit comments

Comments
 (0)
0