Use regulalator API instead of private functions.
authorkettenis <kettenis@openbsd.org>
Sat, 13 Aug 2016 11:08:58 +0000 (11:08 +0000)
committerkettenis <kettenis@openbsd.org>
Sat, 13 Aug 2016 11:08:58 +0000 (11:08 +0000)
sys/arch/armv7/imx/imxehci.c
sys/arch/armv7/imx/imxesdhc.c

index 26e09fe..89fe44d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: imxehci.c,v 1.16 2016/08/06 17:18:38 kettenis Exp $ */
+/*     $OpenBSD: imxehci.c,v 1.17 2016/08/13 11:08:58 kettenis Exp $ */
 /*
  * Copyright (c) 2012-2013 Patrick Wildt <patrick@blueri.se>
  *
@@ -37,6 +37,7 @@
 #include <dev/ofw/openfirm.h>
 #include <dev/ofw/ofw_gpio.h>
 #include <dev/ofw/ofw_pinctrl.h>
+#include <dev/ofw/ofw_regulator.h>
 #include <dev/ofw/fdt.h>
 
 #include <dev/usb/ehcireg.h>
@@ -75,8 +76,6 @@ int   imxehci_match(struct device *, void *, void *);
 void   imxehci_attach(struct device *, struct device *, void *);
 int    imxehci_detach(struct device *, int);
 
-void   imxehci_enable_vbus(uint32_t);
-
 struct imxehci_softc {
        struct ehci_softc       sc;
        void                    *sc_ih;
@@ -180,7 +179,7 @@ imxehci_attach(struct device *parent, struct device *self, void *aux)
        /* enable usb bus power */
        vbus = OF_getpropint(faa->fa_node, "vbus-supply", 0);
        if (vbus)
-               imxehci_enable_vbus(vbus);
+               regulator_enable(vbus);
 
        switch (misc[1]) {
        case 0:
@@ -310,32 +309,3 @@ imxehci_detach(struct device *self, int flags)
 
        return (0);
 }
-
-void
-imxehci_enable_vbus(uint32_t phandle)
-{
-       uint32_t gpio[3];
-       int active;
-       int node;
-
-       node = OF_getnodebyphandle(phandle);
-       if (node == 0)
-               return;
-
-       if (!OF_is_compatible(node, "regulator-fixed"))
-               return;
-
-       pinctrl_byname(node, "default");
-
-       if (OF_getproplen(node, "enable-active-high") == 0)
-               active = 1;
-       else
-               active = 0;
-
-       if (OF_getpropintarray(node, "gpio", gpio,
-           sizeof(gpio)) != sizeof(gpio))
-               return;
-       
-       gpio_controller_config_pin(gpio, GPIO_CONFIG_OUTPUT);
-       gpio_controller_set_pin(gpio, active);
-}
index a50ab69..b6ff345 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: imxesdhc.c,v 1.29 2016/08/08 10:10:56 kettenis Exp $  */
+/*     $OpenBSD: imxesdhc.c,v 1.30 2016/08/13 11:08:58 kettenis Exp $  */
 /*
  * Copyright (c) 2009 Dale Rahn <drahn@openbsd.org>
  * Copyright (c) 2006 Uwe Stuehler <uwe@openbsd.org>
@@ -38,6 +38,7 @@
 #include <dev/ofw/openfirm.h>
 #include <dev/ofw/ofw_gpio.h>
 #include <dev/ofw/ofw_pinctrl.h>
+#include <dev/ofw/ofw_regulator.h>
 #include <dev/ofw/fdt.h>
 
 /* registers */
@@ -207,7 +208,6 @@ int imxesdhc_host_found(struct imxesdhc_softc *, bus_space_tag_t,
 void   imxesdhc_shutdown(void *);
 int    imxesdhc_intr(void *);
 
-void   imxesdhc_enable_vbus(uint32_t);
 void   imxesdhc_clock_enable(uint32_t);
 void   imxesdhc_pwrseq_pre(uint32_t);
 void   imxesdhc_pwrseq_post(uint32_t);
@@ -458,35 +458,6 @@ err:
        return;
 }
 
-void
-imxesdhc_enable_vbus(uint32_t phandle)
-{
-       uint32_t gpio[3];
-       int active;
-       int node;
-
-       node = OF_getnodebyphandle(phandle);
-       if (node == 0)
-               return;
-
-       if (!OF_is_compatible(node, "regulator-fixed"))
-               return;
-
-       pinctrl_byname(node, "default");
-
-       if (OF_getproplen(node, "enable-active-high") == 0)
-               active = 1;
-       else
-               active = 0;
-
-       if (OF_getpropintarray(node, "gpio", gpio,
-           sizeof(gpio)) != sizeof(gpio))
-               return;
-       
-       gpio_controller_config_pin(gpio, GPIO_CONFIG_OUTPUT);
-       gpio_controller_set_pin(gpio, active);
-}
-
 void
 imxesdhc_clock_enable(uint32_t phandle)
 {
@@ -698,7 +669,7 @@ imxesdhc_bus_power(sdmmc_chipset_handle_t sch, uint32_t ocr)
 
        /* enable mmc power */
        if (sc->sc_vmmc && vdd > 0)
-               imxesdhc_enable_vbus(sc->sc_vmmc);
+               regulator_enable(sc->sc_vmmc);
 
        if (sc->sc_vdd == 0 && vdd > 0)
                imxesdhc_pwrseq_post(sc->sc_pwrseq);