Skip to content

Commit be4e681

Browse files
committed
fix UICR check; do not use NULL for no MISO
1 parent 8258cb8 commit be4e681

File tree

12 files changed

+26
-16
lines changed

12 files changed

+26
-16
lines changed

ports/atmel-samd/boards/hallowing_m4_express/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ uint8_t display_init_sequence[] = {
4949

5050
void board_init(void) {
5151
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
52-
common_hal_busio_spi_construct(spi, &pin_PA01, &pin_PA00, NULL);
52+
common_hal_busio_spi_construct(spi, &pin_PA01, &pin_PA00, mp_const_none);
5353
common_hal_busio_spi_never_reset(spi);
5454

5555
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;

ports/atmel-samd/boards/monster_m4sk/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ uint8_t display_init_sequence[] = {
5050

5151
void board_init(void) {
5252
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
53-
common_hal_busio_spi_construct(spi, &pin_PA13, &pin_PA12, NULL);
53+
common_hal_busio_spi_construct(spi, &pin_PA13, &pin_PA12, mp_const_none);
5454
common_hal_busio_spi_never_reset(spi);
5555

5656
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;

ports/atmel-samd/boards/openbook_m4/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ uint8_t stop_sequence[] = {
5555

5656
void board_init(void) {
5757
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
58-
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL);
58+
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, mp_const_none);
5959
common_hal_busio_spi_never_reset(spi);
6060

6161
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;

ports/atmel-samd/boards/pewpew_m4/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ uint8_t display_init_sequence[] = {
9797

9898
void board_init(void) {
9999
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
100-
common_hal_busio_spi_construct(spi, &pin_PA13, &pin_PA15, NULL);
100+
common_hal_busio_spi_construct(spi, &pin_PA13, &pin_PA15, mp_const_none);
101101
common_hal_busio_spi_never_reset(spi);
102102

103103
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;

ports/atmel-samd/boards/pybadge/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ uint8_t display_init_sequence[] = {
7272

7373
void board_init(void) {
7474
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
75-
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL);
75+
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, mp_const_none);
7676
common_hal_busio_spi_never_reset(spi);
7777

7878
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;

ports/atmel-samd/boards/pybadge_airlift/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ uint8_t display_init_sequence[] = {
5050

5151
void board_init(void) {
5252
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
53-
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL);
53+
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, mp_const_none);
5454
common_hal_busio_spi_never_reset(spi);
5555

5656
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;

ports/atmel-samd/boards/pygamer/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ uint8_t display_init_sequence[] = {
7272

7373
void board_init(void) {
7474
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
75-
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL);
75+
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, mp_const_none);
7676
common_hal_busio_spi_never_reset(spi);
7777

7878
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;

ports/atmel-samd/boards/pygamer_advance/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ uint8_t display_init_sequence[] = {
5050

5151
void board_init(void) {
5252
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
53-
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB12, NULL);
53+
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB12, mp_const_none);
5454
common_hal_busio_spi_never_reset(spi);
5555

5656
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;

ports/nrf/boards/clue_nrf52840_express/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ uint8_t display_init_sequence[] = {
4949

5050
void board_init(void) {
5151
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
52-
common_hal_busio_spi_construct(spi, &pin_P0_14, &pin_P0_15, NULL);
52+
common_hal_busio_spi_construct(spi, &pin_P0_14, &pin_P0_15, mp_const_none);
5353
common_hal_busio_spi_never_reset(spi);
5454

5555
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;

ports/nrf/boards/ohs2020_badge/board.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ uint8_t display_init_sequence[] = {
4949

5050
void board_init(void) {
5151
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
52-
common_hal_busio_spi_construct(spi, &pin_P0_14, &pin_P0_15, NULL);
52+
common_hal_busio_spi_construct(spi, &pin_P0_14, &pin_P0_15, mp_const_none);
5353
common_hal_busio_spi_never_reset(spi);
5454

5555
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;

ports/nrf/common-hal/busio/SPI.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,15 +143,15 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self, const mcu_pin_obj_t *
143143
self->clock_pin_number = clock->number;
144144
claim_pin(clock);
145145

146-
if (mosi != (mcu_pin_obj_t*)&mp_const_none_obj) {
146+
if (mosi != mp_const_none) {
147147
config.mosi_pin = mosi->number;
148148
self->MOSI_pin_number = mosi->number;
149149
claim_pin(mosi);
150150
} else {
151151
self->MOSI_pin_number = NO_PIN;
152152
}
153153

154-
if (miso != (mcu_pin_obj_t*)&mp_const_none_obj) {
154+
if (miso != mp_const_none) {
155155
config.miso_pin = miso->number;
156156
self->MISO_pin_number = mosi->number;
157157
claim_pin(miso);

ports/nrf/peripherals/nrf/nrf52840/power.c

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,26 @@
2525
*/
2626

2727
#include "nrfx.h"
28-
#include "nrfx_nvmc.h"
28+
#include "hal/nrf_nvmc.h"
2929

3030
void nrf_peripherals_power_init(void) {
3131
// Set GPIO reference voltage to 3.3V if it isn't already. REGOUT0 will get reset to 0xfffffff
3232
// if flash is erased, which sets the default to 1.8V
3333
// This matters only when "high voltage mode" is enabled, which is true on the PCA10059,
3434
// and might be true on other boards.
35-
if (NRF_UICR->REGOUT0 == 0xffffffff) {
36-
nrfx_nvmc_word_write((uint32_t) &NRF_UICR->REGOUT0, UICR_REGOUT0_VOUT_3V3 << UICR_REGOUT0_VOUT_Pos);
37-
// Must reset to make enable change.
35+
if (NRF_UICR->REGOUT0 == 0xffffffff && NRF_POWER->MAINREGSTATUS & 1) {
36+
// Expand what nrf_nvmc_word_write() did.
37+
// It's missing from nrfx V2.0.0, and nrfx_nvmc_word_write() does bounds
38+
// checking which prevents writes to UICR.
39+
// Reported: https://devzone.nordicsemi.com/f/nordic-q-a/57243/nrfx_nvmc-h-api-cannot-write-to-uicr
40+
NRF_NVMC->CONFIG = NRF_NVMC_MODE_WRITE;
41+
while (!(NRF_NVMC->READY & NVMC_READY_READY_Msk)) {}
42+
NRF_UICR->REGOUT0 = UICR_REGOUT0_VOUT_3V3 << UICR_REGOUT0_VOUT_Pos;
43+
__DMB();
44+
while (NRF_NVMC->READY == NVMC_READY_READY_Busy) {}
45+
NRF_NVMC->CONFIG = NRF_NVMC_MODE_READONLY;
46+
47+
// Must reset to enable change.
3848
NVIC_SystemReset();
3949
}
4050
}

0 commit comments

Comments
 (0)