On Mon, Feb 27, 2017 at 04:16:30AM -0500, Ian Sutton wrote:
> On Mon, Feb 27, 2017 at 08:08:16PM +1100, Jonathan Gray wrote:
> > There is only one with "ti,edma3-tpcc".
> 
> Geez. It may be time to increase my font size.

This has been committed with some changes:
a nreg test at the start of attach
manual page changes
remains disabled in GENERIC as it isn't used yet
config line changed in RAMDISK as well
remains of table driven way of attaching edma removed

> 
> Index: conf/GENERIC
> ===================================================================
> RCS file: /cvs/src/sys/arch/armv7/conf/GENERIC,v
> retrieving revision 1.71
> diff -u -p -r1.71 GENERIC
> --- conf/GENERIC      23 Jan 2017 22:43:17 -0000      1.71
> +++ conf/GENERIC      27 Feb 2017 09:16:03 -0000
> @@ -63,7 +63,7 @@ omapid*             at omap?
>  # OMAP on-chip devices
>  intc*                at fdt?                 # OMAP3 interrupt controller
>  omwugen*     at fdt?                 # Wake-up generator
> -#edma*               at omap?                # OMAP3 dma controller
> +edma*                at fdt?                 # OMAP3 dma controller
>  prcm*                at omap?                # power/clock controller
>  ompinmux*    at fdt?                 # pin muxing
>  omdog*               at fdt?                 # watchdog timer
> Index: omap/edma.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/armv7/omap/edma.c,v
> retrieving revision 1.5
> diff -u -p -r1.5 edma.c
> --- omap/edma.c       22 Jan 2015 14:33:01 -0000      1.5
> +++ omap/edma.c       27 Feb 2017 09:16:03 -0000
> @@ -19,12 +19,15 @@
>  #include <sys/types.h>
>  #include <sys/systm.h>
>  
> -#include <machine/bus.h>
> +#include <machine/fdt.h>
>  
>  #include <armv7/armv7/armv7var.h>
>  #include <armv7/omap/prcmvar.h>
>  #include <armv7/omap/edmavar.h>
>  
> +#include <dev/ofw/openfirm.h>
> +#include <dev/ofw/fdt.h>
> +
>  #define DEVNAME(s)           ((s)->sc_dev.dv_xname)
>  
>  struct edma_softc {
> @@ -78,30 +81,39 @@ struct edma_softc {
>  
>  struct edma_softc *edma_sc;
>  
> +int  edma_match(struct device *, void *, void *);
>  void edma_attach(struct device *, struct device *, void *);
>  int  edma_comp_intr(void *);
>  
>  struct cfattach edma_ca = {
> -     sizeof(struct edma_softc), NULL, edma_attach
> +     sizeof(struct edma_softc), edma_match, edma_attach
>  };
>  
>  struct cfdriver edma_cd = {
>       NULL, "edma", DV_DULL
>  };
>  
> +int
> +edma_match(struct device *parent, void *match, void *aux)
> +{
> +     struct fdt_attach_args *faa = aux;
> +
> +     return OF_is_compatible(faa->fa_node, "ti,edma3-tpcc");
> +}
> +
>  void
>  edma_attach(struct device *parent, struct device *self, void *aux)
>  {
> -     struct armv7_attach_args *aa = aux;
> +     struct fdt_attach_args *faa = aux;
>       struct edma_softc *sc = (struct edma_softc *)self;
>       uint32_t rev;
>       int i;
>  
> -     sc->sc_iot = aa->aa_iot;
> +     sc->sc_iot = faa->fa_iot;
>  
>       /* Map Base address for TPCC and TPCTX */
> -     if (bus_space_map(sc->sc_iot, aa->aa_dev->mem[0].addr,
> -         aa->aa_dev->mem[0].size, 0, &sc->sc_tpcc)) {
> +     if (bus_space_map(sc->sc_iot, faa->fa_reg[0].addr,
> +         faa->fa_reg[0].size, 0, &sc->sc_tpcc)) {
>               printf("%s: bus_space_map failed for TPCC\n", DEVNAME(sc));
>               return ;
>       }
> @@ -115,12 +127,12 @@ edma_attach(struct device *parent, struc
>  
>       /* XXX IPL_VM ? */
>       /* Enable interrupts line */
> -     sc->sc_ih_comp = arm_intr_establish(aa->aa_dev->irq[0], IPL_VM,
> +     sc->sc_ih_comp = arm_intr_establish_fdt(faa->fa_node, IPL_VM,
>           edma_comp_intr, sc, DEVNAME(sc));
>       if (sc->sc_ih_comp == NULL) {
>               printf("%s: unable to establish interrupt comp\n", DEVNAME(sc));
>               bus_space_unmap(sc->sc_iot, sc->sc_tpcc,
> -                 aa->aa_dev->mem[0].size);
> +                 faa->fa_reg[0].size);
>               return ;
>       }
>  
> Index: omap/files.omap
> ===================================================================
> RCS file: /cvs/src/sys/arch/armv7/omap/files.omap,v
> retrieving revision 1.19
> diff -u -p -r1.19 files.omap
> --- omap/files.omap   3 Oct 2016 01:59:20 -0000       1.19
> +++ omap/files.omap   27 Feb 2017 09:16:03 -0000
> @@ -39,7 +39,7 @@ attach tiiic at fdt
>  file arch/armv7/omap/ti_iic.c                tiiic
>  
>  device edma
> -attach edma at omap
> +attach edma at fdt
>  file arch/armv7/omap/edma.c                  edma
>  
>  device intc
> 

Reply via email to