sunxi: spi: set up GPIO pins using pinctrl

This commit is contained in:
S.J.R. van Schaik
2017-02-23 12:11:42 +00:00
committed by Icenowy Zheng
parent 2f25199bf0
commit b8749fe541
+19 -12
View File
@@ -36,18 +36,28 @@ struct sunxi_spi_priv {
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
static void sunxi_spi_setup_pinmux(unsigned int pin_func) static int sunxi_spi_parse_pins(struct udevice *bus)
{ {
unsigned int pin; unsigned int pin_func = SUNXI_GPC_SPI0;
int ret;
for (pin = SUNXI_GPC(0); pin <= SUNXI_GPC(2); pin++) if (IS_ENABLED(CONFIG_MACH_SUN50I))
sunxi_gpio_set_cfgpin(pin, pin_func); pin_func = SUN50I_GPC_SPI0;
if (IS_ENABLED(CONFIG_MACH_SUN4I) || IS_ENABLED(CONFIG_MACH_SUN7I)) { ret = sunxi_gpio_setup_dt_pins(gd->fdt_blob, bus->of_offset, NULL,
sunxi_gpio_set_cfgpin(SUNXI_GPC(23), pin_func); pin_func);
} else {
sunxi_gpio_set_cfgpin(SUNXI_GPC(3), pin_func); if (ret < 0) {
printf("WARNING: sunxi-spi: cannot find pinctrl-0 node\n");
return ret;
} }
if (!ret) {
printf("WARNING: sunxi-spi: cannot find pins property\n");
return -2;
}
return ret;
} }
static void sunxi_spi_enable_clock(struct udevice *bus) static void sunxi_spi_enable_clock(struct udevice *bus)
@@ -170,10 +180,7 @@ static int sunxi_spi_claim_bus(struct udevice *dev)
debug("%s: claiming bus\n", __func__); debug("%s: claiming bus\n", __func__);
if (IS_ENABLED(CONFIG_MACH_SUN50I)) sunxi_spi_parse_pins(bus);
pin_func = SUN50I_GPC_SPI0;
sunxi_spi_setup_pinmux(pin_func);
sunxi_spi_enable_clock(bus); sunxi_spi_enable_clock(bus);
setbits_le32(&priv->regs->glb_ctl, SUNXI_SPI_CTL_MASTER | setbits_le32(&priv->regs->glb_ctl, SUNXI_SPI_CTL_MASTER |
SUNXI_SPI_CTL_ENABLE | SUNXI_SPI_CTL_TP | SUNXI_SPI_CTL_SRST); SUNXI_SPI_CTL_ENABLE | SUNXI_SPI_CTL_TP | SUNXI_SPI_CTL_SRST);