On Thu, Mar 25, 2021 at 12:54:02AM +1100, Jonathan Gray wrote:
> On Wed, Mar 24, 2021 at 11:14:43PM +1100, Jonathan Gray wrote:
> > On Mon, Mar 22, 2021 at 07:00:06PM -0500, Jordon wrote:
> > > 6.6 was the last release that works.  6.7 and 6.8 throw an input/output 
> > > error when it tries to create the partitions (right after you choose 
> > > ‘(W)hole disk’).
> > > 
> > > Am I the only person to try installing it to onboard storage in the last 
> > > year?  Or am I doing something wrong?
> > 
> > The workaround to limit emmc bus width is not done after the device tree
> > changes which removed the "ti,hwmods" property.  While reads work
> > without this writes give an error.
> > 
> > After adding calls to enable clocks emmc writes work without limiting
> > bus width.
> 
> updated diff with other ti,hwmods use

Looking at the device tree I see the clocks should be enabled by
omsysc(4) already.  I can't trigger emmc errors on writes at the moment
even after dropping the diff so I'm not sure what is going on.

Not handling vmmc-supply/regulator enable?

> 
> Index: omgpio.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/armv7/omap/omgpio.c,v
> retrieving revision 1.12
> diff -u -p -r1.12 omgpio.c
> --- omgpio.c  10 Apr 2020 22:02:45 -0000      1.12
> +++ omgpio.c  24 Mar 2021 13:46:44 -0000
> @@ -17,26 +17,21 @@
>  
>  #include <sys/param.h>
>  #include <sys/systm.h>
> -#include <sys/queue.h>
>  #include <sys/device.h>
> -#include <sys/malloc.h>
>  #include <sys/evcount.h>
>  #include <sys/gpio.h>
>  
> -#include <arm/cpufunc.h>
> -
>  #include <machine/bus.h>
>  #include <machine/fdt.h>
>  #include <machine/intr.h>
>  
>  #include <dev/gpio/gpiovar.h>
>  
> -#include <armv7/armv7/armv7var.h>
> -#include <armv7/omap/prcmvar.h>
>  #include <armv7/omap/omgpiovar.h>
>  
>  #include <dev/ofw/fdt.h>
>  #include <dev/ofw/openfirm.h>
> +#include <dev/ofw/ofw_clock.h>
>  #include <dev/ofw/ofw_gpio.h>
>  
>  #include "gpio.h"
> @@ -259,22 +254,12 @@ omgpio_attach(struct device *parent, str
>       struct omgpio_softc *sc = (struct omgpio_softc *) self;
>       struct gpiobus_attach_args gba;
>       u_int32_t       rev;
> -     int             i, len, unit;
> -     char            hwmods[64];
> +     int             i;
>  
>       if (faa->fa_nreg < 1)
>               return;
>  
> -     unit = -1;
> -     if ((len = OF_getprop(faa->fa_node, "ti,hwmods", hwmods,
> -         sizeof(hwmods))) == 6) {
> -             if ((strncmp(hwmods, "gpio", 4) == 0) &&
> -                 (hwmods[4] > '0') && (hwmods[4] <= '9'))
> -                     unit = hwmods[4] - '1';
> -     }
> -
> -     if (unit != -1)
> -             prcm_enablemodule(PRCM_GPIO0 + unit);
> +     clock_enable_all(faa->fa_node);
>  
>       sc->sc_node = faa->fa_node;
>       sc->sc_iot = faa->fa_iot;
> Index: ommmc.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/armv7/omap/ommmc.c,v
> retrieving revision 1.38
> diff -u -p -r1.38 ommmc.c
> --- ommmc.c   19 Jan 2021 18:04:43 -0000      1.38
> +++ ommmc.c   24 Mar 2021 13:46:44 -0000
> @@ -19,11 +19,8 @@
>  
>  /* Omap SD/MMC support derived from /sys/dev/sdmmc/sdhc.c */
>  
> -
>  #include <sys/param.h>
>  #include <sys/device.h>
> -#include <sys/kernel.h>
> -#include <sys/malloc.h>
>  #include <sys/systm.h>
>  #include <machine/bus.h>
>  #include <machine/fdt.h>
> @@ -31,10 +28,8 @@
>  #include <dev/sdmmc/sdmmcchip.h>
>  #include <dev/sdmmc/sdmmcvar.h>
>  
> -#include <armv7/armv7/armv7var.h>
> -#include <armv7/omap/prcmvar.h>
> -
>  #include <dev/ofw/openfirm.h>
> +#include <dev/ofw/ofw_clock.h>
>  #include <dev/ofw/ofw_gpio.h>
>  #include <dev/ofw/ofw_pinctrl.h>
>  #include <dev/ofw/fdt.h>
> @@ -304,8 +299,6 @@ ommmc_attach(struct device *parent, stru
>       struct sdmmcbus_attach_args      saa;
>       uint32_t                         caps, width;
>       uint32_t                         addr, size;
> -     int                              len, unit;
> -     char                             hwmods[128];
>  
>       if (faa->fa_nreg < 1)
>               return;
> @@ -322,14 +315,6 @@ ommmc_attach(struct device *parent, stru
>               size = faa->fa_reg[0].size;
>       }
>  
> -     unit = -1;
> -     if ((len = OF_getprop(faa->fa_node, "ti,hwmods", hwmods,
> -         sizeof(hwmods))) == 5) {
> -             if (!strncmp(hwmods, "mmc", 3) &&
> -                 (hwmods[3] > '0') && (hwmods[3] <= '9'))
> -                     unit = hwmods[3] - '1';
> -     }
> -
>       sc->sc_iot = faa->fa_iot;
>       if (bus_space_map(sc->sc_iot, addr, size, 0, &sc->sc_ioh))
>               panic("%s: bus_space_map failed!", __func__);
> @@ -339,9 +324,8 @@ ommmc_attach(struct device *parent, stru
>  
>       pinctrl_byname(faa->fa_node, "default");
>  
> -     /* Enable ICLKEN, FCLKEN? */
> -     if (unit != -1)
> -             prcm_enablemodule(PRCM_MMC0 + unit);
> +     clock_enable_all(faa->fa_node);
> +     reset_deassert_all(faa->fa_node);
>  
>       sc->sc_ih = arm_intr_establish_fdt(faa->fa_node, IPL_SDMMC,
>           ommmc_intr, sc, DEVNAME(sc));
> @@ -450,9 +434,6 @@ ommmc_attach(struct device *parent, stru
>               saa.caps |= SMC_CAPS_MMC_HIGHSPEED | SMC_CAPS_SD_HIGHSPEED;
>       }
>       width = OF_getpropint(faa->fa_node, "bus-width", 1);
> -     /* with bbb emmc width > 1 ommmc_wait_intr MMCHS_STAT_CC times out */
> -     if (unit > 0)
> -             width = 1;
>       if (width >= 8)
>               saa.caps |= SMC_CAPS_8BIT_MODE;
>       if (width >= 4)
> Index: omrng.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/armv7/omap/omrng.c,v
> retrieving revision 1.2
> diff -u -p -r1.2 omrng.c
> --- omrng.c   29 May 2020 04:42:23 -0000      1.2
> +++ omrng.c   24 Mar 2021 13:46:44 -0000
> @@ -24,10 +24,9 @@
>  #include <machine/fdt.h>
>  
>  #include <dev/ofw/openfirm.h>
> +#include <dev/ofw/ofw_clock.h>
>  #include <dev/ofw/fdt.h>
>  
> -#include <armv7/omap/prcmvar.h>
> -
>  /* Registers */
>  #define RNG_OUTPUT0          0x0000
>  #define RNG_OUTPUT1          0x0004
> @@ -110,8 +109,7 @@ omrng_attach(struct device *parent, stru
>  
>       printf("\n");
>  
> -     if (OF_getproplen(faa->fa_node, "ti,hwmods") > 0)
> -             prcm_enablemodule(PRCM_RNG);
> +     clock_enable_all(faa->fa_node);
>  
>       /* Configure and enable the RNG. */
>       HWRITE4(sc, RNG_CONFIG, 0x21 << RNG_CONFIG_MIN_CYCLES_SHIFT |
> Index: ti_iic.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/armv7/omap/ti_iic.c,v
> retrieving revision 1.13
> diff -u -p -r1.13 ti_iic.c
> --- ti_iic.c  10 Apr 2020 22:02:45 -0000      1.13
> +++ ti_iic.c  24 Mar 2021 13:46:44 -0000
> @@ -50,11 +50,9 @@
>   * SUCH DAMAGE.
>   */
>  
> -#include <sys/cdefs.h>
>  #include <sys/param.h>
>  #include <sys/systm.h>
>  #include <sys/device.h>
> -#include <sys/kernel.h>
>  #include <sys/rwlock.h>
>  
>  #include <machine/bus.h>
> @@ -63,12 +61,11 @@
>  
>  #include <dev/i2c/i2cvar.h>
>  
> -#include <armv7/armv7/armv7var.h>
> -#include <armv7/omap/prcmvar.h>
>  #include <armv7/omap/ti_iicreg.h>
>  
>  #include <dev/ofw/openfirm.h>
>  #include <dev/ofw/ofw_pinctrl.h>
> +#include <dev/ofw/ofw_clock.h>
>  #include <dev/ofw/fdt.h>
>  
>  #ifndef AM335X_I2C_SLAVE_ADDR
> @@ -165,8 +162,6 @@ ti_iic_attach(struct device *parent, str
>       struct fdt_attach_args *faa = aux;
>       struct i2cbus_attach_args iba;
>       uint16_t rev;
> -     int unit, len;
> -     char hwmods[128];
>  
>       if (faa->fa_nreg < 1)
>               return;
> @@ -174,14 +169,6 @@ ti_iic_attach(struct device *parent, str
>       sc->sc_iot = faa->fa_iot;
>       sc->sc_node = faa->fa_node;
>  
> -     unit = -1;
> -     if ((len = OF_getprop(faa->fa_node, "ti,hwmods", hwmods,
> -         sizeof(hwmods))) == 5) {
> -             if (!strncmp(hwmods, "i2c", 3) &&
> -                 (hwmods[3] > '0') && (hwmods[3] <= '9'))
> -                     unit = hwmods[3] - '1';
> -     }
> -
>       rw_init(&sc->sc_buslock, "tiiilk");
>  
>       sc->sc_rxthres = sc->sc_txthres = 4;
> @@ -195,8 +182,7 @@ ti_iic_attach(struct device *parent, str
>       sc->sc_ih = arm_intr_establish_fdt(faa->fa_node, IPL_NET,
>           ti_iic_intr, sc, DEVNAME(sc));
>  
> -     if (unit != -1)
> -             prcm_enablemodule(PRCM_I2C0 + unit);
> +     clock_enable_all(faa->fa_node);
>  
>       rev = I2C_READ_REG(sc, AM335X_I2C_REVNB_LO);
>       printf(" rev %d.%d\n",
> 
> 

Reply via email to