Fix rcc_gpio_modify_bits(). Obviously (1 << 0) is not the same as 0.

Pointy hat to:	loos
MFC after:	3 days
This commit is contained in:
Luiz Otavio O Souza 2016-12-31 02:23:15 +00:00
parent ab8fdacc82
commit 378f3b198d

View File

@ -57,12 +57,12 @@ struct rcc_gpio_pin {
}; };
static struct rcc_gpio_pin rcc_pins[] = { static struct rcc_gpio_pin rcc_pins[] = {
{ .pin = 11, .name = "reset switch", .caps = GPIO_PIN_INPUT }, { .pin = (1 << 11), .name = "reset switch", .caps = GPIO_PIN_INPUT },
{ .pin = 15, .name = "red LED", .caps = GPIO_PIN_OUTPUT }, { .pin = (1 << 15), .name = "red LED", .caps = GPIO_PIN_OUTPUT },
{ .pin = 17, .name = "green LED", .caps = GPIO_PIN_OUTPUT }, { .pin = (1 << 17), .name = "green LED", .caps = GPIO_PIN_OUTPUT },
#if 0 #if 0
{ .pin = 16, .name = "HD1 LED", .caps = GPIO_PIN_OUTPUT }, { .pin = (1 << 16), .name = "HD1 LED", .caps = GPIO_PIN_OUTPUT },
{ .pin = 18, .name = "HD2 LED", .caps = GPIO_PIN_OUTPUT }, { .pin = (1 << 18), .name = "HD2 LED", .caps = GPIO_PIN_OUTPUT },
#endif #endif
}; };
@ -87,14 +87,14 @@ struct rcc_gpio_softc {
static void static void
rcc_gpio_modify_bits(struct rcc_gpio_softc *sc, uint32_t reg, uint32_t mask, rcc_gpio_modify_bits(struct rcc_gpio_softc *sc, uint32_t reg, uint32_t mask,
uint32_t bit) uint32_t writebits)
{ {
uint32_t value; uint32_t value;
RCC_GPIO_LOCK(sc); RCC_GPIO_LOCK(sc);
value = RCC_READ(sc, reg); value = RCC_READ(sc, reg);
value &= ~(1 << mask); value &= ~mask;
value |= (1 << bit); value |= writebits;
RCC_WRITE(sc, reg, value); RCC_WRITE(sc, reg, value);
RCC_GPIO_UNLOCK(sc); RCC_GPIO_UNLOCK(sc);
} }