diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2016-08-15 09:16:27 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2016-08-15 09:16:27 +0000 |
commit | 8224ae00b5c3c99dbc9a5dbffda12e9f3e37db79 (patch) | |
tree | 00dfe0ef8690d9f656625c8ee3b275cfc48a70fd /sys/arch | |
parent | ac1dda0efcf52236148e69a6ca675fd185b8cc0d (diff) |
Use the regulator API to supply power to the target.
Tested by Daniel Bolgheroni on a Cubietech Cubieboard2.
ok jsg@
Diffstat (limited to 'sys/arch')
-rw-r--r-- | sys/arch/armv7/sunxi/sxiahci.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/arch/armv7/sunxi/sxiahci.c b/sys/arch/armv7/sunxi/sxiahci.c index 5595c41a40d..c797b9375d5 100644 --- a/sys/arch/armv7/sunxi/sxiahci.c +++ b/sys/arch/armv7/sunxi/sxiahci.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sxiahci.c,v 1.9 2016/08/05 19:00:25 kettenis Exp $ */ +/* $OpenBSD: sxiahci.c,v 1.10 2016/08/15 09:16:26 kettenis Exp $ */ /* * Copyright (c) 2013 Patrick Wildt <patrick@blueri.se> * Copyright (c) 2013,2014 Artturi Alm @@ -33,9 +33,9 @@ #include <armv7/armv7/armv7var.h> #include <armv7/sunxi/sunxireg.h> #include <armv7/sunxi/sxiccmuvar.h> -#include <armv7/sunxi/sxipiovar.h> #include <dev/ofw/openfirm.h> +#include <dev/ofw/ofw_regulator.h> #include <dev/ofw/fdt.h> #define SXIAHCI_CAP 0x0000 @@ -97,6 +97,7 @@ sxiahci_attach(struct device *parent, struct device *self, void *aux) struct sxiahci_softc *sxisc = (struct sxiahci_softc *)self; struct ahci_softc *sc = &sxisc->sc; struct fdt_attach_args *faa = aux; + uint32_t target_supply; uint32_t timo; if (faa->fa_nreg < 1) @@ -165,8 +166,9 @@ sxiahci_attach(struct device *parent, struct device *self, void *aux) SXIWRITE4(sc, SXIAHCI_RWC, 7); /* power up phy */ - sxipio_setcfg(SXIAHCI_PWRPIN, SXIPIO_OUTPUT); - sxipio_setpin(SXIAHCI_PWRPIN); + target_supply = OF_getpropint(faa->fa_node, "target-supply", 0); + if (target_supply) + regulator_enable(target_supply); sc->sc_ih = arm_intr_establish_fdt(faa->fa_node, IPL_BIO, ahci_intr, sc, sc->sc_dev.dv_xname); @@ -190,7 +192,8 @@ sxiahci_attach(struct device *parent, struct device *self, void *aux) irq: arm_intr_disestablish(sc->sc_ih); clrpwr: - sxipio_clrpin(SXIAHCI_PWRPIN); + if (target_supply) + regulator_disable(target_supply); dismod: sxiccmu_disablemodule(CCMU_AHCI); bus_space_unmap(sc->sc_iot, sc->sc_ioh, sc->sc_ios); |