Date: Fri, 27 Jan 2017 11:57:33 +0100 From: Michal Meloun <melounmichal@gmail.com> To: Wojciech Macek <wma@FreeBSD.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r312743 - head/sys/dev/cesa Message-ID: <06845374-0a4d-dc59-ee6f-39f76422a445@freebsd.org> In-Reply-To: <201701251022.v0PAM70M046189@repo.freebsd.org> References: <201701251022.v0PAM70M046189@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
This breaks DB-88F6XXX kernel with: --- cesa.o --- ... /usr2/Meloun/git/tegra/sys/dev/cesa/cesa.c:960:57: error: use of undeclared identifier 'CESA_SA_CMD_SHA2' CESA_REG_WRITE(sc, CESA_SA_CMD, CESA_SA_CMD_ACTVATE | CESA_SA_CMD_SHA2); ^ /usr2/Meloun/git/tegra/sys/dev/cesa/cesa.c:1209:10: error: use of undeclared identifier 'CESA_TDMA_NUM_OUTSTAND' val |= CESA_TDMA_NUM_OUTSTAND; ^ 2 errors generated. *** [cesa.o] Error code 1 Michal On 25.01.2017 11:22, Wojciech Macek wrote: > Author: wma > Date: Wed Jan 25 10:22:07 2017 > New Revision: 312743 > URL: https://svnweb.freebsd.org/changeset/base/312743 > > Log: > Use SoC ID - based detection in CESA > > This commit introduces following changes in order to get rid of > ifdef's from all around the driver. > * Introduce sc_soc_id field in cesa_softc structure - this value is > obtained in cesa_attach() anyway, so make use of it. > * Replace ifdefs with SoC ID checks. > * Perform PM control status only for relevant SoC's. > > Submitted by: Marcin Wojtas <mw@semihalf.com> > Obtained from: Semihalf > Sponsored by: Stormshield > Reviewed by: zbb > Differential revision: https://reviews.freebsd.org/D9247 > > Modified: > head/sys/dev/cesa/cesa.c > head/sys/dev/cesa/cesa.h > > Modified: head/sys/dev/cesa/cesa.c > ============================================================================== > --- head/sys/dev/cesa/cesa.c Wed Jan 25 07:51:53 2017 (r312742) > +++ head/sys/dev/cesa/cesa.c Wed Jan 25 10:22:07 2017 (r312743) > @@ -953,11 +953,13 @@ cesa_execute(struct cesa_softc *sc) > ctd = STAILQ_FIRST(&cr->cr_tdesc); > > CESA_TDMA_WRITE(sc, CESA_TDMA_ND, ctd->ctd_cthd_paddr); > -#if defined (SOC_MV_ARMADA38X) > - CESA_REG_WRITE(sc, CESA_SA_CMD, CESA_SA_CMD_ACTVATE | CESA_SA_CMD_SHA2); > -#else > - CESA_REG_WRITE(sc, CESA_SA_CMD, CESA_SA_CMD_ACTVATE); > -#endif > + > + if (sc->sc_soc_id == MV_DEV_88F6828 || > + sc->sc_soc_id == MV_DEV_88F6820 || > + sc->sc_soc_id == MV_DEV_88F6810) > + CESA_REG_WRITE(sc, CESA_SA_CMD, CESA_SA_CMD_ACTVATE | CESA_SA_CMD_SHA2); > + else > + CESA_REG_WRITE(sc, CESA_SA_CMD, CESA_SA_CMD_ACTVATE); > > CESA_UNLOCK(sc, requests); > } > @@ -968,6 +970,7 @@ cesa_setup_sram(struct cesa_softc *sc) > phandle_t sram_node; > ihandle_t sram_ihandle; > pcell_t sram_handle, sram_reg[2]; > + void *sram_va; > int rv; > > rv = OF_getencprop(ofw_bus_get_node(sc->sc_dev), "sram-handle", > @@ -986,15 +989,17 @@ cesa_setup_sram(struct cesa_softc *sc) > /* Store SRAM size to be able to unmap in detach() */ > sc->sc_sram_size = sram_reg[1]; > > -#if defined(SOC_MV_ARMADA38X) > - void *sram_va; > + if (sc->sc_soc_id != MV_DEV_88F6828 && > + sc->sc_soc_id != MV_DEV_88F6820 && > + sc->sc_soc_id != MV_DEV_88F6810) > + return (0); > > /* SRAM memory was not mapped in platform_sram_devmap(), map it now */ > sram_va = pmap_mapdev(sc->sc_sram_base_pa, sc->sc_sram_size); > if (sram_va == NULL) > return (ENOMEM); > sc->sc_sram_base_va = (vm_offset_t)sram_va; > -#endif > + > return (0); > } > > @@ -1018,7 +1023,7 @@ static int > cesa_attach(device_t dev) > { > struct cesa_softc *sc; > - uint32_t d, r; > + uint32_t d, r, val; > int error; > int i; > > @@ -1027,23 +1032,19 @@ cesa_attach(device_t dev) > sc->sc_error = 0; > sc->sc_dev = dev; > > - /* Check if CESA peripheral device has power turned on */ > -#if defined(SOC_MV_KIRKWOOD) > - if (soc_power_ctrl_get(CPU_PM_CTRL_CRYPTO) == CPU_PM_CTRL_CRYPTO) { > - device_printf(dev, "not powered on\n"); > - return (ENXIO); > - } > -#else > - if (soc_power_ctrl_get(CPU_PM_CTRL_CRYPTO) != CPU_PM_CTRL_CRYPTO) { > - device_printf(dev, "not powered on\n"); > - return (ENXIO); > - } > -#endif > soc_id(&d, &r); > > switch (d) { > case MV_DEV_88F6281: > case MV_DEV_88F6282: > + /* Check if CESA peripheral device has power turned on */ > + if (soc_power_ctrl_get(CPU_PM_CTRL_CRYPTO) == > + CPU_PM_CTRL_CRYPTO) { > + device_printf(dev, "not powered on\n"); > + return (ENXIO); > + } > + sc->sc_tperr = 0; > + break; > case MV_DEV_88F6828: > case MV_DEV_88F6820: > case MV_DEV_88F6810: > @@ -1051,12 +1052,20 @@ cesa_attach(device_t dev) > break; > case MV_DEV_MV78100: > case MV_DEV_MV78100_Z0: > + /* Check if CESA peripheral device has power turned on */ > + if (soc_power_ctrl_get(CPU_PM_CTRL_CRYPTO) != > + CPU_PM_CTRL_CRYPTO) { > + device_printf(dev, "not powered on\n"); > + return (ENXIO); > + } > sc->sc_tperr = CESA_ICR_TPERR; > break; > default: > return (ENXIO); > } > > + sc->sc_soc_id = d; > + > /* Initialize mutexes */ > mtx_init(&sc->sc_sc_lock, device_get_nameunit(dev), > "CESA Shared Data", MTX_DEF); > @@ -1191,12 +1200,15 @@ cesa_attach(device_t dev) > * - Outstanding reads enabled, > * - No byte-swap. > */ > - CESA_TDMA_WRITE(sc, CESA_TDMA_CR, CESA_TDMA_CR_DBL128 | > - CESA_TDMA_CR_SBL128 | CESA_TDMA_CR_ORDEN | CESA_TDMA_CR_NBS | > -#if defined (SOC_MV_ARMADA38X) > - CESA_TDMA_NUM_OUTSTAND | > -#endif > - CESA_TDMA_CR_ENABLE); > + val = CESA_TDMA_CR_DBL128 | CESA_TDMA_CR_SBL128 | > + CESA_TDMA_CR_ORDEN | CESA_TDMA_CR_NBS | CESA_TDMA_CR_ENABLE; > + > + if (sc->sc_soc_id == MV_DEV_88F6828 || > + sc->sc_soc_id == MV_DEV_88F6820 || > + sc->sc_soc_id == MV_DEV_88F6810) > + val |= CESA_TDMA_NUM_OUTSTAND; > + > + CESA_TDMA_WRITE(sc, CESA_TDMA_CR, val); > > /* > * Initialize SA: > @@ -1248,9 +1260,10 @@ err4: > err3: > bus_teardown_intr(dev, sc->sc_res[RES_CESA_IRQ], sc->sc_icookie); > err2: > -#if defined(SOC_MV_ARMADA38X) > - pmap_unmapdev(sc->sc_sram_base_va, sc->sc_sram_size); > -#endif > + if (sc->sc_soc_id == MV_DEV_88F6828 || > + sc->sc_soc_id == MV_DEV_88F6820 || > + sc->sc_soc_id == MV_DEV_88F6810) > + pmap_unmapdev(sc->sc_sram_base_va, sc->sc_sram_size); > err1: > bus_release_resources(dev, cesa_res_spec, sc->sc_res); > err0: > @@ -1298,10 +1311,12 @@ cesa_detach(device_t dev) > /* Relase I/O and IRQ resources */ > bus_release_resources(dev, cesa_res_spec, sc->sc_res); > > -#if defined(SOC_MV_ARMADA38X) > /* Unmap SRAM memory */ > - pmap_unmapdev(sc->sc_sram_base_va, sc->sc_sram_size); > -#endif > + if (sc->sc_soc_id == MV_DEV_88F6828 || > + sc->sc_soc_id == MV_DEV_88F6820 || > + sc->sc_soc_id == MV_DEV_88F6810) > + pmap_unmapdev(sc->sc_sram_base_va, sc->sc_sram_size); > + > /* Destroy mutexes */ > mtx_destroy(&sc->sc_sessions_lock); > mtx_destroy(&sc->sc_requests_lock); > > Modified: head/sys/dev/cesa/cesa.h > ============================================================================== > --- head/sys/dev/cesa/cesa.h Wed Jan 25 07:51:53 2017 (r312742) > +++ head/sys/dev/cesa/cesa.h Wed Jan 25 10:22:07 2017 (r312743) > @@ -231,6 +231,7 @@ struct cesa_packet { > struct cesa_softc { > device_t sc_dev; > int32_t sc_cid; > + uint32_t sc_soc_id; > struct resource *sc_res[RES_CESA_NUM]; > void *sc_icookie; > bus_dma_tag_t sc_data_dtag; >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?06845374-0a4d-dc59-ee6f-39f76422a445>