CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jakllsch Date: Mon Apr 1 15:52:08 UTC 2024 Modified Files: src/sys/arch/arm/ti: ti_gpio.c Log Message: ti_gpio: add gpio(4) interrupt support tested with gpiopps(4) on Beagle Bone Black To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/ti/ti_gpio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_gpio.c diff -u src/sys/arch/arm/ti/ti_gpio.c:1.14 src/sys/arch/arm/ti/ti_gpio.c:1.15 --- src/sys/arch/arm/ti/ti_gpio.c:1.14 Sat Aug 7 16:18:46 2021 +++ src/sys/arch/arm/ti/ti_gpio.c Mon Apr 1 15:52:08 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_gpio.c,v 1.14 2021/08/07 16:18:46 thorpej Exp $ */ +/* $NetBSD: ti_gpio.c,v 1.15 2024/04/01 15:52:08 jakllsch Exp $ */ /*- * Copyright (c) 2019 Jared McNeill @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_gpio.c,v 1.14 2021/08/07 16:18:46 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_gpio.c,v 1.15 2024/04/01 15:52:08 jakllsch Exp $"); #include #include @@ -262,10 +262,8 @@ static struct fdtbus_gpio_controller_fun }; static void -ti_gpio_intr_disestablish(device_t dev, void *ih) +ti_gpio_intr_disable(struct ti_gpio_softc * const sc, struct ti_gpio_intr * const intr) { - struct ti_gpio_softc * const sc = device_private(dev); - struct ti_gpio_intr *intr = ih; const u_int pin = intr->intr_pin; const uint32_t pin_mask = __BIT(pin); uint32_t val; @@ -280,6 +278,7 @@ ti_gpio_intr_disestablish(device_t dev, intr->intr_func = NULL; intr->intr_arg = NULL; + intr->intr_mpsafe = false; } static void * @@ -359,6 +358,15 @@ ti_gpio_intr_establish(device_t dev, u_i return >sc_intr[pin]; } +static void +ti_gpio_intr_disestablish(device_t dev, void *ih) +{ + struct ti_gpio_softc * const sc = device_private(dev); + struct ti_gpio_intr * const intr = ih; + + ti_gpio_intr_disable(sc, intr); +} + static bool ti_gpio_intrstr(device_t dev, u_int *specifier, char *buf, size_t buflen) { @@ -423,6 +431,106 @@ ti_gpio_pin_ctl(void *priv, int pin, int mutex_exit(>sc_lock); } +static void * +ti_gpio_gp_intr_establish(void *vsc, int pin, int ipl, int irqmode, +int (*func)(void *), void *arg) +{ + struct ti_gpio_softc * const sc = vsc; + uint32_t val; + + if (ipl != IPL_VM || pin < 0 || pin >= __arraycount(sc->sc_pins)) + return NULL; + + if (sc->sc_intr[pin].intr_func != NULL) + return NULL; + + /* + * Enabling both high and low level triggers will cause the GPIO + * controller to always assert the interrupt. + */ + if ((irqmode & (GPIO_INTR_LOW_LEVEL|GPIO_INTR_HIGH_LEVEL)) == + (GPIO_INTR_LOW_LEVEL|GPIO_INTR_HIGH_LEVEL)) + return NULL; + + /* Set pin as input */ + mutex_enter(>sc_lock); + if (ti_gpio_ctl(sc, pin, GPIO_PIN_INPUT) != 0) { + mutex_exit(>sc_lock); + return NULL; + } + + sc->sc_intr[pin].intr_pin = pin; + sc->sc_intr[pin].intr_func = func; + sc->sc_intr[pin].intr_arg = arg; + sc->sc_intr[pin].intr_mpsafe = (irqmode & GPIO_INTR_MPSAFE) != 0; + + const uint32_t pin_mask = __BIT(pin); + + /* Configure triggers */ + val = RD4(sc, GPIO_LEVELDETECT0); + if ((irqmode & GPIO_INTR_LOW_LEVEL) != 0) + val |= pin_mask; + else + val &= ~pin_mask; + WR4(sc, GPIO_LEVELDETECT0, val); + + val = RD4(sc, GPIO_LEVELDETECT1); + if ((irqmode & GPIO_INTR_HIGH_LEVEL) != 0) + val |= pin_mask; + else + val &= ~pin_mask; + WR4(sc, GPIO_LEVELDETECT1, val); + + val = RD4(sc, GPIO_RISINGDETECT); + if ((irqmode & GPIO_INTR_POS_EDGE) != 0 || + (irqmode & GPIO_INTR_DOUBLE_EDGE) != 0) + val |= pin_mask; + else + val &= ~pin_mask; + WR4(sc, GPIO_RISINGDETECT, val); + + val = RD4(sc, GPIO_FALLINGDETECT); + if ((irqmode & GPIO_INTR_NEG_EDGE) != 0 || + (irqmode & GPIO_INTR_DOUBLE_EDGE) != 0) + val |= pin_mask; + else + val &= ~pin_mask; + WR4(sc, GPIO_FALLINGDETECT, val); + + /* Enable interrupts */ + if (sc->sc_type == TI_GPIO_OMAP3) { + val = RD4(sc, GPIO_IRQENABLE1); + WR4(sc, GPIO_IRQENABLE1, val | pin_mask); + } else { + WR4(sc, GPIO_IRQENABLE1_SET, pin_mask); + } + + mutex_exit(>sc_lock); + + return >sc_intr[pin]; +} + +static void +ti_gpio_gp_intr_disestablish(void *vsc, void *ih) +{ + struct ti_gpio_softc * const sc = vsc; + struct ti_gpio_intr * const intr = ih; + + ti_gpio_intr_disable(sc, intr); +} + +static bool +ti_gpio_gp_intrstr(void *vsc, int pin, int irqmode, char *buf, size_t buflen) +{ + struct ti_gpio_softc * const sc = vsc; + + if (pin < 0 || pin >= TI_GPIO_NPINS) + return false; + + snprintf(buf, buflen, "%s pin %d", sc->sc_modname, pin); + return true; +} + static void ti_gpio_attach_ports(struct ti_gpio_softc *sc) { @@ -434,10 +542,17 @@ ti_gpio_attach_ports(struct ti_gpio_soft gp->gp_pin_read = ti_gpio_pin_read; gp->gp_pin_write = ti_gpio_pin_write; gp->gp_pin_ctl = ti_gpio_pin_ctl; + gp->gp_intr_establish = ti_gpio_gp_intr_establish; + gp->gp_intr_disestablish = ti_gpio_gp_intr_disestablish; +
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jakllsch Date: Mon Apr 1 15:52:08 UTC 2024 Modified Files: src/sys/arch/arm/ti: ti_gpio.c Log Message: ti_gpio: add gpio(4) interrupt support tested with gpiopps(4) on Beagle Bone Black To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/ti/ti_gpio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: gutteridge Date: Tue Sep 5 02:59:07 UTC 2023 Modified Files: src/sys/arch/arm/ti: ti_com.c Log Message: ti_com.c: set sc_type to COM_TYPE_OMAP Avoid a kernel hang reported by Brook Milligan in PR port-arm/57598. Patch suggested by RVP, seems correct to several of us. (If this introduces a regression with some board, sorry, mea culpa. But in that case we should still be carrying this, just conditionalized.) To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/ti/ti_com.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: gutteridge Date: Tue Sep 5 02:59:07 UTC 2023 Modified Files: src/sys/arch/arm/ti: ti_com.c Log Message: ti_com.c: set sc_type to COM_TYPE_OMAP Avoid a kernel hang reported by Brook Milligan in PR port-arm/57598. Patch suggested by RVP, seems correct to several of us. (If this introduces a regression with some board, sorry, mea culpa. But in that case we should still be carrying this, just conditionalized.) To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/ti/ti_com.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_com.c diff -u src/sys/arch/arm/ti/ti_com.c:1.11 src/sys/arch/arm/ti/ti_com.c:1.12 --- src/sys/arch/arm/ti/ti_com.c:1.11 Wed Jan 27 03:10:20 2021 +++ src/sys/arch/arm/ti/ti_com.c Tue Sep 5 02:59:07 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_com.c,v 1.11 2021/01/27 03:10:20 thorpej Exp $ */ +/* $NetBSD: ti_com.c,v 1.12 2023/09/05 02:59:07 gutteridge Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: ti_com.c,v 1.11 2021/01/27 03:10:20 thorpej Exp $"); +__KERNEL_RCSID(1, "$NetBSD: ti_com.c,v 1.12 2023/09/05 02:59:07 gutteridge Exp $"); #include #include @@ -95,7 +95,7 @@ ti_com_attach(device_t parent, device_t return; } - sc->sc_type = COM_TYPE_NORMAL; + sc->sc_type = COM_TYPE_OMAP; error = bus_space_map(bst, addr, size, 0, ); if (error) {
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: sekiya Date: Mon Feb 27 21:15:09 UTC 2023 Modified Files: src/sys/arch/arm/ti: if_cpsw.c Log Message: Uncomment and protect sanity checks that would drop into the debugger with a CPSW_DEBUG_DMA define. This handles a condition where checking for DMA_RXEOQ in the received packet results in the console being spammed with "rxeoq" messages, which soon results in a kernel panic. The corresponding Debugger() call for this check was commented out. The TI documentation ("AM335x and AMIC110 Sitara™ Processors Technical Reference Manual") documents the EOQ bit thus: (14.3.2.4.1.2.4) This bit is set by the EMAC when the EMAC identifies that a descriptor is the last for a given packet received (also sets the EOP flag), and there are no more descriptors in the receive list (next descriptor pointer is NULL). The software application can use this bit to detect when the EMAC receiver for the corresponding channel has halted. This is useful when the application appends additional free buffer descriptors to an active receive queue. Note that this flag is valid on EOP descriptors only. Moving this check (and the offending printf() ) into a debug #ifdef results in the BeagleBone Green surviving the nightly checks; it would always drop into the debugger before this change. To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/ti/if_cpsw.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: sekiya Date: Mon Feb 27 21:15:09 UTC 2023 Modified Files: src/sys/arch/arm/ti: if_cpsw.c Log Message: Uncomment and protect sanity checks that would drop into the debugger with a CPSW_DEBUG_DMA define. This handles a condition where checking for DMA_RXEOQ in the received packet results in the console being spammed with "rxeoq" messages, which soon results in a kernel panic. The corresponding Debugger() call for this check was commented out. The TI documentation ("AM335x and AMIC110 Sitara™ Processors Technical Reference Manual") documents the EOQ bit thus: (14.3.2.4.1.2.4) This bit is set by the EMAC when the EMAC identifies that a descriptor is the last for a given packet received (also sets the EOP flag), and there are no more descriptors in the receive list (next descriptor pointer is NULL). The software application can use this bit to detect when the EMAC receiver for the corresponding channel has halted. This is useful when the application appends additional free buffer descriptors to an active receive queue. Note that this flag is valid on EOP descriptors only. Moving this check (and the offending printf() ) into a debug #ifdef results in the BeagleBone Green surviving the nightly checks; it would always drop into the debugger before this change. To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/ti/if_cpsw.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/if_cpsw.c diff -u src/sys/arch/arm/ti/if_cpsw.c:1.16 src/sys/arch/arm/ti/if_cpsw.c:1.17 --- src/sys/arch/arm/ti/if_cpsw.c:1.16 Sun Sep 18 15:47:09 2022 +++ src/sys/arch/arm/ti/if_cpsw.c Mon Feb 27 21:15:09 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: if_cpsw.c,v 1.16 2022/09/18 15:47:09 thorpej Exp $ */ +/* $NetBSD: if_cpsw.c,v 1.17 2023/02/27 21:15:09 sekiya Exp $ */ /* * Copyright (c) 2013 Jonathan A. Kollasch @@ -53,7 +53,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: if_cpsw.c,v 1.16 2022/09/18 15:47:09 thorpej Exp $"); +__KERNEL_RCSID(1, "$NetBSD: if_cpsw.c,v 1.17 2023/02/27 21:15:09 sekiya Exp $"); #include #include @@ -95,6 +95,8 @@ __KERNEL_RCSID(1, "$NetBSD: if_cpsw.c,v CTASSERT(powerof2(CPSW_NTXDESCS)); CTASSERT(powerof2(CPSW_NRXDESCS)); +#undef CPSW_DEBUG_DMA /* define this for DMA debugging */ + #define CPSW_PAD_LEN (ETHER_MIN_LEN - ETHER_CRC_LEN) #define TXDESC_NEXT(x) cpsw_txdesc_adjust((x), 1) @@ -1181,10 +1183,12 @@ cpsw_rxintr(void *arg) return 1; } +#if defined(CPSW_DEBUG_DMA) if ((dw[3] & (CPDMA_BD_SOP | CPDMA_BD_EOP)) != (CPDMA_BD_SOP | CPDMA_BD_EOP)) { - //Debugger(); + Debugger(); } +#endif bus_dmamap_sync(sc->sc_bdt, dm, 0, dm->dm_mapsize, BUS_DMASYNC_POSTREAD); @@ -1219,10 +1223,12 @@ next: cpsw_rxdesc_paddr(sc, i)); } +#if defined(CPSW_DEBUG_DMA) if (sc->sc_rxeoq) { device_printf(sc->sc_dev, "rxeoq\n"); - //Debugger(); + Debugger(); } +#endif cpsw_write_4(sc, CPSW_CPDMA_CPDMA_EOI_VECTOR, CPSW_INTROFF_RX); @@ -1269,9 +1275,11 @@ cpsw_txintr(void *arg) cpsw_get_txdesc(sc, sc->sc_txhead, ); +#if defined(CPSW_DEBUG_DMA) if (dw[2] == 0) { //Debugger(); } +#endif if (ISSET(dw[3], CPDMA_BD_SOP) == 0) goto next;
Re: CVS commit: src/sys/arch/arm/ti
> Module Name:src > Committed By: riastradh > Date: Sun Sep 25 07:50:32 UTC 2022 > > Modified Files: > src/sys/arch/arm/ti: ti_fb.c ti_lcdc.c > > Log Message: > tilcdc(4): Set is_console on the drm device, not the fb child. > > The drm device is represented by a rockchip,display-subsystem node in > the device tree. The fb child is a purely software abstraction used > by drm. This was supposed to read: The drm device is represented by a ti,am33xx-tilcdc node in the device tree. The fb child is a purely software abstraction used by drm.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: riastradh Date: Sun Sep 25 07:50:32 UTC 2022 Modified Files: src/sys/arch/arm/ti: ti_fb.c ti_lcdc.c Log Message: tilcdc(4): Set is_console on the drm device, not the fb child. The drm device is represented by a rockchip,display-subsystem node in the device tree. The fb child is a purely software abstraction used by drm. The is_console property is used by MD firmware logic to mark which actual device in hardware bus enumeration like PCI or FDT the system has chosen for the console early at boot, so hanging it on the node for the real hardware device makes more sense than hanging it on the software abstraction, and is consistent with recent changes to drmfb to respect its setting on other platforms for hardware devices. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/ti/ti_fb.c cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/ti/ti_lcdc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_fb.c diff -u src/sys/arch/arm/ti/ti_fb.c:1.3 src/sys/arch/arm/ti/ti_fb.c:1.4 --- src/sys/arch/arm/ti/ti_fb.c:1.3 Sun Dec 19 12:44:57 2021 +++ src/sys/arch/arm/ti/ti_fb.c Sun Sep 25 07:50:32 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_fb.c,v 1.3 2021/12/19 12:44:57 riastradh Exp $ */ +/* $NetBSD: ti_fb.c,v 1.4 2022/09/25 07:50:32 riastradh Exp $ */ /*- * Copyright (c) 2015-2019 Jared McNeill @@ -29,7 +29,7 @@ #include "opt_wsdisplay_compat.h" #include -__KERNEL_RCSID(0, "$NetBSD: ti_fb.c,v 1.3 2021/12/19 12:44:57 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_fb.c,v 1.4 2022/09/25 07:50:32 riastradh Exp $"); #include #include @@ -100,13 +100,6 @@ tilcdc_fb_init(struct tilcdc_drm_task *t sc_attach_task); device_t self = sc->sc_dev; struct tilcdcfb_attach_args * const tfa = >sc_tfa; - -#ifdef WSDISPLAY_MULTICONS - prop_dictionary_t dict = device_properties(self); - const bool is_console = true; - prop_dictionary_set_bool(dict, "is_console", is_console); -#endif - const struct drmfb_attach_args da = { .da_dev = self, .da_fb_helper = tfa->tfa_fb_helper, Index: src/sys/arch/arm/ti/ti_lcdc.c diff -u src/sys/arch/arm/ti/ti_lcdc.c:1.13 src/sys/arch/arm/ti/ti_lcdc.c:1.14 --- src/sys/arch/arm/ti/ti_lcdc.c:1.13 Sat Jul 2 05:04:36 2022 +++ src/sys/arch/arm/ti/ti_lcdc.c Sun Sep 25 07:50:32 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_lcdc.c,v 1.13 2022/07/02 05:04:36 skrll Exp $ */ +/* $NetBSD: ti_lcdc.c,v 1.14 2022/09/25 07:50:32 riastradh Exp $ */ /*- * Copyright (c) 2019 Jared D. McNeill @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v 1.13 2022/07/02 05:04:36 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v 1.14 2022/09/25 07:50:32 riastradh Exp $"); #include #include @@ -392,6 +392,11 @@ tilcdc_attach(device_t parent, device_t return; } +#ifdef WSDISPLAY_MULTICONS + const bool is_console = true; + prop_dictionary_set_bool(dict, "is_console", is_console); +#endif + if (fdtbus_get_reg(phandle, 0, , ) != 0) { aprint_error(": couldn't get registers\n"); return;
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: riastradh Date: Sun Sep 25 07:50:32 UTC 2022 Modified Files: src/sys/arch/arm/ti: ti_fb.c ti_lcdc.c Log Message: tilcdc(4): Set is_console on the drm device, not the fb child. The drm device is represented by a rockchip,display-subsystem node in the device tree. The fb child is a purely software abstraction used by drm. The is_console property is used by MD firmware logic to mark which actual device in hardware bus enumeration like PCI or FDT the system has chosen for the console early at boot, so hanging it on the node for the real hardware device makes more sense than hanging it on the software abstraction, and is consistent with recent changes to drmfb to respect its setting on other platforms for hardware devices. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/ti/ti_fb.c cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/ti/ti_lcdc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: thorpej Date: Sun Sep 18 15:47:09 UTC 2022 Modified Files: src/sys/arch/arm/ti: if_cpsw.c Log Message: Eliminate use of IFF_OACTIVE. To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/ti/if_cpsw.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/if_cpsw.c diff -u src/sys/arch/arm/ti/if_cpsw.c:1.15 src/sys/arch/arm/ti/if_cpsw.c:1.16 --- src/sys/arch/arm/ti/if_cpsw.c:1.15 Sun Nov 7 17:12:55 2021 +++ src/sys/arch/arm/ti/if_cpsw.c Sun Sep 18 15:47:09 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: if_cpsw.c,v 1.15 2021/11/07 17:12:55 jmcneill Exp $ */ +/* $NetBSD: if_cpsw.c,v 1.16 2022/09/18 15:47:09 thorpej Exp $ */ /* * Copyright (c) 2013 Jonathan A. Kollasch @@ -53,7 +53,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: if_cpsw.c,v 1.15 2021/11/07 17:12:55 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: if_cpsw.c,v 1.16 2022/09/18 15:47:09 thorpej Exp $"); #include #include @@ -130,6 +130,7 @@ struct cpsw_softc { volatile u_int sc_txnext; volatile u_int sc_txhead; volatile u_int sc_rxhead; + bool sc_txbusy; void *sc_rxthih; void *sc_rxih; void *sc_txih; @@ -622,8 +623,10 @@ cpsw_start(struct ifnet *ifp) KERNHIST_FUNC(__func__); CPSWHIST_CALLARGS(sc, 0, 0, 0); - if (__predict_false((ifp->if_flags & (IFF_RUNNING | IFF_OACTIVE)) != - IFF_RUNNING)) { + if (__predict_false((ifp->if_flags & IFF_RUNNING) == 0)) { + return; + } + if (__predict_false(sc->sc_txbusy)) { return; } @@ -655,7 +658,7 @@ cpsw_start(struct ifnet *ifp) } if (dm->dm_nsegs + 1 >= txfree) { - ifp->if_flags |= IFF_OACTIVE; + sc->sc_txbusy = true; bus_dmamap_unload(sc->sc_bdt, dm); break; } @@ -1033,7 +1036,7 @@ cpsw_init(struct ifnet *ifp) sc->sc_txeoq = true; callout_schedule(>sc_tick_ch, hz); ifp->if_flags |= IFF_RUNNING; - ifp->if_flags &= ~IFF_OACTIVE; + sc->sc_txbusy = false; return 0; } @@ -1101,8 +1104,9 @@ cpsw_stop(struct ifnet *ifp, int disable rdp->tx_mb[i] = NULL; } - ifp->if_flags &= ~(IFF_RUNNING | IFF_OACTIVE); + ifp->if_flags &= ~IFF_RUNNING; ifp->if_timer = 0; + sc->sc_txbusy = false; if (!disable) return; @@ -1295,7 +1299,7 @@ cpsw_txintr(void *arg) handled = true; - ifp->if_flags &= ~IFF_OACTIVE; + sc->sc_txbusy = false; next: if (ISSET(dw[3], CPDMA_BD_EOP) && ISSET(dw[3], CPDMA_BD_EOQ)) {
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: thorpej Date: Sun Sep 18 15:47:09 UTC 2022 Modified Files: src/sys/arch/arm/ti: if_cpsw.c Log Message: Eliminate use of IFF_OACTIVE. To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/ti/if_cpsw.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: skrll Date: Sat Jul 2 05:04:36 UTC 2022 Modified Files: src/sys/arch/arm/ti: ti_lcdc.c Log Message: sort previous To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/ti/ti_lcdc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: skrll Date: Sat Jul 2 05:04:36 UTC 2022 Modified Files: src/sys/arch/arm/ti: ti_lcdc.c Log Message: sort previous To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/ti/ti_lcdc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_lcdc.c diff -u src/sys/arch/arm/ti/ti_lcdc.c:1.12 src/sys/arch/arm/ti/ti_lcdc.c:1.13 --- src/sys/arch/arm/ti/ti_lcdc.c:1.12 Sat Jul 2 05:03:36 2022 +++ src/sys/arch/arm/ti/ti_lcdc.c Sat Jul 2 05:04:36 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_lcdc.c,v 1.12 2022/07/02 05:03:36 skrll Exp $ */ +/* $NetBSD: ti_lcdc.c,v 1.13 2022/07/02 05:04:36 skrll Exp $ */ /*- * Copyright (c) 2019 Jared D. McNeill @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v 1.12 2022/07/02 05:03:36 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v 1.13 2022/07/02 05:04:36 skrll Exp $"); #include #include @@ -44,8 +44,8 @@ __KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v #include #include #include -#include #include +#include #include #include
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: skrll Date: Sat Jul 2 05:03:37 UTC 2022 Modified Files: src/sys/arch/arm/ti: ti_lcdc.c Log Message: Make this compile again. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/ti/ti_lcdc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: skrll Date: Sat Jul 2 05:03:37 UTC 2022 Modified Files: src/sys/arch/arm/ti: ti_lcdc.c Log Message: Make this compile again. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/ti/ti_lcdc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_lcdc.c diff -u src/sys/arch/arm/ti/ti_lcdc.c:1.11 src/sys/arch/arm/ti/ti_lcdc.c:1.12 --- src/sys/arch/arm/ti/ti_lcdc.c:1.11 Thu Apr 21 21:22:25 2022 +++ src/sys/arch/arm/ti/ti_lcdc.c Sat Jul 2 05:03:36 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_lcdc.c,v 1.11 2022/04/21 21:22:25 andvar Exp $ */ +/* $NetBSD: ti_lcdc.c,v 1.12 2022/07/02 05:03:36 skrll Exp $ */ /*- * Copyright (c) 2019 Jared D. McNeill @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v 1.11 2022/04/21 21:22:25 andvar Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v 1.12 2022/07/02 05:03:36 skrll Exp $"); #include #include @@ -44,6 +44,7 @@ __KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v #include #include #include +#include #include #include #include
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: riastradh Date: Fri Feb 11 23:48:33 UTC 2022 Modified Files: src/sys/arch/arm/ti: ti_omapintc.c Log Message: arm/ti: Omit needless dv_private assignment in omap2icu_attach. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/ti/ti_omapintc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_omapintc.c diff -u src/sys/arch/arm/ti/ti_omapintc.c:1.8 src/sys/arch/arm/ti/ti_omapintc.c:1.9 --- src/sys/arch/arm/ti/ti_omapintc.c:1.8 Wed Jan 27 03:10:20 2021 +++ src/sys/arch/arm/ti/ti_omapintc.c Fri Feb 11 23:48:33 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_omapintc.c,v 1.8 2021/01/27 03:10:20 thorpej Exp $ */ +/* $NetBSD: ti_omapintc.c,v 1.9 2022/02/11 23:48:33 riastradh Exp $ */ /* * Define the SDP2430 specific information and then include the generic OMAP * interrupt header. @@ -29,7 +29,7 @@ #define _INTR_PRIVATE #include -__KERNEL_RCSID(0, "$NetBSD: ti_omapintc.c,v 1.8 2021/01/27 03:10:20 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_omapintc.c,v 1.9 2022/02/11 23:48:33 riastradh Exp $"); #include #include @@ -260,7 +260,6 @@ omap2icu_attach(device_t parent, device_ INTC_WRITE(sc, n, INTC_MIR_SET, 0x); sc->sc_dev = self; - self->dv_private = sc; sc->sc_pic.pic_ops = _picops; sc->sc_pic.pic_maxsources = sc->sc_nbank * 32;
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: riastradh Date: Fri Feb 11 23:48:33 UTC 2022 Modified Files: src/sys/arch/arm/ti: ti_omapintc.c Log Message: arm/ti: Omit needless dv_private assignment in omap2icu_attach. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/ti/ti_omapintc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: riastradh Date: Sun Dec 19 12:44:58 UTC 2021 Modified Files: src/sys/arch/arm/ti: ti_fb.c ti_lcdc.c ti_lcdc.h Log Message: drm: Do the attach task dance for ti lcdc drm. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/ti/ti_fb.c \ src/sys/arch/arm/ti/ti_lcdc.h cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/ti/ti_lcdc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_fb.c diff -u src/sys/arch/arm/ti/ti_fb.c:1.2 src/sys/arch/arm/ti/ti_fb.c:1.3 --- src/sys/arch/arm/ti/ti_fb.c:1.2 Sun Dec 19 12:44:25 2021 +++ src/sys/arch/arm/ti/ti_fb.c Sun Dec 19 12:44:57 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_fb.c,v 1.2 2021/12/19 12:44:25 riastradh Exp $ */ +/* $NetBSD: ti_fb.c,v 1.3 2021/12/19 12:44:57 riastradh Exp $ */ /*- * Copyright (c) 2015-2019 Jared McNeill @@ -29,7 +29,7 @@ #include "opt_wsdisplay_compat.h" #include -__KERNEL_RCSID(0, "$NetBSD: ti_fb.c,v 1.2 2021/12/19 12:44:25 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_fb.c,v 1.3 2021/12/19 12:44:57 riastradh Exp $"); #include #include @@ -46,6 +46,8 @@ __KERNEL_RCSID(0, "$NetBSD: ti_fb.c,v 1. static int ti_fb_match(device_t, cfdata_t, void *); static void ti_fb_attach(device_t, device_t, void *); +static void tilcdc_fb_init(struct tilcdc_drm_task *); + static bool ti_fb_shutdown(device_t, int); struct ti_fb_softc { @@ -53,6 +55,7 @@ struct ti_fb_softc { device_t sc_dev; struct tilcdc_framebuffer *sc_fb; struct tilcdcfb_attach_args sc_tfa; + struct tilcdc_drm_task sc_attach_task; }; static paddr_t ti_fb_mmapfb(struct drmfb_softc *, off_t, int); @@ -78,7 +81,6 @@ ti_fb_attach(device_t parent, device_t s { struct ti_fb_softc * const sc = device_private(self); struct tilcdcfb_attach_args * const tfa = aux; - int error; sc->sc_dev = self; sc->sc_tfa = *tfa; @@ -87,6 +89,18 @@ ti_fb_attach(device_t parent, device_t s aprint_naive("\n"); aprint_normal("\n"); + tilcdc_task_init(>sc_attach_task, _fb_init); + tilcdc_task_schedule(parent, >sc_attach_task); +} + +static void +tilcdc_fb_init(struct tilcdc_drm_task *task) +{ + struct ti_fb_softc *sc = container_of(task, struct ti_fb_softc, + sc_attach_task); + device_t self = sc->sc_dev; + struct tilcdcfb_attach_args * const tfa = >sc_tfa; + #ifdef WSDISPLAY_MULTICONS prop_dictionary_t dict = device_properties(self); const bool is_console = true; @@ -101,6 +115,7 @@ ti_fb_attach(device_t parent, device_t s .da_fb_linebytes = tfa->tfa_fb_linebytes, .da_params = _drmfb_params, }; + int error; error = drmfb_attach(>sc_drmfb, ); if (error) { Index: src/sys/arch/arm/ti/ti_lcdc.h diff -u src/sys/arch/arm/ti/ti_lcdc.h:1.2 src/sys/arch/arm/ti/ti_lcdc.h:1.3 --- src/sys/arch/arm/ti/ti_lcdc.h:1.2 Sun Dec 19 12:44:25 2021 +++ src/sys/arch/arm/ti/ti_lcdc.h Sun Dec 19 12:44:57 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_lcdc.h,v 1.2 2021/12/19 12:44:25 riastradh Exp $ */ +/* $NetBSD: ti_lcdc.h,v 1.3 2021/12/19 12:44:57 riastradh Exp $ */ /*- * Copyright (c) 2019 Jared D. McNeill @@ -29,6 +29,8 @@ #ifndef _ARM_TI_TI_LCDC_H #define _ARM_TI_TI_LCDC_H +#include + #include #include #include @@ -74,6 +76,12 @@ struct tilcdc_softc { struct clk *sc_clk; int sc_phandle; + struct lwp *sc_task_thread; + SIMPLEQ_HEAD(, tilcdc_drm_task) sc_tasks; + struct workqueue *sc_task_wq; + + bool sc_dev_registered; + struct tilcdc_crtc sc_crtc; struct tilcdc_encoder sc_encoder; struct tilcdc_vblank sc_vbl; @@ -99,6 +107,14 @@ struct tilcdcfb_attach_args { uint32_t tfa_fb_linebytes; }; +struct tilcdc_drm_task { + union { + SIMPLEQ_ENTRY(tilcdc_drm_task) queue; + struct work work; + } tdt_u; + void (*tdt_fn)(struct tilcdc_drm_task *); +}; + #define tilcdc_private(ddev) (ddev)->dev_private #define to_tilcdc_framebuffer(x) container_of(x, struct tilcdc_framebuffer, base) #define to_tilcdc_crtc(x) container_of(x, struct tilcdc_crtc, base) @@ -108,4 +124,8 @@ struct tilcdcfb_attach_args { #define WR4(sc, reg, val) \ bus_space_write_4((sc)->sc_bst, (sc)->sc_bsh, (reg), (val)) +void tilcdc_task_init(struct tilcdc_drm_task *, + void (*)(struct tilcdc_drm_task *)); +void tilcdc_task_schedule(device_t, struct tilcdc_drm_task *); + #endif /* _ARM_TI_TI_LCDC_H */ Index: src/sys/arch/arm/ti/ti_lcdc.c diff -u src/sys/arch/arm/ti/ti_lcdc.c:1.9 src/sys/arch/arm/ti/ti_lcdc.c:1.10 --- src/sys/arch/arm/ti/ti_lcdc.c:1.9 Sun Dec 19 12:44:25 2021 +++ src/sys/arch/arm/ti/ti_lcdc.c Sun Dec 19 12:44:57 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_lcdc.c,v 1.9 2021/12/19 12:44:25 riastradh Exp $ */ +/* $NetBSD: ti_lcdc.c,v 1.10 2021/12/19 12:44:57 riastradh Exp $ */ /*- * Copyright (c) 2019 Jared D. McNeill @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v 1.9 2021/12/19 12:44:25 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD:
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: riastradh Date: Sun Dec 19 12:44:58 UTC 2021 Modified Files: src/sys/arch/arm/ti: ti_fb.c ti_lcdc.c ti_lcdc.h Log Message: drm: Do the attach task dance for ti lcdc drm. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/ti/ti_fb.c \ src/sys/arch/arm/ti/ti_lcdc.h cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/ti/ti_lcdc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: riastradh Date: Sun Dec 19 12:44:25 UTC 2021 Modified Files: src/sys/arch/arm/ti: ti_fb.c ti_lcdc.c ti_lcdc.h Log Message: drm: Fix arm/ti drm build. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/ti_fb.c \ src/sys/arch/arm/ti/ti_lcdc.h cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/ti/ti_lcdc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_fb.c diff -u src/sys/arch/arm/ti/ti_fb.c:1.1 src/sys/arch/arm/ti/ti_fb.c:1.2 --- src/sys/arch/arm/ti/ti_fb.c:1.1 Sun Nov 3 22:59:06 2019 +++ src/sys/arch/arm/ti/ti_fb.c Sun Dec 19 12:44:25 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_fb.c,v 1.1 2019/11/03 22:59:06 jmcneill Exp $ */ +/* $NetBSD: ti_fb.c,v 1.2 2021/12/19 12:44:25 riastradh Exp $ */ /*- * Copyright (c) 2015-2019 Jared McNeill @@ -29,7 +29,7 @@ #include "opt_wsdisplay_compat.h" #include -__KERNEL_RCSID(0, "$NetBSD: ti_fb.c,v 1.1 2019/11/03 22:59:06 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_fb.c,v 1.2 2021/12/19 12:44:25 riastradh Exp $"); #include #include @@ -38,7 +38,7 @@ __KERNEL_RCSID(0, "$NetBSD: ti_fb.c,v 1. #include #include -#include +#include #include #include @@ -62,7 +62,6 @@ static int ti_fb_ioctl(struct drmfb_soft static const struct drmfb_params tifb_drmfb_params = { .dp_mmapfb = ti_fb_mmapfb, .dp_ioctl = ti_fb_ioctl, - }; CFATTACH_DECL_NEW(ti_fb, sizeof(struct ti_fb_softc), Index: src/sys/arch/arm/ti/ti_lcdc.h diff -u src/sys/arch/arm/ti/ti_lcdc.h:1.1 src/sys/arch/arm/ti/ti_lcdc.h:1.2 --- src/sys/arch/arm/ti/ti_lcdc.h:1.1 Sun Nov 3 22:59:06 2019 +++ src/sys/arch/arm/ti/ti_lcdc.h Sun Dec 19 12:44:25 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_lcdc.h,v 1.1 2019/11/03 22:59:06 jmcneill Exp $ */ +/* $NetBSD: ti_lcdc.h,v 1.2 2021/12/19 12:44:25 riastradh Exp $ */ /*- * Copyright (c) 2019 Jared D. McNeill @@ -29,6 +29,7 @@ #ifndef _ARM_TI_TI_LCDC_H #define _ARM_TI_TI_LCDC_H +#include #include #include Index: src/sys/arch/arm/ti/ti_lcdc.c diff -u src/sys/arch/arm/ti/ti_lcdc.c:1.8 src/sys/arch/arm/ti/ti_lcdc.c:1.9 --- src/sys/arch/arm/ti/ti_lcdc.c:1.8 Sun Dec 19 11:01:21 2021 +++ src/sys/arch/arm/ti/ti_lcdc.c Sun Dec 19 12:44:25 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_lcdc.c,v 1.8 2021/12/19 11:01:21 riastradh Exp $ */ +/* $NetBSD: ti_lcdc.c,v 1.9 2021/12/19 12:44:25 riastradh Exp $ */ /*- * Copyright (c) 2019 Jared D. McNeill @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v 1.8 2021/12/19 11:01:21 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v 1.9 2021/12/19 12:44:25 riastradh Exp $"); #include #include @@ -41,11 +41,12 @@ __KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v #include #include -#include #include #include -#include +#include #include +#include +#include #include #include @@ -66,13 +67,11 @@ enum { static int tilcdc_match(device_t, cfdata_t, void *); static void tilcdc_attach(device_t, device_t, void *); -static int tilcdc_set_busid(struct drm_device *, struct drm_master *); - static int tilcdc_load(struct drm_device *, unsigned long); -static int tilcdc_unload(struct drm_device *); +static void tilcdc_unload(struct drm_device *); static struct drm_driver tilcdc_driver = { - .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME, + .driver_features = DRIVER_MODESET | DRIVER_GEM, .dev_priv_size = 0, .load = tilcdc_load, .unload = tilcdc_unload, @@ -82,8 +81,6 @@ static struct drm_driver tilcdc_driver = .gem_uvm_ops = _gem_cma_uvm_ops, .dumb_create = drm_gem_cma_dumb_create, - .dumb_map_offset = drm_gem_cma_dumb_map_offset, - .dumb_destroy = drm_gem_dumb_destroy, .name = DRIVER_NAME, .desc = DRIVER_DESC, @@ -91,8 +88,6 @@ static struct drm_driver tilcdc_driver = .major = DRIVER_MAJOR, .minor = DRIVER_MINOR, .patchlevel = DRIVER_PATCHLEVEL, - - .set_busid = tilcdc_set_busid, }; CFATTACH_DECL_NEW(ti_lcdc, sizeof(struct tilcdc_softc), @@ -353,8 +348,9 @@ tilcdc_ep_activate(device_t dev, struct sc->sc_encoder.base.possible_crtcs = 1 << drm_crtc_index(>sc_crtc.base); drm_encoder_init(ddev, >sc_encoder.base, _encoder_funcs, - DRM_MODE_ENCODER_TMDS); - drm_encoder_helper_add(>sc_encoder.base, _encoder_helper_funcs); + DRM_MODE_ENCODER_TMDS, NULL); + drm_encoder_helper_add(>sc_encoder.base, + _encoder_helper_funcs); return fdt_endpoint_activate(ep, activate); } @@ -432,7 +428,7 @@ tilcdc_attach(device_t parent, device_t error = -drm_dev_register(sc->sc_ddev, 0); if (error) { - drm_dev_unref(sc->sc_ddev); + drm_dev_put(sc->sc_ddev); aprint_error_dev(self, "couldn't register DRM device: %d\n", error); return; @@ -444,23 +440,6 @@ tilcdc_attach(device_t parent, device_t } static int -tilcdc_set_busid(struct drm_device *ddev, struct drm_master *master) -{ - struct tilcdc_softc * const sc =
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: riastradh Date: Sun Dec 19 12:44:25 UTC 2021 Modified Files: src/sys/arch/arm/ti: ti_fb.c ti_lcdc.c ti_lcdc.h Log Message: drm: Fix arm/ti drm build. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/ti_fb.c \ src/sys/arch/arm/ti/ti_lcdc.h cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/ti/ti_lcdc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Nov 7 17:12:55 UTC 2021 Modified Files: src/sys/arch/arm/ti: if_cpsw.c Log Message: ti: cpsw: adapt to dts-5.15 bindings To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/ti/if_cpsw.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/if_cpsw.c diff -u src/sys/arch/arm/ti/if_cpsw.c:1.14 src/sys/arch/arm/ti/if_cpsw.c:1.15 --- src/sys/arch/arm/ti/if_cpsw.c:1.14 Wed Jan 27 03:10:20 2021 +++ src/sys/arch/arm/ti/if_cpsw.c Sun Nov 7 17:12:55 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: if_cpsw.c,v 1.14 2021/01/27 03:10:20 thorpej Exp $ */ +/* $NetBSD: if_cpsw.c,v 1.15 2021/11/07 17:12:55 jmcneill Exp $ */ /* * Copyright (c) 2013 Jonathan A. Kollasch @@ -53,7 +53,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: if_cpsw.c,v 1.14 2021/01/27 03:10:20 thorpej Exp $"); +__KERNEL_RCSID(1, "$NetBSD: if_cpsw.c,v 1.15 2021/11/07 17:12:55 jmcneill Exp $"); #include #include @@ -310,6 +310,7 @@ cpsw_rxdesc_paddr(struct cpsw_softc * co } static const struct device_compatible_entry compat_data[] = { + { .compat = "ti,am335x-cpsw-switch" }, { .compat = "ti,am335x-cpsw" }, { .compat = "ti,cpsw" }, DEVICE_COMPAT_EOL @@ -417,7 +418,13 @@ cpsw_attach(device_t parent, device_t se macaddr = NULL; slave = of_find_firstchild_byname(phandle, "slave"); - if (slave > 0) { + if (slave == -1) { + slave = of_find_firstchild_byname(phandle, "ethernet-ports"); + if (slave != -1) { + slave = of_find_firstchild_byname(slave, "port"); + } + } + if (slave != -1) { macaddr = fdtbus_get_prop(slave, "mac-address", ); if (len != ETHER_ADDR_LEN) macaddr = NULL;
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Nov 7 17:12:55 UTC 2021 Modified Files: src/sys/arch/arm/ti: if_cpsw.c Log Message: ti: cpsw: adapt to dts-5.15 bindings To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/ti/if_cpsw.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Nov 7 17:12:45 UTC 2021 Modified Files: src/sys/arch/arm/ti: ti_omaptimer.c ti_sdhc.c Log Message: arm: ti: adapt to dts-5.15 bindings To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/ti/ti_omaptimer.c \ src/sys/arch/arm/ti/ti_sdhc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_omaptimer.c diff -u src/sys/arch/arm/ti/ti_omaptimer.c:1.10 src/sys/arch/arm/ti/ti_omaptimer.c:1.11 --- src/sys/arch/arm/ti/ti_omaptimer.c:1.10 Thu Sep 9 12:14:37 2021 +++ src/sys/arch/arm/ti/ti_omaptimer.c Sun Nov 7 17:12:45 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_omaptimer.c,v 1.10 2021/09/09 12:14:37 jakllsch Exp $ */ +/* $NetBSD: ti_omaptimer.c,v 1.11 2021/11/07 17:12:45 jmcneill Exp $ */ /* * Copyright (c) 2017 Jonathan A. Kollasch @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_omaptimer.c,v 1.10 2021/09/09 12:14:37 jakllsch Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_omaptimer.c,v 1.11 2021/11/07 17:12:45 jmcneill Exp $"); #include #include @@ -176,7 +176,6 @@ omaptimer_attach(device_t parent, device struct fdt_attach_args * const faa = aux; const int phandle = faa->faa_phandle; struct timecounter *tc = >sc_tc; - const char *modname; struct clk *hwmod; bus_addr_t addr; bus_size_t size; @@ -203,28 +202,24 @@ omaptimer_attach(device_t parent, device return; } - modname = fdtbus_get_string(phandle, "ti,hwmods"); - if (modname == NULL) - modname = fdtbus_get_string(OF_parent(phandle), "ti,hwmods"); - aprint_naive("\n"); - aprint_normal(": Timer (%s)\n", modname); + aprint_normal(": Timer\n"); rate = clk_get_rate(hwmod); - if (strcmp(modname, "timer2") == 0) { + if (device_unit(self) == 1) { omaptimer_enable(sc, 0); /* Install timecounter */ tc->tc_get_timecount = omaptimer_get_timecount; tc->tc_counter_mask = ~0u; tc->tc_frequency = rate; - tc->tc_name = modname; + tc->tc_name = device_xname(self); tc->tc_quality = 200; tc->tc_priv = sc; tc_init(tc); - } else if (strcmp(modname, "timer3") == 0) { + } else if (device_unit(self) == 2) { const uint32_t value = (0x - ((rate / hz) - 1)); omaptimer_enable(sc, value); Index: src/sys/arch/arm/ti/ti_sdhc.c diff -u src/sys/arch/arm/ti/ti_sdhc.c:1.10 src/sys/arch/arm/ti/ti_sdhc.c:1.11 --- src/sys/arch/arm/ti/ti_sdhc.c:1.10 Wed Jan 27 03:10:20 2021 +++ src/sys/arch/arm/ti/ti_sdhc.c Sun Nov 7 17:12:45 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_sdhc.c,v 1.10 2021/01/27 03:10:20 thorpej Exp $ */ +/* $NetBSD: ti_sdhc.c,v 1.11 2021/11/07 17:12:45 jmcneill Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. * All rights reserved. @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_sdhc.c,v 1.10 2021/01/27 03:10:20 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_sdhc.c,v 1.11 2021/11/07 17:12:45 jmcneill Exp $"); #include #include @@ -85,6 +85,10 @@ static const struct ti_sdhc_config omap4 .regoff = 0x100 }; +static const struct ti_sdhc_config am335_sdhci_config = { + .regoff = 0x100 +}; + static const struct device_compatible_entry compat_data[] = { { .compat = "ti,omap2-hsmmc", .data = _hsmmc_config }, @@ -94,6 +98,8 @@ static const struct device_compatible_en .data = _pre_es3_hsmmc_config }, { .compat = "ti,omap4-hsmmc", .data = _hsmmc_config }, + { .compat = "ti,am335-sdhci", + .data = _sdhci_config }, DEVICE_COMPAT_EOL };
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Nov 7 17:12:45 UTC 2021 Modified Files: src/sys/arch/arm/ti: ti_omaptimer.c ti_sdhc.c Log Message: arm: ti: adapt to dts-5.15 bindings To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/ti/ti_omaptimer.c \ src/sys/arch/arm/ti/ti_sdhc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jakllsch Date: Thu Sep 9 12:14:37 UTC 2021 Modified Files: src/sys/arch/arm/ti: ti_omaptimer.c Log Message: Add license text I forgot to include in 1.1 To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/ti/ti_omaptimer.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_omaptimer.c diff -u src/sys/arch/arm/ti/ti_omaptimer.c:1.9 src/sys/arch/arm/ti/ti_omaptimer.c:1.10 --- src/sys/arch/arm/ti/ti_omaptimer.c:1.9 Wed Jan 27 03:10:20 2021 +++ src/sys/arch/arm/ti/ti_omaptimer.c Thu Sep 9 12:14:37 2021 @@ -1,7 +1,33 @@ -/* $NetBSD: ti_omaptimer.c,v 1.9 2021/01/27 03:10:20 thorpej Exp $ */ +/* $NetBSD: ti_omaptimer.c,v 1.10 2021/09/09 12:14:37 jakllsch Exp $ */ + +/* + * Copyright (c) 2017 Jonathan A. Kollasch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_omaptimer.c,v 1.9 2021/01/27 03:10:20 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_omaptimer.c,v 1.10 2021/09/09 12:14:37 jakllsch Exp $"); #include #include
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jakllsch Date: Thu Sep 9 12:14:37 UTC 2021 Modified Files: src/sys/arch/arm/ti: ti_omaptimer.c Log Message: Add license text I forgot to include in 1.1 To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/ti/ti_omaptimer.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Fri Nov 29 20:54:00 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c files.ti Added Files: src/sys/arch/arm/ti: ti_wdt.c Log Message: Add TI OMAP watchdog timer driver. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/ti/am3_prcm.c cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_wdt.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Fri Nov 29 20:54:00 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c files.ti Added Files: src/sys/arch/arm/ti: ti_wdt.c Log Message: Add TI OMAP watchdog timer driver. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/ti/am3_prcm.c cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_wdt.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/am3_prcm.c diff -u src/sys/arch/arm/ti/am3_prcm.c:1.11 src/sys/arch/arm/ti/am3_prcm.c:1.12 --- src/sys/arch/arm/ti/am3_prcm.c:1.11 Wed Nov 27 23:02:54 2019 +++ src/sys/arch/arm/ti/am3_prcm.c Fri Nov 29 20:54:00 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: am3_prcm.c,v 1.11 2019/11/27 23:02:54 jmcneill Exp $ */ +/* $NetBSD: am3_prcm.c,v 1.12 2019/11/29 20:54:00 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.11 2019/11/27 23:02:54 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.12 2019/11/29 20:54:00 jmcneill Exp $"); #include #include @@ -169,6 +169,8 @@ static struct ti_prcm_clk am3_prcm_clks[ AM3_PRCM_HWMOD_PER("timer6", 0xf0, "FIXED_24MHZ"), AM3_PRCM_HWMOD_PER("timer7", 0x7c, "FIXED_24MHZ"), + AM3_PRCM_HWMOD_WKUP("wd_timer2", 0xd4, "FIXED_32K"), + AM3_PRCM_HWMOD_PER("mmc1", 0x3c, "MMC_CLK"), AM3_PRCM_HWMOD_PER("mmc2", 0xf4, "MMC_CLK"), AM3_PRCM_HWMOD_PER("mmc3", 0xf8, "MMC_CLK"), Index: src/sys/arch/arm/ti/files.ti diff -u src/sys/arch/arm/ti/files.ti:1.20 src/sys/arch/arm/ti/files.ti:1.21 --- src/sys/arch/arm/ti/files.ti:1.20 Sun Nov 3 22:59:06 2019 +++ src/sys/arch/arm/ti/files.ti Fri Nov 29 20:54:00 2019 @@ -1,4 +1,4 @@ -# $NetBSD: files.ti,v 1.20 2019/11/03 22:59:06 jmcneill Exp $ +# $NetBSD: files.ti,v 1.21 2019/11/29 20:54:00 jmcneill Exp $ # file arch/arm/ti/ti_cpufreq.c soc_ti @@ -131,6 +131,11 @@ device omapnand: nandbus attach omapnand at fdt file arch/arm/ti/omap2_nand.c omapnand +# Watchdog timer +device tiwdt: sysmon_wdog +attach tiwdt at fdt with ti_wdt +file arch/arm/ti/ti_wdt.c ti_wdt + # SOC parameters defflag opt_soc.h SOC_TI defflag opt_soc.h SOC_AM33XX: SOC_TI Added files: Index: src/sys/arch/arm/ti/ti_wdt.c diff -u /dev/null src/sys/arch/arm/ti/ti_wdt.c:1.1 --- /dev/null Fri Nov 29 20:54:00 2019 +++ src/sys/arch/arm/ti/ti_wdt.c Fri Nov 29 20:54:00 2019 @@ -0,0 +1,259 @@ +/* $NetBSD: ti_wdt.c,v 1.1 2019/11/29 20:54:00 jmcneill Exp $ */ + +/*- + * Copyright (c) 2019 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__KERNEL_RCSID(0, "$NetBSD: ti_wdt.c,v 1.1 2019/11/29 20:54:00 jmcneill Exp $"); + +#include +#include +#include +#include +#include + +#include + +#include + +#include + +#define WDT_WDSC 0x10 +#define WDSC_SOFTRESET __BIT(1) +#define WDT_WDST 0x14 +#define WDT_WISR 0x18 +#define WDT_WIER 0x1c +#define WDT_WCLR 0x24 +#define WCLR_PRE __BIT(5) +#define WCLR_PTV __BITS(4,2) +#define WDT_WCRR 0x28 +#define WDT_WLDR 0x2c +#define WDT_WTGR 0x30 +#define WDT_WWPS 0x34 +#define WWPS_W_PEND_WDLY __BIT(5) +#define WWPS_W_PEND_WSPR __BIT(4) +#define WWPS_W_PEND_WTGR __BIT(3) +#define WWPS_W_PEND_WLDR __BIT(2) +#define WWPS_W_PEND_WCRR __BIT(1) +#define WWPS_W_PEND_WCLR __BIT(0) +#define WWPS_W_PEND_MASK __BITS(5,0) +#define WDT_WDLY 0x44 +#define WDT_WSPR 0x48 +#define WDT_WIRQSTATRAW 0x54 +#define WDT_WIRQSTAT 0x58 +#define WDT_WIRQENSET 0x5c +#define WDT_WIRQENCLR 0x60 +#define WIRQ_EVENT_DLY __BIT(1) +#define WIRQ_EVENT_OVF __BIT(0) + +#define
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Thu Nov 28 23:57:09 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_sdhc.c Log Message: Support 1-bit mode and force all xfers to bounce to workaround a transfer error issue for now To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/ti/ti_sdhc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Thu Nov 28 23:57:09 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_sdhc.c Log Message: Support 1-bit mode and force all xfers to bounce to workaround a transfer error issue for now To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/ti/ti_sdhc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_sdhc.c diff -u src/sys/arch/arm/ti/ti_sdhc.c:1.4 src/sys/arch/arm/ti/ti_sdhc.c:1.5 --- src/sys/arch/arm/ti/ti_sdhc.c:1.4 Wed Nov 27 23:03:24 2019 +++ src/sys/arch/arm/ti/ti_sdhc.c Thu Nov 28 23:57:09 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_sdhc.c,v 1.4 2019/11/27 23:03:24 jmcneill Exp $ */ +/* $NetBSD: ti_sdhc.c,v 1.5 2019/11/28 23:57:09 jmcneill Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. * All rights reserved. @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_sdhc.c,v 1.4 2019/11/27 23:03:24 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_sdhc.c,v 1.5 2019/11/28 23:57:09 jmcneill Exp $"); #include #include @@ -428,15 +428,21 @@ static int ti_sdhc_bus_width(struct sdhc_softc *sc, int width) { struct ti_sdhc_softc *hmsc = (struct ti_sdhc_softc *)sc; - uint32_t con; + uint32_t con, hctl; con = bus_space_read_4(hmsc->sc_bst, hmsc->sc_bsh, MMCHS_CON); + hctl = SDHC_READ(hmsc, SDHC_HOST_CTL); if (width == 8) { con |= CON_DW8; + } else if (width == 4) { + con &= ~CON_DW8; + hctl |= SDHC_4BIT_MODE; } else { con &= ~CON_DW8; + hctl &= ~SDHC_4BIT_MODE; } bus_space_write_4(hmsc->sc_bst, hmsc->sc_bsh, MMCHS_CON, con); + SDHC_WRITE(hmsc, SDHC_HOST_CTL, hctl); return 0; } @@ -487,6 +493,13 @@ ti_sdhc_edma_init(struct ti_sdhc_softc * error); return error; } + error = bus_dmamap_load(sc->sc.sc_dmat, sc->sc_edma_dmamap, + sc->sc_edma_bbuf, MAXPHYS, NULL, BUS_DMA_WAITOK); + if (error) { + device_printf(sc->sc.sc_dev, "couldn't load dmamap: %d\n", + error); + return error; + } return error; } @@ -496,24 +509,23 @@ ti_sdhc_edma_xfer_data(struct sdhc_softc { struct ti_sdhc_softc *sc = device_private(sdhc_sc->sc_dev); const bus_dmamap_t map = cmd->c_dmamap; - int seg, error; bool bounce; + int error; - for (bounce = false, seg = 0; seg < cmd->c_dmamap->dm_nsegs; seg++) { - if ((cmd->c_dmamap->dm_segs[seg].ds_addr & 0x1f) != 0) { +#if notyet + bounce = false; + for (int seg = 0; seg < cmd->c_dmamap->dm_nsegs; seg++) { + if ((cmd->c_dmamap->dm_segs[seg].ds_addr & 0x1f) != 0 || + (cmd->c_dmamap->dm_segs[seg].ds_len & 3) != 0) { bounce = true; break; } } +#else + bounce = true; +#endif if (bounce) { - error = bus_dmamap_load(sc->sc.sc_dmat, sc->sc_edma_dmamap, - sc->sc_edma_bbuf, MAXPHYS, NULL, BUS_DMA_WAITOK); - if (error) { - device_printf(sc->sc.sc_dev, - "[bounce] bus_dmamap_load failed: %d\n", error); - return error; - } if (ISSET(cmd->c_flags, SCF_CMD_READ)) { bus_dmamap_sync(sc->sc.sc_dmat, sc->sc_edma_dmamap, 0, MAXPHYS, BUS_DMASYNC_PREREAD); @@ -536,7 +548,6 @@ ti_sdhc_edma_xfer_data(struct sdhc_softc bus_dmamap_sync(sc->sc.sc_dmat, sc->sc_edma_dmamap, 0, MAXPHYS, BUS_DMASYNC_POSTWRITE); } - bus_dmamap_unload(sc->sc.sc_dmat, sc->sc_edma_dmamap); if (ISSET(cmd->c_flags, SCF_CMD_READ) && error == 0) { memcpy(cmd->c_data, sc->sc_edma_bbuf, cmd->c_datalen); }
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Wed Nov 27 23:03:24 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_sdhc.c Log Message: Fix inverted ti,needs-special-hs-handling property logic and enable EDMA support To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/ti/ti_sdhc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_sdhc.c diff -u src/sys/arch/arm/ti/ti_sdhc.c:1.3 src/sys/arch/arm/ti/ti_sdhc.c:1.4 --- src/sys/arch/arm/ti/ti_sdhc.c:1.3 Tue Oct 29 22:19:13 2019 +++ src/sys/arch/arm/ti/ti_sdhc.c Wed Nov 27 23:03:24 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_sdhc.c,v 1.3 2019/10/29 22:19:13 jmcneill Exp $ */ +/* $NetBSD: ti_sdhc.c,v 1.4 2019/11/27 23:03:24 jmcneill Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. * All rights reserved. @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_sdhc.c,v 1.3 2019/10/29 22:19:13 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_sdhc.c,v 1.4 2019/11/27 23:03:24 jmcneill Exp $"); #include #include @@ -180,7 +180,6 @@ ti_sdhc_attach(device_t parent, device_t sc->sc_addr = addr; sc->sc_bst = faa->faa_bst; -#if notyet /* XXX use fdtbus_dma API */ int len; const u_int *dmas = fdtbus_get_prop(phandle, "dmas", ); @@ -198,10 +197,6 @@ ti_sdhc_attach(device_t parent, device_t sc->sc_edma_chan[EDMA_CHAN_RX] = -1; break; } -#else - sc->sc_edma_chan[EDMA_CHAN_TX] = -1; - sc->sc_edma_chan[EDMA_CHAN_RX] = -1; -#endif if (bus_space_map(sc->sc_bst, addr, size, 0, >sc_bsh) != 0) { aprint_error(": couldn't map registers\n"); @@ -219,7 +214,7 @@ ti_sdhc_attach(device_t parent, device_t sc->sc.sc_flags |= SDHC_FLAG_8BIT_MODE; if (of_hasprop(phandle, "ti,needs-special-reset")) sc->sc.sc_flags |= SDHC_FLAG_WAIT_RESET; - if (of_hasprop(phandle, "ti,needs-special-hs-handling")) + if (!of_hasprop(phandle, "ti,needs-special-hs-handling")) sc->sc.sc_flags |= SDHC_FLAG_NO_HS_BIT; if (of_hasprop(phandle, "ti,dual-volt")) sc->sc.sc_caps = SDHC_VOLTAGE_SUPP_3_0V;
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Wed Nov 27 23:03:24 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_sdhc.c Log Message: Fix inverted ti,needs-special-hs-handling property logic and enable EDMA support To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/ti/ti_sdhc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Wed Nov 27 23:02:54 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c Log Message: Fix mmc and timer indexes. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/ti/am3_prcm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/am3_prcm.c diff -u src/sys/arch/arm/ti/am3_prcm.c:1.10 src/sys/arch/arm/ti/am3_prcm.c:1.11 --- src/sys/arch/arm/ti/am3_prcm.c:1.10 Mon Nov 4 09:37:51 2019 +++ src/sys/arch/arm/ti/am3_prcm.c Wed Nov 27 23:02:54 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: am3_prcm.c,v 1.10 2019/11/04 09:37:51 jmcneill Exp $ */ +/* $NetBSD: am3_prcm.c,v 1.11 2019/11/27 23:02:54 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.10 2019/11/04 09:37:51 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.11 2019/11/27 23:02:54 jmcneill Exp $"); #include #include @@ -161,7 +161,7 @@ static struct ti_prcm_clk am3_prcm_clks[ AM3_PRCM_HWMOD_PER("gpio3", 0xb0, "PERIPH_CLK"), AM3_PRCM_HWMOD_PER("gpio4", 0xb4, "PERIPH_CLK"), - AM3_PRCM_HWMOD_WKUP("timer0", 0x10, "FIXED_32K"), + AM3_PRCM_HWMOD_WKUP("timer1", 0x10, "FIXED_32K"), AM3_PRCM_HWMOD_PER("timer2", 0x80, "FIXED_24MHZ"), AM3_PRCM_HWMOD_PER("timer3", 0x84, "FIXED_24MHZ"), AM3_PRCM_HWMOD_PER("timer4", 0x88, "FIXED_24MHZ"), @@ -169,9 +169,9 @@ static struct ti_prcm_clk am3_prcm_clks[ AM3_PRCM_HWMOD_PER("timer6", 0xf0, "FIXED_24MHZ"), AM3_PRCM_HWMOD_PER("timer7", 0x7c, "FIXED_24MHZ"), - AM3_PRCM_HWMOD_PER("mmc0", 0x3c, "MMC_CLK"), - AM3_PRCM_HWMOD_PER("mmc1", 0xf4, "MMC_CLK"), - AM3_PRCM_HWMOD_PER("mmc2", 0xf8, "MMC_CLK"), + AM3_PRCM_HWMOD_PER("mmc1", 0x3c, "MMC_CLK"), + AM3_PRCM_HWMOD_PER("mmc2", 0xf4, "MMC_CLK"), + AM3_PRCM_HWMOD_PER("mmc3", 0xf8, "MMC_CLK"), AM3_PRCM_HWMOD_PER("tpcc", 0xbc, "PERIPH_CLK"), AM3_PRCM_HWMOD_PER("tptc0", 0x24, "PERIPH_CLK"),
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Wed Nov 27 23:02:54 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c Log Message: Fix mmc and timer indexes. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/ti/am3_prcm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: skrll Date: Sun Nov 24 09:37:05 UTC 2019 Modified Files: src/sys/arch/arm/ti: if_cpsw.c Log Message: Fix KERNHIST build (and simplify) To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/ti/if_cpsw.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: skrll Date: Sun Nov 24 09:37:05 UTC 2019 Modified Files: src/sys/arch/arm/ti: if_cpsw.c Log Message: Fix KERNHIST build (and simplify) To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/ti/if_cpsw.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/if_cpsw.c diff -u src/sys/arch/arm/ti/if_cpsw.c:1.8 src/sys/arch/arm/ti/if_cpsw.c:1.9 --- src/sys/arch/arm/ti/if_cpsw.c:1.8 Sun Nov 3 10:09:04 2019 +++ src/sys/arch/arm/ti/if_cpsw.c Sun Nov 24 09:37:05 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_cpsw.c,v 1.8 2019/11/03 10:09:04 jmcneill Exp $ */ +/* $NetBSD: if_cpsw.c,v 1.9 2019/11/24 09:37:05 skrll Exp $ */ /* * Copyright (c) 2013 Jonathan A. Kollasch @@ -53,7 +53,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: if_cpsw.c,v 1.8 2019/11/03 10:09:04 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: if_cpsw.c,v 1.9 2019/11/24 09:37:05 skrll Exp $"); #include #include @@ -174,19 +174,14 @@ static int cpsw_ale_update_addresses(str CFATTACH_DECL_NEW(cpsw, sizeof(struct cpsw_softc), cpsw_match, cpsw_attach, cpsw_detach, NULL); -#undef KERNHIST #include KERNHIST_DEFINE(cpswhist); -#ifdef KERNHIST -#define KERNHIST_CALLED_5(NAME, i, j, k, l) \ -do { \ - _kernhist_call = atomic_inc_uint_nv(&_kernhist_cnt); \ - KERNHIST_LOG(NAME, "called! %x %x %x %x", i, j, k, l); \ -} while (/*CONSTCOND*/ 0) -#else -#define KERNHIST_CALLED_5(NAME, i, j, k, l) -#endif +#define CPSWHIST_CALLARGS(A,B,C,D) do { \ + KERNHIST_CALLARGS(cpswhist, "%jx %jx %jx %jx", \ + (uintptr_t)(A), (uintptr_t)(B), (uintptr_t)(C), (uintptr_t)(D));\ + } while (0) + static inline u_int cpsw_txdesc_adjust(u_int x, int y) @@ -219,7 +214,7 @@ cpsw_set_txdesc_next(struct cpsw_softc * const bus_size_t o = sizeof(struct cpsw_cpdma_bd) * i + 0; KERNHIST_FUNC(__func__); - KERNHIST_CALLED_5(cpswhist, sc, i, n, 0); + CPSWHIST_CALLARGS(sc, i, n, 0); bus_space_write_4(sc->sc_bst, sc->sc_bsh_txdescs, o, n); } @@ -230,7 +225,7 @@ cpsw_set_rxdesc_next(struct cpsw_softc * const bus_size_t o = sizeof(struct cpsw_cpdma_bd) * i + 0; KERNHIST_FUNC(__func__); - KERNHIST_CALLED_5(cpswhist, sc, i, n, 0); + CPSWHIST_CALLARGS(sc, i, n, 0); bus_space_write_4(sc->sc_bst, sc->sc_bsh_rxdescs, o, n); } @@ -244,7 +239,7 @@ cpsw_get_txdesc(struct cpsw_softc * cons const bus_size_t c = __arraycount(bdp->word); KERNHIST_FUNC(__func__); - KERNHIST_CALLED_5(cpswhist, sc, i, bdp, 0); + CPSWHIST_CALLARGS(sc, i, bdp, 0); bus_space_read_region_4(sc->sc_bst, sc->sc_bsh_txdescs, o, dp, c); KERNHIST_LOG(cpswhist, "%08x %08x %08x %08x\n", @@ -260,7 +255,7 @@ cpsw_set_txdesc(struct cpsw_softc * cons const bus_size_t c = __arraycount(bdp->word); KERNHIST_FUNC(__func__); - KERNHIST_CALLED_5(cpswhist, sc, i, bdp, 0); + CPSWHIST_CALLARGS(sc, i, bdp, 0); KERNHIST_LOG(cpswhist, "%08x %08x %08x %08x\n", dp[0], dp[1], dp[2], dp[3]); @@ -276,7 +271,7 @@ cpsw_get_rxdesc(struct cpsw_softc * cons const bus_size_t c = __arraycount(bdp->word); KERNHIST_FUNC(__func__); - KERNHIST_CALLED_5(cpswhist, sc, i, bdp, 0); + CPSWHIST_CALLARGS(sc, i, bdp, 0); bus_space_read_region_4(sc->sc_bst, sc->sc_bsh_rxdescs, o, dp, c); @@ -293,7 +288,7 @@ cpsw_set_rxdesc(struct cpsw_softc * cons const bus_size_t c = __arraycount(bdp->word); KERNHIST_FUNC(__func__); - KERNHIST_CALLED_5(cpswhist, sc, i, bdp, 0); + CPSWHIST_CALLARGS(sc, i, bdp, 0); KERNHIST_LOG(cpswhist, "%08x %08x %08x %08x\n", dp[0], dp[1], dp[2], dp[3]); @@ -607,7 +602,7 @@ cpsw_start(struct ifnet *ifp) u_int mlen; KERNHIST_FUNC(__func__); - KERNHIST_CALLED_5(cpswhist, sc, 0, 0, 0); + CPSWHIST_CALLARGS(sc, 0, 0, 0); if (__predict_false((ifp->if_flags & (IFF_RUNNING | IFF_OACTIVE)) != IFF_RUNNING)) { @@ -1140,7 +1135,7 @@ cpsw_rxintr(void *arg) u_int len, off; KERNHIST_FUNC(__func__); - KERNHIST_CALLED_5(cpswhist, sc, 0, 0, 0); + CPSWHIST_CALLARGS(sc, 0, 0, 0); for (;;) { KASSERT(sc->sc_rxhead < CPSW_NRXDESCS); @@ -1225,7 +1220,7 @@ cpsw_txintr(void *arg) u_int cpi; KERNHIST_FUNC(__func__); - KERNHIST_CALLED_5(cpswhist, sc, 0, 0, 0); + CPSWHIST_CALLARGS(sc, 0, 0, 0); KASSERT(sc->sc_txrun);
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Mon Nov 4 09:38:39 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_lcdc.c Log Message: Select closest rate to desired pixel clock To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/ti/ti_lcdc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Mon Nov 4 09:38:39 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_lcdc.c Log Message: Select closest rate to desired pixel clock To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/ti/ti_lcdc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_lcdc.c diff -u src/sys/arch/arm/ti/ti_lcdc.c:1.2 src/sys/arch/arm/ti/ti_lcdc.c:1.3 --- src/sys/arch/arm/ti/ti_lcdc.c:1.2 Sun Nov 3 23:31:49 2019 +++ src/sys/arch/arm/ti/ti_lcdc.c Mon Nov 4 09:38:38 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_lcdc.c,v 1.2 2019/11/03 23:31:49 jmcneill Exp $ */ +/* $NetBSD: ti_lcdc.c,v 1.3 2019/11/04 09:38:38 jmcneill Exp $ */ /*- * Copyright (c) 2019 Jared D. McNeill @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v 1.2 2019/11/03 23:31:49 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v 1.3 2019/11/04 09:38:38 jmcneill Exp $"); #include #include @@ -159,8 +159,8 @@ tilcdc_mode_set(struct drm_crtc *crtc, s { struct tilcdc_crtc *mixer_crtc = to_tilcdc_crtc(crtc); struct tilcdc_softc * const sc = mixer_crtc->sc; + int clk_div, div, diff, best_diff; uint32_t val; - u_int clk_div; const u_int hspw = adjusted_mode->crtc_hsync_end - adjusted_mode->crtc_hsync_start; const u_int hbp = adjusted_mode->crtc_htotal - adjusted_mode->crtc_hsync_end; @@ -170,9 +170,16 @@ tilcdc_mode_set(struct drm_crtc *crtc, s const u_int vfp = adjusted_mode->crtc_vsync_start - adjusted_mode->crtc_vdisplay; const u_int rate = clk_get_rate(sc->sc_clk); - for (clk_div = 2; clk_div < 255; clk_div++) { - if (rate / clk_div <= (int)adjusted_mode->crtc_clock * 1000) - break; + + clk_div = 255; + best_diff = -1; + for (div = 2; div < 255; div++) { + const int pixel_clock = (rate / div) / 1000; + diff = abs(adjusted_mode->crtc_clock - pixel_clock); + if (best_diff == -1 || diff < best_diff) { + best_diff = diff; + clk_div = div; + } } if (clk_div == 255) { device_printf(sc->sc_dev, "couldn't configure pixel clock (%u)\n",
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Mon Nov 4 09:37:51 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c Log Message: Use 297MHz for display clock To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/ti/am3_prcm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Mon Nov 4 09:37:51 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c Log Message: Use 297MHz for display clock To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/ti/am3_prcm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/am3_prcm.c diff -u src/sys/arch/arm/ti/am3_prcm.c:1.9 src/sys/arch/arm/ti/am3_prcm.c:1.10 --- src/sys/arch/arm/ti/am3_prcm.c:1.9 Sun Nov 3 22:59:06 2019 +++ src/sys/arch/arm/ti/am3_prcm.c Mon Nov 4 09:37:51 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: am3_prcm.c,v 1.9 2019/11/03 22:59:06 jmcneill Exp $ */ +/* $NetBSD: am3_prcm.c,v 1.10 2019/11/04 09:37:51 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.9 2019/11/03 22:59:06 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.10 2019/11/04 09:37:51 jmcneill Exp $"); #include #include @@ -52,7 +52,6 @@ __KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v #define AM3_PRCM_CLKCTRL_MODULEMODE __BITS(1,0) #define AM3_PRCM_CLKCTRL_MODULEMODE_ENABLE 0x2 -/* WKUP */ #define AM3_PRCM_CM_IDLEST_DPLL_DISP (AM3_PRCM_CM_WKUP + 0x48) #define AM3_PRCM_CM_IDLEST_DPLL_DISP_ST_MN_BYPASS __BIT(8) #define AM3_PRCM_CM_IDLEST_DPLL_DISP_ST_DPLL_CLK __BIT(0) @@ -64,6 +63,8 @@ __KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v #define AM3_PRCM_CM_CLKMODE_DPLL_DISP_DPLL_EN_MN_BYPASS 4 #define AM3_PRCM_CM_CLKMODE_DPLL_DISP_DPLL_EN_LOCK 7 +#define DPLL_DISP_RATE29700 + static int am3_prcm_match(device_t, cfdata_t, void *); static void am3_prcm_attach(device_t, device_t, void *); @@ -100,8 +101,8 @@ am3_prcm_hwmod_enable_display(struct ti_ delay(10); } - /* Set DPLL frequency to 270 MHz */ - val = __SHIFTIN(270, AM3_PRCM_CM_CLKSEL_DPLL_DISP_DPLL_MULT); + /* Set DPLL frequency to DPLL_DISP_RATE (297 MHz) */ + val = __SHIFTIN(DPLL_DISP_RATE / 100, AM3_PRCM_CM_CLKSEL_DPLL_DISP_DPLL_MULT); val |= __SHIFTIN(24 - 1, AM3_PRCM_CM_CLKSEL_DPLL_DISP_DPLL_DIV); PRCM_WRITE(sc, AM3_PRCM_CM_CLKSEL_DPLL_DISP, val); @@ -141,7 +142,7 @@ static struct ti_prcm_clk am3_prcm_clks[ TI_PRCM_FIXED("FIXED_24MHZ", 2400), TI_PRCM_FIXED("FIXED_48MHZ", 4800), TI_PRCM_FIXED("FIXED_96MHZ", 9600), - TI_PRCM_FIXED("DISPLAY_CLK", 27000), + TI_PRCM_FIXED("DISPLAY_CLK", DPLL_DISP_RATE), TI_PRCM_FIXED_FACTOR("PERIPH_CLK", 1, 1, "FIXED_48MHZ"), TI_PRCM_FIXED_FACTOR("MMC_CLK", 1, 1, "FIXED_96MHZ"),
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Nov 3 23:31:49 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_lcdc.c Log Message: Comment out mode fixup (not needed it seems) To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/ti_lcdc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Nov 3 23:31:49 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_lcdc.c Log Message: Comment out mode fixup (not needed it seems) To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/ti_lcdc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_lcdc.c diff -u src/sys/arch/arm/ti/ti_lcdc.c:1.1 src/sys/arch/arm/ti/ti_lcdc.c:1.2 --- src/sys/arch/arm/ti/ti_lcdc.c:1.1 Sun Nov 3 22:59:06 2019 +++ src/sys/arch/arm/ti/ti_lcdc.c Sun Nov 3 23:31:49 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_lcdc.c,v 1.1 2019/11/03 22:59:06 jmcneill Exp $ */ +/* $NetBSD: ti_lcdc.c,v 1.2 2019/11/03 23:31:49 jmcneill Exp $ */ /*- * Copyright (c) 2019 Jared D. McNeill @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v 1.1 2019/11/03 22:59:06 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_lcdc.c,v 1.2 2019/11/03 23:31:49 jmcneill Exp $"); #include #include @@ -138,6 +138,7 @@ static bool tilcdc_mode_fixup(struct drm_crtc *crtc, const struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode) { +#if 0 adjusted_mode->hskew = mode->hsync_end - mode->hsync_start; adjusted_mode->flags |= DRM_MODE_FLAG_HSKEW; @@ -146,7 +147,7 @@ tilcdc_mode_fixup(struct drm_crtc *crtc, adjusted_mode->flags |= DRM_MODE_FLAG_PHSYNC; else adjusted_mode->flags |= DRM_MODE_FLAG_NHSYNC; - +#endif return true; }
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Nov 3 22:59:06 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c files.ti Added Files: src/sys/arch/arm/ti: ti_fb.c ti_lcdc.c ti_lcdc.h ti_lcdcreg.h Log Message: Add support for AM335x display controller (LCDC). To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/ti/am3_prcm.c cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_fb.c \ src/sys/arch/arm/ti/ti_lcdc.c src/sys/arch/arm/ti/ti_lcdc.h \ src/sys/arch/arm/ti/ti_lcdcreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/am3_prcm.c diff -u src/sys/arch/arm/ti/am3_prcm.c:1.8 src/sys/arch/arm/ti/am3_prcm.c:1.9 --- src/sys/arch/arm/ti/am3_prcm.c:1.8 Wed Oct 30 21:40:04 2019 +++ src/sys/arch/arm/ti/am3_prcm.c Sun Nov 3 22:59:06 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: am3_prcm.c,v 1.8 2019/10/30 21:40:04 jmcneill Exp $ */ +/* $NetBSD: am3_prcm.c,v 1.9 2019/11/03 22:59:06 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.8 2019/10/30 21:40:04 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.9 2019/11/03 22:59:06 jmcneill Exp $"); #include #include @@ -52,6 +52,18 @@ __KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v #define AM3_PRCM_CLKCTRL_MODULEMODE __BITS(1,0) #define AM3_PRCM_CLKCTRL_MODULEMODE_ENABLE 0x2 +/* WKUP */ +#define AM3_PRCM_CM_IDLEST_DPLL_DISP (AM3_PRCM_CM_WKUP + 0x48) +#define AM3_PRCM_CM_IDLEST_DPLL_DISP_ST_MN_BYPASS __BIT(8) +#define AM3_PRCM_CM_IDLEST_DPLL_DISP_ST_DPLL_CLK __BIT(0) +#define AM3_PRCM_CM_CLKSEL_DPLL_DISP (AM3_PRCM_CM_WKUP + 0x54) +#define AM3_PRCM_CM_CLKSEL_DPLL_DISP_DPLL_MULT __BITS(18,8) +#define AM3_PRCM_CM_CLKSEL_DPLL_DISP_DPLL_DIV __BITS(6,0) +#define AM3_PRCM_CM_CLKMODE_DPLL_DISP (AM3_PRCM_CM_WKUP + 0x98) +#define AM3_PRCM_CM_CLKMODE_DPLL_DISP_DPLL_EN __BITS(2,0) +#define AM3_PRCM_CM_CLKMODE_DPLL_DISP_DPLL_EN_MN_BYPASS 4 +#define AM3_PRCM_CM_CLKMODE_DPLL_DISP_DPLL_EN_LOCK 7 + static int am3_prcm_match(device_t, cfdata_t, void *); static void am3_prcm_attach(device_t, device_t, void *); @@ -70,8 +82,48 @@ am3_prcm_hwmod_enable(struct ti_prcm_sof return 0; } +static int +am3_prcm_hwmod_enable_display(struct ti_prcm_softc *sc, struct ti_prcm_clk *tc, int enable) +{ + uint32_t val; + int retry; + + if (enable) { + /* Put the DPLL in MN bypass mode */ + PRCM_WRITE(sc, AM3_PRCM_CM_CLKMODE_DPLL_DISP, + __SHIFTIN(AM3_PRCM_CM_CLKMODE_DPLL_DISP_DPLL_EN_MN_BYPASS, + AM3_PRCM_CM_CLKMODE_DPLL_DISP_DPLL_EN)); + for (retry = 1; retry > 0; retry--) { + val = PRCM_READ(sc, AM3_PRCM_CM_IDLEST_DPLL_DISP); + if ((val & AM3_PRCM_CM_IDLEST_DPLL_DISP_ST_MN_BYPASS) != 0) +break; + delay(10); + } + + /* Set DPLL frequency to 270 MHz */ + val = __SHIFTIN(270, AM3_PRCM_CM_CLKSEL_DPLL_DISP_DPLL_MULT); + val |= __SHIFTIN(24 - 1, AM3_PRCM_CM_CLKSEL_DPLL_DISP_DPLL_DIV); + PRCM_WRITE(sc, AM3_PRCM_CM_CLKSEL_DPLL_DISP, val); + + /* Disable MN bypass mode */ + PRCM_WRITE(sc, AM3_PRCM_CM_CLKMODE_DPLL_DISP, + __SHIFTIN(AM3_PRCM_CM_CLKMODE_DPLL_DISP_DPLL_EN_LOCK, + AM3_PRCM_CM_CLKMODE_DPLL_DISP_DPLL_EN)); + for (retry = 1; retry > 0; retry--) { + val = PRCM_READ(sc, AM3_PRCM_CM_IDLEST_DPLL_DISP); + if ((val & AM3_PRCM_CM_IDLEST_DPLL_DISP_ST_DPLL_CLK) != 0) +break; + delay(10); + } + } + + return am3_prcm_hwmod_enable(sc, tc, enable); +} + #define AM3_PRCM_HWMOD_PER(_name, _reg, _parent) \ TI_PRCM_HWMOD((_name), AM3_PRCM_CM_PER + (_reg), (_parent), am3_prcm_hwmod_enable) +#define AM3_PRCM_HWMOD_PER_DISP(_name, _reg, _parent) \ + TI_PRCM_HWMOD((_name), AM3_PRCM_CM_PER + (_reg), (_parent), am3_prcm_hwmod_enable_display) #define AM3_PRCM_HWMOD_WKUP(_name, _reg, _parent) \ TI_PRCM_HWMOD((_name), AM3_PRCM_CM_WKUP + (_reg), (_parent), am3_prcm_hwmod_enable) @@ -89,6 +141,7 @@ static struct ti_prcm_clk am3_prcm_clks[ TI_PRCM_FIXED("FIXED_24MHZ", 2400), TI_PRCM_FIXED("FIXED_48MHZ", 4800), TI_PRCM_FIXED("FIXED_96MHZ", 9600), + TI_PRCM_FIXED("DISPLAY_CLK", 27000), TI_PRCM_FIXED_FACTOR("PERIPH_CLK", 1, 1, "FIXED_48MHZ"), TI_PRCM_FIXED_FACTOR("MMC_CLK", 1, 1, "FIXED_96MHZ"), @@ -127,6 +180,8 @@ static struct ti_prcm_clk am3_prcm_clks[ AM3_PRCM_HWMOD_PER("usb_otg_hs", 0x1c, "PERIPH_CLK"), AM3_PRCM_HWMOD_PER("rng", 0x90, "PERIPH_CLK"), + + AM3_PRCM_HWMOD_PER_DISP("lcdc", 0x18, "DISPLAY_CLK"), }; static int Index: src/sys/arch/arm/ti/files.ti diff -u src/sys/arch/arm/ti/files.ti:1.19 src/sys/arch/arm/ti/files.ti:1.20 --- src/sys/arch/arm/ti/files.ti:1.19 Fri Nov 1 11:53:35 2019 +++ src/sys/arch/arm/ti/files.ti Sun Nov 3 22:59:06 2019 @@ -1,4 +1,4 @@ -# $NetBSD: files.ti,v 1.19 2019/11/01 11:53:35 jmcneill Exp $ +# $NetBSD: files.ti,v 1.20 2019/11/03 22:59:06
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Nov 3 22:59:06 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c files.ti Added Files: src/sys/arch/arm/ti: ti_fb.c ti_lcdc.c ti_lcdc.h ti_lcdcreg.h Log Message: Add support for AM335x display controller (LCDC). To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/ti/am3_prcm.c cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_fb.c \ src/sys/arch/arm/ti/ti_lcdc.c src/sys/arch/arm/ti/ti_lcdc.h \ src/sys/arch/arm/ti/ti_lcdcreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Nov 3 13:45:57 UTC 2019 Modified Files: src/sys/arch/arm/ti: omap2_nand.c Log Message: Also match ti,omap2-onenand To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/omap2_nand.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Nov 3 13:45:57 UTC 2019 Modified Files: src/sys/arch/arm/ti: omap2_nand.c Log Message: Also match ti,omap2-onenand To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/omap2_nand.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/omap2_nand.c diff -u src/sys/arch/arm/ti/omap2_nand.c:1.1 src/sys/arch/arm/ti/omap2_nand.c:1.2 --- src/sys/arch/arm/ti/omap2_nand.c:1.1 Fri Nov 1 11:53:35 2019 +++ src/sys/arch/arm/ti/omap2_nand.c Sun Nov 3 13:45:57 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: omap2_nand.c,v 1.1 2019/11/01 11:53:35 jmcneill Exp $ */ +/* $NetBSD: omap2_nand.c,v 1.2 2019/11/03 13:45:57 jmcneill Exp $ */ /*- * Copyright (c) 2010 Department of Software Engineering, @@ -36,7 +36,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: omap2_nand.c,v 1.1 2019/11/01 11:53:35 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: omap2_nand.c,v 1.2 2019/11/03 13:45:57 jmcneill Exp $"); /* TODO move to opt_* */ #undef OMAP2_NAND_HARDWARE_ECC @@ -126,6 +126,7 @@ struct omap2_nand_softc { static const char * compatible[] = { "ti,omap2-nand", + "ti,omap2-onenand", NULL };
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Nov 3 11:34:40 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_gpio.c Log Message: Add support for GPIO interrupts and fix reading the state of output pins. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/ti/ti_gpio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_gpio.c diff -u src/sys/arch/arm/ti/ti_gpio.c:1.2 src/sys/arch/arm/ti/ti_gpio.c:1.3 --- src/sys/arch/arm/ti/ti_gpio.c:1.2 Tue Oct 29 22:19:13 2019 +++ src/sys/arch/arm/ti/ti_gpio.c Sun Nov 3 11:34:40 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_gpio.c,v 1.2 2019/10/29 22:19:13 jmcneill Exp $ */ +/* $NetBSD: ti_gpio.c,v 1.3 2019/11/03 11:34:40 jmcneill Exp $ */ /*- * Copyright (c) 2019 Jared McNeill @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_gpio.c,v 1.2 2019/10/29 22:19:13 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_gpio.c,v 1.3 2019/11/03 11:34:40 jmcneill Exp $"); #include #include @@ -44,27 +44,87 @@ __KERNEL_RCSID(0, "$NetBSD: ti_gpio.c,v #include -#define GPIO_OE0x34 -#define GPIO_DATAIN 0x38 -#define GPIO_CLEARDATAOUT 0x90 -#define GPIO_SETDATAOUT 0x94 +#define TI_GPIO_NPINS 32 + +enum ti_gpio_type { + TI_GPIO_OMAP3, + TI_GPIO_OMAP4, + TI_NGPIO +}; + +enum { + GPIO_IRQSTATUS1, + GPIO_IRQENABLE1, /* OMAP3 */ + GPIO_IRQENABLE1_SET, /* OMAP4 */ + GPIO_IRQENABLE1_CLR, /* OMAP4 */ + GPIO_OE, + GPIO_DATAIN, + GPIO_DATAOUT, + GPIO_LEVELDETECT0, + GPIO_LEVELDETECT1, + GPIO_RISINGDETECT, + GPIO_FALLINGDETECT, + GPIO_CLEARDATAOUT, + GPIO_SETDATAOUT, + GPIO_NREG +}; + +static const u_int ti_gpio_regmap[TI_NGPIO][GPIO_NREG] = { + [TI_GPIO_OMAP3] = { + [GPIO_IRQSTATUS1] = 0x18, + [GPIO_IRQENABLE1] = 0x1c, + [GPIO_OE] = 0x34, + [GPIO_DATAIN] = 0x38, + [GPIO_DATAOUT] = 0x3c, + [GPIO_LEVELDETECT0] = 0x40, + [GPIO_LEVELDETECT1] = 0x44, + [GPIO_RISINGDETECT] = 0x48, + [GPIO_FALLINGDETECT] = 0x4c, + [GPIO_CLEARDATAOUT] = 0x90, + [GPIO_SETDATAOUT] = 0x94, + }, + [TI_GPIO_OMAP4] = { + [GPIO_IRQSTATUS1] = 0x2c, + [GPIO_IRQENABLE1_SET] = 0x34, + [GPIO_IRQENABLE1_CLR] = 0x38, + [GPIO_OE] = 0x134, + [GPIO_DATAIN] = 0x138, + [GPIO_DATAOUT] = 0x13c, + [GPIO_LEVELDETECT0] = 0x140, + [GPIO_LEVELDETECT1] = 0x144, + [GPIO_RISINGDETECT] = 0x148, + [GPIO_FALLINGDETECT] = 0x14c, + [GPIO_CLEARDATAOUT] = 0x190, + [GPIO_SETDATAOUT] = 0x194, + }, +}; static const struct of_compat_data compat_data[] = { - /* compatible reg offset */ - { "ti,omap3-gpio", 0x0 }, - { "ti,omap4-gpio", 0x100 }, + { "ti,omap3-gpio", TI_GPIO_OMAP3 }, + { "ti,omap4-gpio", TI_GPIO_OMAP4 }, { NULL } }; +struct ti_gpio_intr { + u_int intr_pin; + int (*intr_func)(void *); + void *intr_arg; + bool intr_mpsafe; +}; + struct ti_gpio_softc { device_t sc_dev; bus_space_tag_t sc_bst; bus_space_handle_t sc_bsh; kmutex_t sc_lock; - bus_size_t sc_regoff; + enum ti_gpio_type sc_type; + const char *sc_modname; + void *sc_ih; struct gpio_chipset_tag sc_gp; - gpio_pin_t sc_pins[32]; + gpio_pin_t sc_pins[TI_GPIO_NPINS]; + bool sc_pinout[TI_GPIO_NPINS]; + struct ti_gpio_intr sc_intr[TI_GPIO_NPINS]; device_t sc_gpiodev; }; @@ -76,9 +136,9 @@ struct ti_gpio_pin { }; #define RD4(sc, reg) \ -bus_space_read_4((sc)->sc_bst, (sc)->sc_bsh, (reg) + (sc)->sc_regoff) +bus_space_read_4((sc)->sc_bst, (sc)->sc_bsh, ti_gpio_regmap[(sc)->sc_type][(reg)]) #define WR4(sc, reg, val) \ -bus_space_write_4((sc)->sc_bst, (sc)->sc_bsh, (reg) + (sc)->sc_regoff, (val)) +bus_space_write_4((sc)->sc_bst, (sc)->sc_bsh, ti_gpio_regmap[(sc)->sc_type][(reg)], (val)) static int ti_gpio_match(device_t, cfdata_t, void *); static void ti_gpio_attach(device_t, device_t, void *); @@ -100,6 +160,8 @@ ti_gpio_ctl(struct ti_gpio_softc *sc, u_ oe &= ~__BIT(pin); WR4(sc, GPIO_OE, oe); + sc->sc_pinout[pin] = (flags & GPIO_PIN_OUTPUT) != 0; + return 0; } @@ -162,7 +224,10 @@ ti_gpio_read(device_t dev, void *priv, b const uint32_t data_mask = __BIT(pin->pin_nr); /* No lock required for reads */ - data = RD4(sc, GPIO_DATAIN); + if (sc->sc_pinout[pin->pin_nr]) + data = RD4(sc, GPIO_DATAOUT); + else + data = RD4(sc, GPIO_DATAIN); val = __SHIFTOUT(data, data_mask); if (!raw && pin->pin_actlo) val = !val; @@ -195,6 +260,126 @@ static struct fdtbus_gpio_controller_fun .write = ti_gpio_write, }; +static void +ti_gpio_intr_disestablish(device_t dev, void *ih) +{ + struct ti_gpio_softc * const sc = device_private(dev); + struct ti_gpio_intr *intr = ih; + const u_int pin = intr->intr_pin; + const uint32_t pin_mask = __BIT(pin); + uint32_t val; + + /* Disable interrupts */ + if (sc->sc_type == TI_GPIO_OMAP3) { + val = RD4(sc, GPIO_IRQENABLE1); + WR4(sc, GPIO_IRQENABLE1, val & ~pin_mask); + } else { + WR4(sc, GPIO_IRQENABLE1_CLR, pin_mask); + } + + intr->intr_func = NULL; + intr->intr_arg
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Nov 3 11:34:40 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_gpio.c Log Message: Add support for GPIO interrupts and fix reading the state of output pins. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/ti/ti_gpio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Nov 3 10:09:04 UTC 2019 Modified Files: src/sys/arch/arm/ti: if_cpsw.c Added Files: src/sys/arch/arm/ti: if_cpswreg.h Log Message: Cleanup and remove dependency on arch/arm/omap To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/ti/if_cpsw.c cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/if_cpswreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/if_cpsw.c diff -u src/sys/arch/arm/ti/if_cpsw.c:1.7 src/sys/arch/arm/ti/if_cpsw.c:1.8 --- src/sys/arch/arm/ti/if_cpsw.c:1.7 Sun Oct 27 23:25:38 2019 +++ src/sys/arch/arm/ti/if_cpsw.c Sun Nov 3 10:09:04 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_cpsw.c,v 1.7 2019/10/27 23:25:38 jmcneill Exp $ */ +/* $NetBSD: if_cpsw.c,v 1.8 2019/11/03 10:09:04 jmcneill Exp $ */ /* * Copyright (c) 2013 Jonathan A. Kollasch @@ -53,7 +53,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: if_cpsw.c,v 1.7 2019/10/27 23:25:38 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: if_cpsw.c,v 1.8 2019/11/03 10:09:04 jmcneill Exp $"); #include #include @@ -73,14 +73,11 @@ __KERNEL_RCSID(1, "$NetBSD: if_cpsw.c,v #include #include -#if 0 -#include -#else #include -#endif -#include -#include -#include + +#include + +#define FDT_INTR_FLAGS 0 #define CPSW_TXFRAGS 16 @@ -470,22 +467,10 @@ cpsw_attach(device_t parent, device_t se memcpy(sc->sc_enaddr, macaddr, ETHER_ADDR_LEN); } -#if 0 - sc->sc_rxthih = intr_establish(oa->obio_intrbase + CPSW_INTROFF_RXTH, - IPL_VM, IST_LEVEL, cpsw_rxthintr, sc); - sc->sc_rxih = intr_establish(oa->obio_intrbase + CPSW_INTROFF_RX, - IPL_VM, IST_LEVEL, cpsw_rxintr, sc); - sc->sc_txih = intr_establish(oa->obio_intrbase + CPSW_INTROFF_TX, - IPL_VM, IST_LEVEL, cpsw_txintr, sc); - sc->sc_miscih = intr_establish(oa->obio_intrbase + CPSW_INTROFF_MISC, - IPL_VM, IST_LEVEL, cpsw_miscintr, sc); -#else -#define FDT_INTR_FLAGS 0 sc->sc_rxthih = fdtbus_intr_establish(phandle, CPSW_INTROFF_RXTH, IPL_VM, FDT_INTR_FLAGS, cpsw_rxthintr, sc); sc->sc_rxih = fdtbus_intr_establish(phandle, CPSW_INTROFF_RX, IPL_VM, FDT_INTR_FLAGS, cpsw_rxintr, sc); sc->sc_txih = fdtbus_intr_establish(phandle, CPSW_INTROFF_TX, IPL_VM, FDT_INTR_FLAGS, cpsw_txintr, sc); sc->sc_miscih = fdtbus_intr_establish(phandle, CPSW_INTROFF_MISC, IPL_VM, FDT_INTR_FLAGS, cpsw_miscintr, sc); -#endif sc->sc_bst = faa->faa_bst; sc->sc_bss = size; @@ -590,19 +575,6 @@ cpsw_attach(device_t parent, device_t se ifmedia_set(>mii_media, IFM_ETHER | IFM_MANUAL); } else { sc->sc_phy_has_1000t = cpsw_phy_has_1000t(sc); - if (sc->sc_phy_has_1000t) { -#if 0 - aprint_normal_dev(sc->sc_dev, "1000baseT PHY found. " - "Setting RGMII Mode\n"); - /* - * Select the Interface RGMII Mode in the Control - * Module - */ - sitara_cm_reg_write_4(CPSW_GMII_SEL, - GMIISEL_GMII2_SEL(RGMII_MODE) | - GMIISEL_GMII1_SEL(RGMII_MODE)); -#endif - } ifmedia_set(>mii_media, IFM_ETHER | IFM_AUTO); } Added files: Index: src/sys/arch/arm/ti/if_cpswreg.h diff -u /dev/null src/sys/arch/arm/ti/if_cpswreg.h:1.1 --- /dev/null Sun Nov 3 10:09:04 2019 +++ src/sys/arch/arm/ti/if_cpswreg.h Sun Nov 3 10:09:04 2019 @@ -0,0 +1,238 @@ +/*- + * Copyright (c) 2012 Damjan Marion + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _IF_CPSWREG_H +#define _IF_CPSWREG_H + +#define CPSW_ETH_PORTS 2 +#define CPSW_CPPI_PORTS 1 + +#define CPSW_SS_OFFSET 0x +#define CPSW_SS_IDVER (CPSW_SS_OFFSET + 0x00) +#define CPSW_SS_SOFT_RESET (CPSW_SS_OFFSET + 0x08)
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Nov 3 10:09:04 UTC 2019 Modified Files: src/sys/arch/arm/ti: if_cpsw.c Added Files: src/sys/arch/arm/ti: if_cpswreg.h Log Message: Cleanup and remove dependency on arch/arm/omap To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/ti/if_cpsw.c cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/if_cpswreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Fri Nov 1 11:53:35 UTC 2019 Modified Files: src/sys/arch/arm/ti: files.ti omap3_cm.c Added Files: src/sys/arch/arm/ti: omap2_gpmcreg.h omap2_nand.c ti_gpmc.c Log Message: Add NAND flash support. To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/omap2_gpmcreg.h \ src/sys/arch/arm/ti/omap2_nand.c src/sys/arch/arm/ti/ti_gpmc.c cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/ti/omap3_cm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Fri Nov 1 11:53:35 UTC 2019 Modified Files: src/sys/arch/arm/ti: files.ti omap3_cm.c Added Files: src/sys/arch/arm/ti: omap2_gpmcreg.h omap2_nand.c ti_gpmc.c Log Message: Add NAND flash support. To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/omap2_gpmcreg.h \ src/sys/arch/arm/ti/omap2_nand.c src/sys/arch/arm/ti/ti_gpmc.c cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/ti/omap3_cm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/files.ti diff -u src/sys/arch/arm/ti/files.ti:1.18 src/sys/arch/arm/ti/files.ti:1.19 --- src/sys/arch/arm/ti/files.ti:1.18 Thu Oct 31 17:08:54 2019 +++ src/sys/arch/arm/ti/files.ti Fri Nov 1 11:53:35 2019 @@ -1,4 +1,4 @@ -# $NetBSD: files.ti,v 1.18 2019/10/31 17:08:54 jmcneill Exp $ +# $NetBSD: files.ti,v 1.19 2019/11/01 11:53:35 jmcneill Exp $ # file arch/arm/ti/ti_cpufreq.c soc_ti @@ -112,6 +112,16 @@ device omapfb: rasops16, rasops8, wsemul attach omapfb at fdt with omap3_dss file arch/arm/ti/omap3_dss.c omap3_dss +# Memory controller +device tigpmc { } : fdt +attach tigpmc at fdt with ti_gpmc +file arch/arm/ti/ti_gpmc.c ti_gpmc + +# NAND flash controller +device omapnand: nandbus +attach omapnand at fdt +file arch/arm/ti/omap2_nand.c omapnand + # SOC parameters defflag opt_soc.h SOC_TI defflag opt_soc.h SOC_AM33XX: SOC_TI Index: src/sys/arch/arm/ti/omap3_cm.c diff -u src/sys/arch/arm/ti/omap3_cm.c:1.3 src/sys/arch/arm/ti/omap3_cm.c:1.4 --- src/sys/arch/arm/ti/omap3_cm.c:1.3 Thu Oct 31 01:05:06 2019 +++ src/sys/arch/arm/ti/omap3_cm.c Fri Nov 1 11:53:35 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: omap3_cm.c,v 1.3 2019/10/31 01:05:06 jmcneill Exp $ */ +/* $NetBSD: omap3_cm.c,v 1.4 2019/11/01 11:53:35 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: omap3_cm.c,v 1.3 2019/10/31 01:05:06 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: omap3_cm.c,v 1.4 2019/11/01 11:53:35 jmcneill Exp $"); #include #include @@ -55,6 +55,12 @@ static int omap3_cm_match(device_t, cfda static void omap3_cm_attach(device_t, device_t, void *); static int +omap3_cm_hwmod_nopenable(struct ti_prcm_softc *sc, struct ti_prcm_clk *tc, int enable) +{ + return 0; +} + +static int omap3_cm_hwmod_enable(struct ti_prcm_softc *sc, struct ti_prcm_clk *tc, int enable) { uint32_t val; @@ -92,6 +98,8 @@ omap3_cm_hwmod_enable(struct ti_prcm_sof TI_PRCM_HWMOD_MASK((_name), CM_PER_BASE, __BIT(_bit), (_parent), omap3_cm_hwmod_enable, (_flags)) #define OMAP3_CM_HWMOD_USBHOST(_name, _bit, _parent, _flags) \ TI_PRCM_HWMOD_MASK((_name), CM_USBHOST_BASE, __BIT(_bit), (_parent), omap3_cm_hwmod_enable, (_flags)) +#define OMAP3_CM_HWMOD_NOP(_name, _parent) \ + TI_PRCM_HWMOD_MASK((_name), 0, 0, (_parent), omap3_cm_hwmod_nopenable, 0) static const char * const compatible[] = { "ti,omap3-cm", @@ -154,6 +162,8 @@ static struct ti_prcm_clk omap3_cm_clks[ OMAP3_CM_HWMOD_PER("gpio6", 17, "PERIPH_CLK", 0), OMAP3_CM_HWMOD_USBHOST("usb_host_hs", 0, "PERIPH_CLK", 0), + + OMAP3_CM_HWMOD_NOP("gpmc", "PERIPH_CLK"), }; static void Added files: Index: src/sys/arch/arm/ti/omap2_gpmcreg.h diff -u /dev/null src/sys/arch/arm/ti/omap2_gpmcreg.h:1.1 --- /dev/null Fri Nov 1 11:53:35 2019 +++ src/sys/arch/arm/ti/omap2_gpmcreg.h Fri Nov 1 11:53:35 2019 @@ -0,0 +1,236 @@ +/* $NetBSD: omap2_gpmcreg.h,v 1.1 2019/11/01 11:53:35 jmcneill Exp $ */ +/* + * Copyright (c) 2007 Microsoft + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + *must display the following acknowledgement: + * This product includes software developed by Microsoft + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTERS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Fri Nov 1 09:49:22 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_iic.c Log Message: Enable IRQ status bits for omap3 type and set speed properly To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/ti/ti_iic.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_iic.c diff -u src/sys/arch/arm/ti/ti_iic.c:1.3 src/sys/arch/arm/ti/ti_iic.c:1.4 --- src/sys/arch/arm/ti/ti_iic.c:1.3 Thu Oct 31 10:21:29 2019 +++ src/sys/arch/arm/ti/ti_iic.c Fri Nov 1 09:49:21 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_iic.c,v 1.3 2019/10/31 10:21:29 jmcneill Exp $ */ +/* $NetBSD: ti_iic.c,v 1.4 2019/11/01 09:49:21 jmcneill Exp $ */ /* * Copyright (c) 2013 Manuel Bouyer. All rights reserved. @@ -50,7 +50,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_iic.c,v 1.3 2019/10/31 10:21:29 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_iic.c,v 1.4 2019/11/01 09:49:21 jmcneill Exp $"); #include #include @@ -176,6 +176,7 @@ struct ti_iic_softc { kmutex_t sc_mtx; kcondvar_t sc_cv; ti_i2cop_t sc_op; + int sc_opflags; int sc_buflen; int sc_bufidx; char *sc_buf; @@ -308,14 +309,16 @@ ti_iic_intr(void *arg) uint32_t stat; mutex_enter(>sc_mtx); - DPRINTF(("ti_iic_intr\n")); - stat = I2C_READ_REG(sc, I2C_IRQSTATUS); - DPRINTF(("ti_iic_intr pre handle sc->sc_op eq %#x\n", sc->sc_op)); - ti_iic_handle_intr(sc, stat); - I2C_WRITE_REG(sc, I2C_IRQSTATUS, stat); - if (sc->sc_op == TI_I2CERROR || sc->sc_op == TI_I2CDONE) { - DPRINTF(("ti_iic_intr post handle sc->sc_op %#x\n", sc->sc_op)); - cv_broadcast(>sc_cv); + DPRINTF(("ti_iic_intr opflags=%#x\n", sc->sc_opflags)); + if ((sc->sc_opflags & I2C_F_POLL) == 0) { + stat = I2C_READ_REG(sc, I2C_IRQSTATUS); + DPRINTF(("ti_iic_intr pre handle sc->sc_op eq %#x\n", sc->sc_op)); + ti_iic_handle_intr(sc, stat); + I2C_WRITE_REG(sc, I2C_IRQSTATUS, stat); + if (sc->sc_op == TI_I2CERROR || sc->sc_op == TI_I2CDONE) { + DPRINTF(("ti_iic_intr post handle sc->sc_op %#x\n", sc->sc_op)); + cv_broadcast(>sc_cv); + } } mutex_exit(>sc_mtx); DPRINTF(("ti_iic_intr status 0x%x\n", stat)); @@ -423,9 +426,14 @@ ti_iic_reset(struct ti_iic_softc *sc) /* XXX standard speed only */ - psc = 3; - scll = 53; - sclh = 55; + if (sc->sc_type == TI_IIC_OMAP3) { + psc = (9600 / 1920) - 1; + scll = sclh = (1920 / (2 * 10)) - 6; + } else { + psc = 3; + scll = 53; + sclh = 55; + } /* Clocks */ I2C_WRITE_REG(sc, I2C_PSC, psc); @@ -481,6 +489,7 @@ ti_iic_op(struct ti_iic_softc *sc, i2c_a mutex_enter(>sc_mtx); sc->sc_op = op; + sc->sc_opflags = flags; sc->sc_buf = buf; sc->sc_buflen = buflen; sc->sc_bufidx = 0; @@ -491,7 +500,7 @@ ti_iic_op(struct ti_iic_softc *sc, i2c_a I2C_WRITE_REG(sc, I2C_SA, (addr & I2C_SA_MASK)); DPRINTF(("SA 0x%x len %d\n", I2C_READ_REG(sc, I2C_SA), I2C_READ_REG(sc, I2C_CNT))); - if ((flags & I2C_F_POLL) == 0) { + if ((flags & I2C_F_POLL) == 0 || sc->sc_type == TI_IIC_OMAP3) { /* clear any pending interrupt */ I2C_WRITE_REG(sc, I2C_IRQSTATUS, I2C_READ_REG(sc, I2C_IRQSTATUS));
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Fri Nov 1 09:49:22 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_iic.c Log Message: Enable IRQ status bits for omap3 type and set speed properly To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/ti/ti_iic.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Thu Oct 31 10:21:29 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_iic.c ti_iicreg.h Log Message: Handle different register layout on OMAP3 To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/ti/ti_iic.c \ src/sys/arch/arm/ti/ti_iicreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_iic.c diff -u src/sys/arch/arm/ti/ti_iic.c:1.2 src/sys/arch/arm/ti/ti_iic.c:1.3 --- src/sys/arch/arm/ti/ti_iic.c:1.2 Tue Oct 29 22:19:13 2019 +++ src/sys/arch/arm/ti/ti_iic.c Thu Oct 31 10:21:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_iic.c,v 1.2 2019/10/29 22:19:13 jmcneill Exp $ */ +/* $NetBSD: ti_iic.c,v 1.3 2019/10/31 10:21:29 jmcneill Exp $ */ /* * Copyright (c) 2013 Manuel Bouyer. All rights reserved. @@ -50,7 +50,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_iic.c,v 1.2 2019/10/29 22:19:13 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_iic.c,v 1.3 2019/10/31 10:21:29 jmcneill Exp $"); #include #include @@ -81,10 +81,75 @@ __KERNEL_RCSID(0, "$NetBSD: ti_iic.c,v 1 #define DPRINTF(args) #endif +enum ti_iic_type { + TI_IIC_OMAP3, + TI_IIC_OMAP4, + TI_NTYPES +}; + +enum { + I2C_SYSC, + I2C_IRQSTATUS_RAW, + I2C_IRQSTATUS, + I2C_IRQENABLE, /* OMAP3 */ + I2C_IRQENABLE_SET, /* OMAP4 */ + I2C_IRQENABLE_CLR, /* OMAP4 */ + I2C_SYSS, + I2C_BUF, + I2C_CNT, + I2C_DATA, + I2C_CON, + I2C_OA, + I2C_SA, + I2C_PSC, + I2C_SCLL, + I2C_SCLH, + I2C_BUFSTAT, + TI_NREGS +}; + +static const u_int ti_iic_regmap[TI_NTYPES][TI_NREGS] = { + [TI_IIC_OMAP3] = { + [I2C_SYSC] = 0x20, + [I2C_IRQSTATUS_RAW] = 0x08, + [I2C_IRQSTATUS] = 0x08, + [I2C_IRQENABLE] = 0x04, + [I2C_SYSS] = 0x10, + [I2C_BUF] = 0x14, + [I2C_CNT] = 0x18, + [I2C_DATA] = 0x1c, + [I2C_CON] = 0x24, + [I2C_OA] = 0x28, + [I2C_SA] = 0x2c, + [I2C_PSC] = 0x30, + [I2C_SCLL] = 0x34, + [I2C_SCLH] = 0x38, + [I2C_BUFSTAT] = 0x40, + }, + [TI_IIC_OMAP4] = { + [I2C_SYSC] = 0x10, + [I2C_IRQSTATUS_RAW] = 0x24, + [I2C_IRQSTATUS] = 0x28, + [I2C_IRQENABLE_SET] = 0x2c, + [I2C_IRQENABLE_CLR] = 0x30, + [I2C_SYSS] = 0x90, + [I2C_BUF] = 0x94, + [I2C_CNT] = 0x98, + [I2C_DATA] = 0x9c, + [I2C_CON] = 0xa4, + [I2C_OA] = 0xa8, + [I2C_SA] = 0xac, + [I2C_PSC] = 0xb0, + [I2C_SCLL] = 0xb4, + [I2C_SCLH] = 0xb8, + [I2C_BUFSTAT] = 0xc0, + }, +}; + static const struct of_compat_data compat_data[] = { - /* compatible reg shift */ - { "ti,omap3-i2c", 2 }, - { "ti,omap4-i2c", 0 }, + /* compatible type */ + { "ti,omap3-i2c", TI_IIC_OMAP3 }, + { "ti,omap4-i2c", TI_IIC_OMAP4 }, { NULL } }; @@ -105,7 +170,7 @@ struct ti_iic_softc { bus_space_tag_t sc_iot; bus_space_handle_t sc_ioh; - u_int sc_reg_shift; + enum ti_iic_type sc_type; void *sc_ih; kmutex_t sc_mtx; @@ -122,13 +187,13 @@ struct ti_iic_softc { }; #define I2C_READ_REG(sc, reg) \ - bus_space_read_2((sc)->sc_iot, (sc)->sc_ioh, (reg) << (sc)->sc_reg_shift) + bus_space_read_2((sc)->sc_iot, (sc)->sc_ioh, ti_iic_regmap[(sc)->sc_type][(reg)]) #define I2C_READ_DATA(sc) \ - bus_space_read_1((sc)->sc_iot, (sc)->sc_ioh, OMAP2_I2C_DATA << (sc)->sc_reg_shift); + bus_space_read_1((sc)->sc_iot, (sc)->sc_ioh, ti_iic_regmap[(sc)->sc_type][I2C_DATA]) #define I2C_WRITE_REG(sc, reg, val) \ - bus_space_write_2((sc)->sc_iot, (sc)->sc_ioh, (reg) << (sc)->sc_reg_shift, (val)) + bus_space_write_2((sc)->sc_iot, (sc)->sc_ioh, ti_iic_regmap[(sc)->sc_type][(reg)], (val)) #define I2C_WRITE_DATA(sc, val) \ - bus_space_write_1((sc)->sc_iot, (sc)->sc_ioh, OMAP2_I2C_DATA << (sc)->sc_reg_shift, (val)) + bus_space_write_1((sc)->sc_iot, (sc)->sc_ioh, ti_iic_regmap[(sc)->sc_type][I2C_DATA], (val)) static int ti_iic_match(device_t, cfdata_t, void *); static void ti_iic_attach(device_t, device_t, void *); @@ -174,11 +239,11 @@ ti_iic_attach(device_t parent, device_t struct ti_iic_softc *sc = device_private(self); struct fdt_attach_args * const faa = opaque; const int phandle = faa->faa_phandle; - int scheme, major, minor, fifodepth, fifo; + int fifodepth, fifo; + const char *modname; char intrstr[128]; bus_addr_t addr; bus_size_t size; - uint16_t rev; if (fdtbus_get_reg(phandle, 0, , ) != 0) { aprint_error(": couldn't get registers\n"); @@ -208,7 +273,7 @@ ti_iic_attach(device_t parent, device_t aprint_error(": couldn't map registers\n"); return; } - sc->sc_reg_shift = of_search_compatible(phandle, compat_data)->data; + sc->sc_type = of_search_compatible(phandle, compat_data)->data; sc->sc_ih = fdtbus_intr_establish(phandle, 0, IPL_NET, 0, ti_iic_intr, sc); @@ -217,23 +282,17 @@ ti_iic_attach(device_t parent, device_t return; } - scheme = I2C_REVNB_HI_SCHEME(I2C_READ_REG(sc, OMAP2_I2C_REVNB_HI)); - rev = I2C_READ_REG(sc, OMAP2_I2C_REVNB_LO); - if (scheme == 0) { - major = I2C_REV_SCHEME_0_MAJOR(rev); - minor = I2C_REV_SCHEME_0_MINOR(rev); - } else { -
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Thu Oct 31 10:21:29 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_iic.c ti_iicreg.h Log Message: Handle different register layout on OMAP3 To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/ti/ti_iic.c \ src/sys/arch/arm/ti/ti_iicreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Thu Oct 31 01:05:06 UTC 2019 Modified Files: src/sys/arch/arm/ti: omap3_cm.c Log Message: Remove DPLL5 init ported from old omap code, it is not required To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/ti/omap3_cm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/omap3_cm.c diff -u src/sys/arch/arm/ti/omap3_cm.c:1.2 src/sys/arch/arm/ti/omap3_cm.c:1.3 --- src/sys/arch/arm/ti/omap3_cm.c:1.2 Wed Oct 30 21:41:40 2019 +++ src/sys/arch/arm/ti/omap3_cm.c Thu Oct 31 01:05:06 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: omap3_cm.c,v 1.2 2019/10/30 21:41:40 jmcneill Exp $ */ +/* $NetBSD: omap3_cm.c,v 1.3 2019/10/31 01:05:06 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: omap3_cm.c,v 1.2 2019/10/30 21:41:40 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: omap3_cm.c,v 1.3 2019/10/31 01:05:06 jmcneill Exp $"); #include #include @@ -43,7 +43,6 @@ __KERNEL_RCSID(1, "$NetBSD: omap3_cm.c,v #define CM_CORE1_BASE 0x0a00 #define CM_CORE3_BASE 0x0a08 #define CM_WKUP_BASE 0x0c00 -#define CM_CLK_CTRL_REG_BASE 0x0d00 #define CM_PER_BASE 0x1000 #define CM_USBHOST_BASE 0x1400 @@ -52,12 +51,6 @@ __KERNEL_RCSID(1, "$NetBSD: omap3_cm.c,v #define CM_AUTOIDLE 0x30 #define CM_CLKSEL 0x40 -#define CM_CLKEN2_PLL 0x04 -#define CM_IDLEST2_CKGEN 0x24 -#define CM_AUTOIDLE2_PLL 0x34 -#define CM_CLKSEL4_PLL 0x4c -#define CM_CLKSEL5_PLL 0x50 - static int omap3_cm_match(device_t, cfdata_t, void *); static void omap3_cm_attach(device_t, device_t, void *); @@ -173,15 +166,6 @@ omap3_cm_initclocks(struct ti_prcm_softc val |= __BIT(0); /* CLKSEL_GPT2 0x1: source is SYS_CLK */ val |= __BIT(1); /* CLKSEL_GPT3 0x1: source is SYS_CLK */ PRCM_WRITE(sc, CM_PER_BASE + CM_CLKSEL, val); - - /* Enable DPLL5 */ - const u_int m = 443, n = 11, m2 = 4; - PRCM_WRITE(sc, CM_CLK_CTRL_REG_BASE + CM_CLKEN2_PLL, (0x4 << 4) | 0x7); - PRCM_WRITE(sc, CM_CLK_CTRL_REG_BASE + CM_CLKSEL4_PLL, (m << 8) | n); - PRCM_WRITE(sc, CM_CLK_CTRL_REG_BASE + CM_CLKSEL5_PLL, m2); - PRCM_WRITE(sc, CM_CLK_CTRL_REG_BASE + CM_AUTOIDLE2_PLL, 1); - while ((PRCM_READ(sc, CM_CLK_CTRL_REG_BASE + CM_IDLEST2_CKGEN) & 1) == 0) - delay(100); } static int
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Thu Oct 31 01:05:06 UTC 2019 Modified Files: src/sys/arch/arm/ti: omap3_cm.c Log Message: Remove DPLL5 init ported from old omap code, it is not required To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/ti/omap3_cm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Wed Oct 30 22:21:06 UTC 2019 Modified Files: src/sys/arch/arm/ti: omap3_platform.c Log Message: Fix PRM_RSTCTRL_RST_DPLL3 definition, now reset works. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/omap3_platform.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/omap3_platform.c diff -u src/sys/arch/arm/ti/omap3_platform.c:1.1 src/sys/arch/arm/ti/omap3_platform.c:1.2 --- src/sys/arch/arm/ti/omap3_platform.c:1.1 Tue Oct 29 22:19:13 2019 +++ src/sys/arch/arm/ti/omap3_platform.c Wed Oct 30 22:21:06 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: omap3_platform.c,v 1.1 2019/10/29 22:19:13 jmcneill Exp $ */ +/* $NetBSD: omap3_platform.c,v 1.2 2019/10/30 22:21:06 jmcneill Exp $ */ /*- * Copyright (c) 2019 Jared McNeill @@ -30,7 +30,7 @@ #include "opt_console.h" #include -__KERNEL_RCSID(0, "$NetBSD: omap3_platform.c,v 1.1 2019/10/29 22:19:13 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: omap3_platform.c,v 1.2 2019/10/30 22:21:06 jmcneill Exp $"); #include #include @@ -71,7 +71,7 @@ __KERNEL_RCSID(0, "$NetBSD: omap3_platfo #define OMAP3_PRCM_BASE 0x48306000 #define OMAP3_PRCM_GR_BASE (OMAP3_PRCM_BASE + 0x1200) #define PRM_RSTCTRL (OMAP3_PRCM_GR_BASE + 0x50) -#define PRM_RSTCTRL_RST_DPLL3 __BIT(1) +#define PRM_RSTCTRL_RST_DPLL3 __BIT(2) #define OMAP3_32KTIMER_BASE 0x4832 #define REG_32KSYNCNT_CR (OMAP3_32KTIMER_BASE + 0x10)
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Wed Oct 30 22:21:06 UTC 2019 Modified Files: src/sys/arch/arm/ti: omap3_platform.c Log Message: Fix PRM_RSTCTRL_RST_DPLL3 definition, now reset works. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/omap3_platform.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Wed Oct 30 21:41:40 UTC 2019 Modified Files: src/sys/arch/arm/ti: files.ti omap3_cm.c ti_prcm.h Added Files: src/sys/arch/arm/ti: ti_ehci.c ti_usb.c ti_usbtll.c Log Message: Add OMAP3 USB support. To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/omap3_cm.c cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_ehci.c \ src/sys/arch/arm/ti/ti_usb.c src/sys/arch/arm/ti/ti_usbtll.c cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/ti/ti_prcm.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/files.ti diff -u src/sys/arch/arm/ti/files.ti:1.16 src/sys/arch/arm/ti/files.ti:1.17 --- src/sys/arch/arm/ti/files.ti:1.16 Tue Oct 29 22:19:13 2019 +++ src/sys/arch/arm/ti/files.ti Wed Oct 30 21:41:40 2019 @@ -1,4 +1,4 @@ -# $NetBSD: files.ti,v 1.16 2019/10/29 22:19:13 jmcneill Exp $ +# $NetBSD: files.ti,v 1.17 2019/10/30 21:41:40 jmcneill Exp $ # file arch/arm/ti/ti_cpufreq.c soc_ti @@ -88,6 +88,17 @@ device tiotg { } : fdt attach tiotg at fdt with ti_otg file arch/arm/ti/ti_otg.c ti_otg +device tiusb { } : fdt +attach tiusb at fdt with ti_usb +file arch/arm/ti/ti_usb.c ti_usb + +device tiusbtll +attach tiusbtll at fdt with ti_usbtll +file arch/arm/ti/ti_usbtll.c ti_usbtll + +attach ehci at fdt with ti_ehci +file arch/arm/ti/ti_ehci.c ti_ehci + attach motg at fdt with ti_motg file arch/arm/ti/ti_motg.c ti_motg Index: src/sys/arch/arm/ti/omap3_cm.c diff -u src/sys/arch/arm/ti/omap3_cm.c:1.1 src/sys/arch/arm/ti/omap3_cm.c:1.2 --- src/sys/arch/arm/ti/omap3_cm.c:1.1 Tue Oct 29 22:19:13 2019 +++ src/sys/arch/arm/ti/omap3_cm.c Wed Oct 30 21:41:40 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: omap3_cm.c,v 1.1 2019/10/29 22:19:13 jmcneill Exp $ */ +/* $NetBSD: omap3_cm.c,v 1.2 2019/10/30 21:41:40 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: omap3_cm.c,v 1.1 2019/10/29 22:19:13 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: omap3_cm.c,v 1.2 2019/10/30 21:41:40 jmcneill Exp $"); #include #include @@ -43,11 +43,20 @@ __KERNEL_RCSID(1, "$NetBSD: omap3_cm.c,v #define CM_CORE1_BASE 0x0a00 #define CM_CORE3_BASE 0x0a08 #define CM_WKUP_BASE 0x0c00 +#define CM_CLK_CTRL_REG_BASE 0x0d00 #define CM_PER_BASE 0x1000 #define CM_USBHOST_BASE 0x1400 #define CM_FCLKEN 0x00 #define CM_ICLKEN 0x10 +#define CM_AUTOIDLE 0x30 +#define CM_CLKSEL 0x40 + +#define CM_CLKEN2_PLL 0x04 +#define CM_IDLEST2_CKGEN 0x24 +#define CM_AUTOIDLE2_PLL 0x34 +#define CM_CLKSEL4_PLL 0x4c +#define CM_CLKSEL5_PLL 0x50 static int omap3_cm_match(device_t, cfdata_t, void *); static void omap3_cm_attach(device_t, device_t, void *); @@ -71,19 +80,25 @@ omap3_cm_hwmod_enable(struct ti_prcm_sof val &= ~tc->u.hwmod.mask; PRCM_WRITE(sc, tc->u.hwmod.reg + CM_ICLKEN, val); + if (tc->u.hwmod.flags & TI_HWMOD_DISABLE_AUTOIDLE) { + val = PRCM_READ(sc, tc->u.hwmod.reg + CM_AUTOIDLE); + val &= ~tc->u.hwmod.mask; + PRCM_WRITE(sc, tc->u.hwmod.reg + CM_AUTOIDLE, val); + } + return 0; } -#define OMAP3_CM_HWMOD_CORE1(_name, _bit, _parent) \ - TI_PRCM_HWMOD_MASK((_name), CM_CORE1_BASE, __BIT(_bit), (_parent), omap3_cm_hwmod_enable) -#define OMAP3_CM_HWMOD_CORE3(_name, _bit, _parent) \ - TI_PRCM_HWMOD_MASK((_name), CM_CORE3_BASE, __BIT(_bit), (_parent), omap3_cm_hwmod_enable) -#define OMAP3_CM_HWMOD_WKUP(_name, _bit, _parent) \ - TI_PRCM_HWMOD_MASK((_name), CM_WKUP_BASE, __BIT(_bit), (_parent), omap3_cm_hwmod_enable) -#define OMAP3_CM_HWMOD_PER(_name, _bit, _parent) \ - TI_PRCM_HWMOD_MASK((_name), CM_PER_BASE, __BIT(_bit), (_parent), omap3_cm_hwmod_enable) -#define OMAP3_CM_HWMOD_USBHOST(_name, _mask, _parent) \ - TI_PRCM_HWMOD_MASK((_name), CM_USBHOST_BASE, (_mask), (_parent), omap3_cm_hwmod_enable) +#define OMAP3_CM_HWMOD_CORE1(_name, _bit, _parent, _flags) \ + TI_PRCM_HWMOD_MASK((_name), CM_CORE1_BASE, __BIT(_bit), (_parent), omap3_cm_hwmod_enable, (_flags)) +#define OMAP3_CM_HWMOD_CORE3(_name, _bit, _parent, _flags) \ + TI_PRCM_HWMOD_MASK((_name), CM_CORE3_BASE, __BIT(_bit), (_parent), omap3_cm_hwmod_enable, (_flags)) +#define OMAP3_CM_HWMOD_WKUP(_name, _bit, _parent, _flags) \ + TI_PRCM_HWMOD_MASK((_name), CM_WKUP_BASE, __BIT(_bit), (_parent), omap3_cm_hwmod_enable, (_flags)) +#define OMAP3_CM_HWMOD_PER(_name, _bit, _parent, _flags) \ + TI_PRCM_HWMOD_MASK((_name), CM_PER_BASE, __BIT(_bit), (_parent), omap3_cm_hwmod_enable, (_flags)) +#define OMAP3_CM_HWMOD_USBHOST(_name, _bit, _parent, _flags) \ + TI_PRCM_HWMOD_MASK((_name), CM_USBHOST_BASE, __BIT(_bit), (_parent), omap3_cm_hwmod_enable, (_flags)) static const char * const compatible[] = { "ti,omap3-cm", @@ -96,59 +111,79 @@ CFATTACH_DECL_NEW(omap3_cm, sizeof(struc static struct ti_prcm_clk omap3_cm_clks[] = { /* XXX until we get a proper clock
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Wed Oct 30 21:41:40 UTC 2019 Modified Files: src/sys/arch/arm/ti: files.ti omap3_cm.c ti_prcm.h Added Files: src/sys/arch/arm/ti: ti_ehci.c ti_usb.c ti_usbtll.c Log Message: Add OMAP3 USB support. To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/omap3_cm.c cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_ehci.c \ src/sys/arch/arm/ti/ti_usb.c src/sys/arch/arm/ti/ti_usbtll.c cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/ti/ti_prcm.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Wed Oct 30 21:40:04 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c ti_omaptimer.c Log Message: Use the hwmod clk to get the timer rate and explicitly enable the timecounter timer. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/ti/am3_prcm.c cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/ti/ti_omaptimer.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/am3_prcm.c diff -u src/sys/arch/arm/ti/am3_prcm.c:1.7 src/sys/arch/arm/ti/am3_prcm.c:1.8 --- src/sys/arch/arm/ti/am3_prcm.c:1.7 Mon Oct 28 23:57:59 2019 +++ src/sys/arch/arm/ti/am3_prcm.c Wed Oct 30 21:40:04 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: am3_prcm.c,v 1.7 2019/10/28 23:57:59 jmcneill Exp $ */ +/* $NetBSD: am3_prcm.c,v 1.8 2019/10/30 21:40:04 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.7 2019/10/28 23:57:59 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.8 2019/10/30 21:40:04 jmcneill Exp $"); #include #include @@ -86,6 +86,7 @@ CFATTACH_DECL_NEW(am3_prcm, sizeof(struc static struct ti_prcm_clk am3_prcm_clks[] = { /* XXX until we get a proper clock tree */ TI_PRCM_FIXED("FIXED_32K", 32768), + TI_PRCM_FIXED("FIXED_24MHZ", 2400), TI_PRCM_FIXED("FIXED_48MHZ", 4800), TI_PRCM_FIXED("FIXED_96MHZ", 9600), TI_PRCM_FIXED_FACTOR("PERIPH_CLK", 1, 1, "FIXED_48MHZ"), @@ -107,12 +108,12 @@ static struct ti_prcm_clk am3_prcm_clks[ AM3_PRCM_HWMOD_PER("gpio4", 0xb4, "PERIPH_CLK"), AM3_PRCM_HWMOD_WKUP("timer0", 0x10, "FIXED_32K"), - AM3_PRCM_HWMOD_PER("timer2", 0x80, "PERIPH_CLK"), - AM3_PRCM_HWMOD_PER("timer3", 0x84, "PERIPH_CLK"), - AM3_PRCM_HWMOD_PER("timer4", 0x88, "PERIPH_CLK"), - AM3_PRCM_HWMOD_PER("timer5", 0xec, "PERIPH_CLK"), - AM3_PRCM_HWMOD_PER("timer6", 0xf0, "PERIPH_CLK"), - AM3_PRCM_HWMOD_PER("timer7", 0x7c, "PERIPH_CLK"), + AM3_PRCM_HWMOD_PER("timer2", 0x80, "FIXED_24MHZ"), + AM3_PRCM_HWMOD_PER("timer3", 0x84, "FIXED_24MHZ"), + AM3_PRCM_HWMOD_PER("timer4", 0x88, "FIXED_24MHZ"), + AM3_PRCM_HWMOD_PER("timer5", 0xec, "FIXED_24MHZ"), + AM3_PRCM_HWMOD_PER("timer6", 0xf0, "FIXED_24MHZ"), + AM3_PRCM_HWMOD_PER("timer7", 0x7c, "FIXED_24MHZ"), AM3_PRCM_HWMOD_PER("mmc0", 0x3c, "MMC_CLK"), AM3_PRCM_HWMOD_PER("mmc1", 0xf4, "MMC_CLK"), Index: src/sys/arch/arm/ti/ti_omaptimer.c diff -u src/sys/arch/arm/ti/ti_omaptimer.c:1.3 src/sys/arch/arm/ti/ti_omaptimer.c:1.4 --- src/sys/arch/arm/ti/ti_omaptimer.c:1.3 Tue Oct 29 22:19:13 2019 +++ src/sys/arch/arm/ti/ti_omaptimer.c Wed Oct 30 21:40:04 2019 @@ -1,7 +1,7 @@ -/* $NetBSD: ti_omaptimer.c,v 1.3 2019/10/29 22:19:13 jmcneill Exp $ */ +/* $NetBSD: ti_omaptimer.c,v 1.4 2019/10/30 21:40:04 jmcneill Exp $ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_omaptimer.c,v 1.3 2019/10/29 22:19:13 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_omaptimer.c,v 1.4 2019/10/30 21:40:04 jmcneill Exp $"); #include #include @@ -125,6 +125,16 @@ omaptimer_get_timecount(struct timecount return RD4(sc, TIMER_TCRR); } +static void +omaptimer_enable(struct omaptimer_softc *sc, uint32_t value) +{ + /* Configure the timer */ + WR4(sc, TIMER_TLDR, value); + WR4(sc, TIMER_TCRR, value); + WR4(sc, TIMER_TIER, 0); + WR4(sc, TIMER_TCLR, TCLR_ST | TCLR_AR); +} + static int omaptimer_match(device_t parent, cfdata_t match, void *aux) { @@ -141,8 +151,10 @@ omaptimer_attach(device_t parent, device const int phandle = faa->faa_phandle; struct timecounter *tc = >sc_tc; const char *modname; + struct clk *hwmod; bus_addr_t addr; bus_size_t size; + u_int rate; if (fdtbus_get_reg(phandle, 0, , ) != 0) { aprint_error(": couldn't get registers\n"); @@ -159,7 +171,8 @@ omaptimer_attach(device_t parent, device return; } - if (ti_prcm_enable_hwmod(phandle, 0) != 0) { + hwmod = ti_prcm_get_hwmod(phandle, 0); + if (hwmod == NULL || clk_enable(hwmod) != 0) { aprint_error(": couldn't enable module\n"); return; } @@ -171,22 +184,23 @@ omaptimer_attach(device_t parent, device aprint_naive("\n"); aprint_normal(": Timer (%s)\n", modname); + rate = clk_get_rate(hwmod); + if (strcmp(modname, "timer2") == 0) { + omaptimer_enable(sc, 0); + /* Install timecounter */ tc->tc_get_timecount = omaptimer_get_timecount; tc->tc_counter_mask = ~0u; - tc->tc_frequency = 2400; + tc->tc_frequency = rate; tc->tc_name = modname; tc->tc_quality = 200; tc->tc_priv = sc; tc_init(tc); + } else if (strcmp(modname, "timer3") == 0) { - /* Configure the timer */ - const uint32_t value = (0x - ((2400UL / hz) - 1)); - WR4(sc, TIMER_TLDR, value); - WR4(sc, TIMER_TCRR, value); - WR4(sc, TIMER_TIER, 0); - WR4(sc, TIMER_TCLR, TCLR_ST | TCLR_AR); + const uint32_t value = (0x - ((rate / hz) - 1)); + omaptimer_enable(sc, value); /* Use this
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Wed Oct 30 21:40:04 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c ti_omaptimer.c Log Message: Use the hwmod clk to get the timer rate and explicitly enable the timecounter timer. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/ti/am3_prcm.c cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/ti/ti_omaptimer.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Tue Oct 29 22:19:13 UTC 2019 Modified Files: src/sys/arch/arm/ti: files.ti ti_com.c ti_dpll_clock.c ti_gpio.c ti_iic.c ti_omapintc.c ti_omaptimer.c ti_prcm.c ti_prcm.h ti_rng.c ti_sdhc.c Added Files: src/sys/arch/arm/ti: omap3_cm.c omap3_platform.c omap3_prm.c Log Message: Add support for TI OMAP3. To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/omap3_cm.c \ src/sys/arch/arm/ti/omap3_platform.c src/sys/arch/arm/ti/omap3_prm.c cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/ti/ti_com.c cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/ti_dpll_clock.c \ src/sys/arch/arm/ti/ti_gpio.c src/sys/arch/arm/ti/ti_iic.c \ src/sys/arch/arm/ti/ti_omapintc.c src/sys/arch/arm/ti/ti_rng.c cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/ti/ti_omaptimer.c \ src/sys/arch/arm/ti/ti_prcm.c src/sys/arch/arm/ti/ti_prcm.h \ src/sys/arch/arm/ti/ti_sdhc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Tue Oct 29 22:19:13 UTC 2019 Modified Files: src/sys/arch/arm/ti: files.ti ti_com.c ti_dpll_clock.c ti_gpio.c ti_iic.c ti_omapintc.c ti_omaptimer.c ti_prcm.c ti_prcm.h ti_rng.c ti_sdhc.c Added Files: src/sys/arch/arm/ti: omap3_cm.c omap3_platform.c omap3_prm.c Log Message: Add support for TI OMAP3. To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/omap3_cm.c \ src/sys/arch/arm/ti/omap3_platform.c src/sys/arch/arm/ti/omap3_prm.c cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/ti/ti_com.c cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/ti_dpll_clock.c \ src/sys/arch/arm/ti/ti_gpio.c src/sys/arch/arm/ti/ti_iic.c \ src/sys/arch/arm/ti/ti_omapintc.c src/sys/arch/arm/ti/ti_rng.c cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/ti/ti_omaptimer.c \ src/sys/arch/arm/ti/ti_prcm.c src/sys/arch/arm/ti/ti_prcm.h \ src/sys/arch/arm/ti/ti_sdhc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/files.ti diff -u src/sys/arch/arm/ti/files.ti:1.15 src/sys/arch/arm/ti/files.ti:1.16 --- src/sys/arch/arm/ti/files.ti:1.15 Tue Oct 29 10:54:10 2019 +++ src/sys/arch/arm/ti/files.ti Tue Oct 29 22:19:13 2019 @@ -1,8 +1,9 @@ -# $NetBSD: files.ti,v 1.15 2019/10/29 10:54:10 jmcneill Exp $ +# $NetBSD: files.ti,v 1.16 2019/10/29 22:19:13 jmcneill Exp $ # file arch/arm/ti/ti_cpufreq.c soc_ti file arch/arm/ti/am3_platform.c soc_am33xx +file arch/arm/ti/omap3_platform.c soc_omap3 # Interrupt controller device omapintc: pic, pic_splfuncs @@ -23,6 +24,16 @@ device am3prcm { } : fdt, ti_prcm attach am3prcm at fdt with am3_prcm file arch/arm/ti/am3_prcm.c am3_prcm +# CM (OMAP3) +device omap3cm { } : fdt, ti_prcm +attach omap3cm at fdt with omap3_cm +file arch/arm/ti/omap3_cm.c omap3_cm + +# PRM (OMAP3) +device omap3prm { } : fdt +attach omap3prm at fdt with omap3_prm +file arch/arm/ti/omap3_prm.c omap3_prm + # Clocks device timuxclk attach timuxclk at fdt with ti_mux_clock @@ -88,3 +99,4 @@ file arch/arm/ti/ti_rng.c ti_rng # SOC parameters defflag opt_soc.h SOC_TI defflag opt_soc.h SOC_AM33XX: SOC_TI +defflag opt_soc.h SOC_OMAP3: SOC_TI Index: src/sys/arch/arm/ti/ti_com.c diff -u src/sys/arch/arm/ti/ti_com.c:1.7 src/sys/arch/arm/ti/ti_com.c:1.8 --- src/sys/arch/arm/ti/ti_com.c:1.7 Sun Oct 27 12:14:51 2019 +++ src/sys/arch/arm/ti/ti_com.c Tue Oct 29 22:19:13 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_com.c,v 1.7 2019/10/27 12:14:51 jmcneill Exp $ */ +/* $NetBSD: ti_com.c,v 1.8 2019/10/29 22:19:13 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: ti_com.c,v 1.7 2019/10/27 12:14:51 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: ti_com.c,v 1.8 2019/10/29 22:19:13 jmcneill Exp $"); #include #include @@ -105,7 +105,7 @@ ti_com_attach(device_t parent, device_t return; } - if (ti_prcm_enable_hwmod(OF_parent(phandle), 0) != 0) { + if (ti_prcm_enable_hwmod(phandle, 0) != 0) { aprint_error(": couldn't enable module\n"); return; } Index: src/sys/arch/arm/ti/ti_dpll_clock.c diff -u src/sys/arch/arm/ti/ti_dpll_clock.c:1.1 src/sys/arch/arm/ti/ti_dpll_clock.c:1.2 --- src/sys/arch/arm/ti/ti_dpll_clock.c:1.1 Mon Oct 28 21:16:47 2019 +++ src/sys/arch/arm/ti/ti_dpll_clock.c Tue Oct 29 22:19:13 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_dpll_clock.c,v 1.1 2019/10/28 21:16:47 jmcneill Exp $ */ +/* $NetBSD: ti_dpll_clock.c,v 1.2 2019/10/29 22:19:13 jmcneill Exp $ */ /*- * Copyright (c) 2019 Jared McNeill @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_dpll_clock.c,v 1.1 2019/10/28 21:16:47 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_dpll_clock.c,v 1.2 2019/10/29 22:19:13 jmcneill Exp $"); #include #include @@ -39,24 +39,25 @@ __KERNEL_RCSID(0, "$NetBSD: ti_dpll_cloc #include -/* CM_IDLEST_DPLL_MPU */ -#define ST_MN_BYPASS __BIT(8) -#define ST_DPLL_CLK __BIT(0) - -/* CM_CLKSEL_DPLL_MPU */ -#define DPLL_BYP_CLKSEL __BIT(23) #define DPLL_MULT __BITS(18,8) #define DPLL_DIV __BITS(6,0) -/* CM_CLKMODE_DPLL_MPU */ -#define DPLL_EN __BITS(2,0) -#define DPLL_EN_NM_BYPASS 4 -#define DPLL_EN_LOCK 7 - -static const char * const compatible[] = { - "ti,am3-dpll-clock", - NULL -}; +#define AM3_ST_MN_BYPASS __BIT(8) +#define AM3_ST_DPLL_CLK __BIT(0) + +#define AM3_DPLL_EN __BITS(2,0) +#define AM3_DPLL_EN_NM_BYPASS 4 +#define AM3_DPLL_EN_LOCK 7 + +#define OMAP3_ST_MPU_CLK __BIT(0) + +#define OMAP3_EN_MPU_DPLL __BITS(2,0) +#define OMAP3_EN_MPU_DPLL_BYPASS 5 +#define OMAP3_EN_MPU_DPLL_LOCK 7 + +#define OMAP3_CORE_DPLL_CLKOUT_DIV __BITS(31,27) +#define OMAP3_CORE_DPLL_MULT __BITS(26,16) +#define OMAP3_CORE_DPLL_DIV __BITS(14,8) static int ti_dpll_clock_match(device_t, cfdata_t, void *); static void
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Mon Oct 28 23:58:00 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c files.ti Added Files: src/sys/arch/arm/ti: ti_rng.c ti_rngreg.h Log Message: Add support for hardware RNG. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/ti/am3_prcm.c cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_rng.c \ src/sys/arch/arm/ti/ti_rngreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/am3_prcm.c diff -u src/sys/arch/arm/ti/am3_prcm.c:1.6 src/sys/arch/arm/ti/am3_prcm.c:1.7 --- src/sys/arch/arm/ti/am3_prcm.c:1.6 Mon Oct 28 22:21:35 2019 +++ src/sys/arch/arm/ti/am3_prcm.c Mon Oct 28 23:57:59 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: am3_prcm.c,v 1.6 2019/10/28 22:21:35 jmcneill Exp $ */ +/* $NetBSD: am3_prcm.c,v 1.7 2019/10/28 23:57:59 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.6 2019/10/28 22:21:35 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.7 2019/10/28 23:57:59 jmcneill Exp $"); #include #include @@ -124,6 +124,8 @@ static struct ti_prcm_clk am3_prcm_clks[ AM3_PRCM_HWMOD_PER("tptc2", 0x100, "PERIPH_CLK"), AM3_PRCM_HWMOD_PER("usb_otg_hs", 0x1c, "PERIPH_CLK"), + + AM3_PRCM_HWMOD_PER("rng", 0x90, "PERIPH_CLK"), }; static int Index: src/sys/arch/arm/ti/files.ti diff -u src/sys/arch/arm/ti/files.ti:1.13 src/sys/arch/arm/ti/files.ti:1.14 --- src/sys/arch/arm/ti/files.ti:1.13 Mon Oct 28 22:21:35 2019 +++ src/sys/arch/arm/ti/files.ti Mon Oct 28 23:57:59 2019 @@ -1,4 +1,4 @@ -# $NetBSD: files.ti,v 1.13 2019/10/28 22:21:35 jmcneill Exp $ +# $NetBSD: files.ti,v 1.14 2019/10/28 23:57:59 jmcneill Exp $ # file arch/arm/ti/ti_platform.c soc_ti @@ -80,6 +80,11 @@ file arch/arm/ti/ti_otg.c ti_otg attach motg at fdt with ti_motg file arch/arm/ti/ti_motg.c ti_motg +# RNG +device tirng +attach tirng at fdt with ti_rng +file arch/arm/ti/ti_rng.c ti_rng + # SOC parameters defflag opt_soc.h SOC_TI defflag opt_soc.h SOC_TI_AM335X: SOC_TI Added files: Index: src/sys/arch/arm/ti/ti_rng.c diff -u /dev/null src/sys/arch/arm/ti/ti_rng.c:1.1 --- /dev/null Mon Oct 28 23:58:00 2019 +++ src/sys/arch/arm/ti/ti_rng.c Mon Oct 28 23:57:59 2019 @@ -0,0 +1,151 @@ +/* $NetBSD: ti_rng.c,v 1.1 2019/10/28 23:57:59 jmcneill Exp $ */ + +/*- + * Copyright (c) 2015 Jared D. McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. The name of the author may not be used to endorse or promote products + *derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__KERNEL_RCSID(0, "$NetBSD: ti_rng.c,v 1.1 2019/10/28 23:57:59 jmcneill Exp $"); + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +static const char * const compatible[] = { + "ti,omap4-rng", + NULL +}; + +struct ti_rng_softc { + device_t sc_dev; + bus_space_tag_t sc_iot; + bus_space_handle_t sc_ioh; + + kmutex_t sc_lock; + krndsource_t sc_rndsource; +}; + +static int ti_rng_match(device_t, cfdata_t, void *); +static void ti_rng_attach(device_t, device_t, void *); +static void ti_rng_callback(size_t, void *); + +CFATTACH_DECL_NEW(ti_rng, sizeof(struct ti_rng_softc), +ti_rng_match, ti_rng_attach, NULL, NULL); + +#define RD4(sc, reg) \ + bus_space_read_4((sc)->sc_iot, (sc)->sc_ioh, (reg)) +#define WR4(sc, reg, val) \ + bus_space_write_4((sc)->sc_iot, (sc)->sc_ioh, (reg), (val)) + +static int +ti_rng_match(device_t parent, cfdata_t match, void *aux) +{ + struct fdt_attach_args * const faa = aux; + + return of_match_compatible(faa->faa_phandle, compatible); +} + +static void +ti_rng_attach(device_t parent, device_t self, void *aux) +{ + struct ti_rng_softc *sc =
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Mon Oct 28 23:58:00 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c files.ti Added Files: src/sys/arch/arm/ti: ti_rng.c ti_rngreg.h Log Message: Add support for hardware RNG. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/ti/am3_prcm.c cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_rng.c \ src/sys/arch/arm/ti/ti_rngreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Mon Oct 28 22:21:35 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c files.ti Added Files: src/sys/arch/arm/ti: ti_gpio.c Log Message: Add support for GPIO controller. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/ti/am3_prcm.c cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_gpio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/am3_prcm.c diff -u src/sys/arch/arm/ti/am3_prcm.c:1.5 src/sys/arch/arm/ti/am3_prcm.c:1.6 --- src/sys/arch/arm/ti/am3_prcm.c:1.5 Mon Oct 28 21:16:10 2019 +++ src/sys/arch/arm/ti/am3_prcm.c Mon Oct 28 22:21:35 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: am3_prcm.c,v 1.5 2019/10/28 21:16:10 jmcneill Exp $ */ +/* $NetBSD: am3_prcm.c,v 1.6 2019/10/28 22:21:35 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.5 2019/10/28 21:16:10 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.6 2019/10/28 22:21:35 jmcneill Exp $"); #include #include @@ -101,6 +101,11 @@ static struct ti_prcm_clk am3_prcm_clks[ AM3_PRCM_HWMOD_PER("i2c2", 0x48, "PERIPH_CLK"), AM3_PRCM_HWMOD_PER("i2c3", 0x44, "PERIPH_CLK"), + AM3_PRCM_HWMOD_WKUP("gpio1", 0x8, "PERIPH_CLK"), + AM3_PRCM_HWMOD_PER("gpio2", 0xac, "PERIPH_CLK"), + AM3_PRCM_HWMOD_PER("gpio3", 0xb0, "PERIPH_CLK"), + AM3_PRCM_HWMOD_PER("gpio4", 0xb4, "PERIPH_CLK"), + AM3_PRCM_HWMOD_WKUP("timer0", 0x10, "FIXED_32K"), AM3_PRCM_HWMOD_PER("timer2", 0x80, "PERIPH_CLK"), AM3_PRCM_HWMOD_PER("timer3", 0x84, "PERIPH_CLK"), Index: src/sys/arch/arm/ti/files.ti diff -u src/sys/arch/arm/ti/files.ti:1.12 src/sys/arch/arm/ti/files.ti:1.13 --- src/sys/arch/arm/ti/files.ti:1.12 Mon Oct 28 21:16:47 2019 +++ src/sys/arch/arm/ti/files.ti Mon Oct 28 22:21:35 2019 @@ -1,4 +1,4 @@ -# $NetBSD: files.ti,v 1.12 2019/10/28 21:16:47 jmcneill Exp $ +# $NetBSD: files.ti,v 1.13 2019/10/28 22:21:35 jmcneill Exp $ # file arch/arm/ti/ti_platform.c soc_ti @@ -45,6 +45,11 @@ device omaptimer attach omaptimer at fdt file arch/arm/ti/ti_omaptimer.c omaptimer +# GPIO +device tigpio: gpiobus +attach tigpio at fdt with ti_gpio +file arch/arm/ti/ti_gpio.c ti_gpio + # I2C device tiiic: i2cbus, i2cexec attach tiiic at fdt with ti_iic Added files: Index: src/sys/arch/arm/ti/ti_gpio.c diff -u /dev/null src/sys/arch/arm/ti/ti_gpio.c:1.1 --- /dev/null Mon Oct 28 22:21:35 2019 +++ src/sys/arch/arm/ti/ti_gpio.c Mon Oct 28 22:21:35 2019 @@ -0,0 +1,302 @@ +/* $NetBSD: ti_gpio.c,v 1.1 2019/10/28 22:21:35 jmcneill Exp $ */ + +/*- + * Copyright (c) 2019 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__KERNEL_RCSID(0, "$NetBSD: ti_gpio.c,v 1.1 2019/10/28 22:21:35 jmcneill Exp $"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#define GPIO_OE0x134 +#define GPIO_DATAIN 0x138 +#define GPIO_CLEARDATAOUT 0x190 +#define GPIO_SETDATAOUT 0x194 + +static const char * const compatible[] = { + "ti,omap4-gpio", + NULL +}; + +struct ti_gpio_softc { + device_t sc_dev; + bus_space_tag_t sc_bst; + bus_space_handle_t sc_bsh; + kmutex_t sc_lock; + + struct gpio_chipset_tag sc_gp; + gpio_pin_t sc_pins[32]; + device_t sc_gpiodev; +}; + +struct ti_gpio_pin { + struct ti_gpio_softc *pin_sc; + u_int pin_nr; + int pin_flags; + bool pin_actlo; +}; + +#define RD4(sc, reg) \ +bus_space_read_4((sc)->sc_bst, (sc)->sc_bsh, (reg)) +#define WR4(sc, reg, val) \ +
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Mon Oct 28 22:21:35 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c files.ti Added Files: src/sys/arch/arm/ti: ti_gpio.c Log Message: Add support for GPIO controller. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/ti/am3_prcm.c cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_gpio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Mon Oct 28 21:16:47 UTC 2019 Modified Files: src/sys/arch/arm/ti: files.ti Added Files: src/sys/arch/arm/ti: ti_cpufreq.c ti_div_clock.c ti_dpll_clock.c ti_mux_clock.c Log Message: Add AM335x DVFS support. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_cpufreq.c \ src/sys/arch/arm/ti/ti_div_clock.c src/sys/arch/arm/ti/ti_dpll_clock.c \ src/sys/arch/arm/ti/ti_mux_clock.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Mon Oct 28 21:16:47 UTC 2019 Modified Files: src/sys/arch/arm/ti: files.ti Added Files: src/sys/arch/arm/ti: ti_cpufreq.c ti_div_clock.c ti_dpll_clock.c ti_mux_clock.c Log Message: Add AM335x DVFS support. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_cpufreq.c \ src/sys/arch/arm/ti/ti_div_clock.c src/sys/arch/arm/ti/ti_dpll_clock.c \ src/sys/arch/arm/ti/ti_mux_clock.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/files.ti diff -u src/sys/arch/arm/ti/files.ti:1.11 src/sys/arch/arm/ti/files.ti:1.12 --- src/sys/arch/arm/ti/files.ti:1.11 Sun Oct 27 19:11:07 2019 +++ src/sys/arch/arm/ti/files.ti Mon Oct 28 21:16:47 2019 @@ -1,7 +1,8 @@ -# $NetBSD: files.ti,v 1.11 2019/10/27 19:11:07 jmcneill Exp $ +# $NetBSD: files.ti,v 1.12 2019/10/28 21:16:47 jmcneill Exp $ # file arch/arm/ti/ti_platform.c soc_ti +file arch/arm/ti/ti_cpufreq.c soc_ti # Interrupt controller device omapintc: pic, pic_splfuncs @@ -18,10 +19,23 @@ define ti_prcm file arch/arm/ti/ti_prcm.c ti_prcm # PRCM (AM3xxx) -device am3prcm: ti_prcm +device am3prcm { } : fdt, ti_prcm attach am3prcm at fdt with am3_prcm file arch/arm/ti/am3_prcm.c am3_prcm +# Clocks +device timuxclk +attach timuxclk at fdt with ti_mux_clock +file arch/arm/ti/ti_mux_clock.c ti_mux_clock + +device tidivclk +attach tidivclk at fdt with ti_div_clock +file arch/arm/ti/ti_div_clock.c ti_div_clock + +device tidpllclk +attach tidpllclk at fdt with ti_dpll_clock +file arch/arm/ti/ti_dpll_clock.c ti_dpll_clock + # UART attach com at fdt with ti_com: ti_prcm file arch/arm/ti/ti_com.c ti_com needs-flag Added files: Index: src/sys/arch/arm/ti/ti_cpufreq.c diff -u /dev/null src/sys/arch/arm/ti/ti_cpufreq.c:1.1 --- /dev/null Mon Oct 28 21:16:47 2019 +++ src/sys/arch/arm/ti/ti_cpufreq.c Mon Oct 28 21:16:47 2019 @@ -0,0 +1,113 @@ +/* $NetBSD: ti_cpufreq.c,v 1.1 2019/10/28 21:16:47 jmcneill Exp $ */ + +/*- + * Copyright (c) 2019 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "opt_soc.h" + +#include +__KERNEL_RCSID(0, "$NetBSD: ti_cpufreq.c,v 1.1 2019/10/28 21:16:47 jmcneill Exp $"); + +#include +#include +#include +#include +#include + +#include +#include + +static bool ti_opp_probed = false; +static bool (*ti_opp_supportedfn)(const int, const int); +static struct syscon *ti_opp_syscon; + +#ifdef SOC_TI_AM335X + +#define AM33XX_REV_OFFSET 0x0600 +#define AM33XX_REV_MASK 0xf000 +#define AM33XX_EFUSE_OFFSET 0x07fc +#define AM33XX_EFUSE_MASK 0x1fff +#define AM33XX_EFUSE_DEFAULT 0x1e2f + +static const char * const am33xx_compatible[] = { "ti,am33xx", NULL }; + +static bool +am33xx_opp_supported(const int opp_table, const int opp_node) +{ + const u_int *supported_hw; + uint32_t efuse, rev; + int len; + + syscon_lock(ti_opp_syscon); + rev = __SHIFTOUT(syscon_read_4(ti_opp_syscon, AM33XX_REV_OFFSET), AM33XX_REV_MASK); + efuse = __SHIFTOUT(syscon_read_4(ti_opp_syscon, AM33XX_EFUSE_OFFSET), AM33XX_EFUSE_MASK); + syscon_unlock(ti_opp_syscon); + + if (efuse == 0) + efuse = AM33XX_EFUSE_DEFAULT; + efuse = ~efuse; + + supported_hw = fdtbus_get_prop(opp_node, "opp-supported-hw", ); + if (len != 8) + return false; + + if ((rev & be32toh(supported_hw[0])) == 0) + return false; + + if ((efuse & be32toh(supported_hw[1])) == 0) + return false; + + return true; +} +#endif + +static void +ti_opp_probe(const int opp_table) +{ + if (ti_opp_probed) + return; + ti_opp_probed = true; + + ti_opp_syscon =
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Mon Oct 28 21:16:10 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c Log Message: enumerate devices under child "clocks" node To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/ti/am3_prcm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/am3_prcm.c diff -u src/sys/arch/arm/ti/am3_prcm.c:1.4 src/sys/arch/arm/ti/am3_prcm.c:1.5 --- src/sys/arch/arm/ti/am3_prcm.c:1.4 Sun Oct 27 19:11:07 2019 +++ src/sys/arch/arm/ti/am3_prcm.c Mon Oct 28 21:16:10 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: am3_prcm.c,v 1.4 2019/10/27 19:11:07 jmcneill Exp $ */ +/* $NetBSD: am3_prcm.c,v 1.5 2019/10/28 21:16:10 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.4 2019/10/27 19:11:07 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.5 2019/10/28 21:16:10 jmcneill Exp $"); #include #include @@ -134,6 +134,7 @@ am3_prcm_attach(device_t parent, device_ { struct ti_prcm_softc * const sc = device_private(self); struct fdt_attach_args * const faa = aux; + int clocks; sc->sc_dev = self; sc->sc_phandle = faa->faa_phandle; @@ -147,4 +148,8 @@ am3_prcm_attach(device_t parent, device_ aprint_naive("\n"); aprint_normal(": AM3xxx PRCM\n"); + + clocks = of_find_firstchild_byname(sc->sc_phandle, "clocks"); + if (clocks > 0) + fdt_add_bus(self, clocks, faa); }
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Mon Oct 28 21:16:10 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c Log Message: enumerate devices under child "clocks" node To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/ti/am3_prcm.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 23:25:38 UTC 2019 Modified Files: src/sys/arch/arm/ti: if_cpsw.c Log Message: Get mac address from DT To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/ti/if_cpsw.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/if_cpsw.c diff -u src/sys/arch/arm/ti/if_cpsw.c:1.6 src/sys/arch/arm/ti/if_cpsw.c:1.7 --- src/sys/arch/arm/ti/if_cpsw.c:1.6 Wed May 29 06:17:27 2019 +++ src/sys/arch/arm/ti/if_cpsw.c Sun Oct 27 23:25:38 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_cpsw.c,v 1.6 2019/05/29 06:17:27 msaitoh Exp $ */ +/* $NetBSD: if_cpsw.c,v 1.7 2019/10/27 23:25:38 jmcneill Exp $ */ /* * Copyright (c) 2013 Jonathan A. Kollasch @@ -53,7 +53,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: if_cpsw.c,v 1.6 2019/05/29 06:17:27 msaitoh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: if_cpsw.c,v 1.7 2019/10/27 23:25:38 jmcneill Exp $"); #include #include @@ -398,14 +398,14 @@ cpsw_attach(device_t parent, device_t se { struct fdt_attach_args * const faa = aux; struct cpsw_softc * const sc = device_private(self); - prop_dictionary_t dict = device_properties(self); struct ethercom * const ec = >sc_ec; struct ifnet * const ifp = >ec_if; struct mii_data * const mii = >sc_mii; const int phandle = faa->faa_phandle; + const uint8_t *macaddr; bus_addr_t addr; bus_size_t size; - int error; + int error, slave, len; u_int i; KERNHIST_INIT(cpswhist, 4096); @@ -423,8 +423,14 @@ cpsw_attach(device_t parent, device_t se callout_init(>sc_tick_ch, 0); callout_setfunc(>sc_tick_ch, cpsw_tick, sc); - prop_data_t eaprop = prop_dictionary_get(dict, "mac-address"); - if (eaprop == NULL) { + macaddr = NULL; + slave = of_find_firstchild_byname(phandle, "slave"); + if (slave > 0) { + macaddr = fdtbus_get_prop(slave, "mac-address", ); + if (len != ETHER_ADDR_LEN) + macaddr = NULL; + } + if (macaddr == NULL) { #if 0 /* grab mac_id0 from AM335x control module */ uint32_t reg_lo, reg_hi; @@ -461,10 +467,7 @@ cpsw_attach(device_t parent, device_t se #endif } } else { - KASSERT(prop_object_type(eaprop) == PROP_TYPE_DATA); - KASSERT(prop_data_size(eaprop) == ETHER_ADDR_LEN); - memcpy(sc->sc_enaddr, prop_data_data_nocopy(eaprop), - ETHER_ADDR_LEN); + memcpy(sc->sc_enaddr, macaddr, ETHER_ADDR_LEN); } #if 0
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 23:25:38 UTC 2019 Modified Files: src/sys/arch/arm/ti: if_cpsw.c Log Message: Get mac address from DT To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/ti/if_cpsw.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 21:26:04 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_platform.c Log Message: Fix early putchar, add reset func To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/ti/ti_platform.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_platform.c diff -u src/sys/arch/arm/ti/ti_platform.c:1.8 src/sys/arch/arm/ti/ti_platform.c:1.9 --- src/sys/arch/arm/ti/ti_platform.c:1.8 Sun Oct 27 17:58:42 2019 +++ src/sys/arch/arm/ti/ti_platform.c Sun Oct 27 21:26:04 2019 @@ -1,9 +1,9 @@ -/* $NetBSD: ti_platform.c,v 1.8 2019/10/27 17:58:42 jmcneill Exp $ */ +/* $NetBSD: ti_platform.c,v 1.9 2019/10/27 21:26:04 jmcneill Exp $ */ #include "opt_console.h" #include -__KERNEL_RCSID(0, "$NetBSD: ti_platform.c,v 1.8 2019/10/27 17:58:42 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_platform.c,v 1.9 2019/10/27 21:26:04 jmcneill Exp $"); #include @@ -26,7 +26,7 @@ void am33xx_platform_early_putchar(char c) { #ifdef CONSADDR -#define CONSADDR_VA ((CONSADDR - 0x44c0) + 0xe4c0) +#define CONSADDR_VA ((CONSADDR - 0x44c0) + (KERNEL_IO_VBASE | 0x04c0)) volatile uint32_t *uartaddr = cpu_earlydevice_va_p() ? (volatile uint32_t *)CONSADDR_VA : (volatile uint32_t *)CONSADDR; @@ -130,12 +130,21 @@ am33xx_platform_delay(u_int n) } } +static void +am33xx_platform_reset(void) +{ + volatile uint32_t *resetaddr = (volatile uint32_t *)(KERNEL_IO_VBASE | 0x04e00f00); + + *resetaddr = 1; +} + static const struct arm_platform am33xx_platform = { .ap_devmap = am33xx_platform_devmap, .ap_init_attach_args = am33xx_platform_init_attach_args, .ap_bootstrap = am33xx_platform_bootstrap, .ap_uart_freq = am33xx_platform_uart_freq, .ap_delay = am33xx_platform_delay, + .ap_reset = am33xx_platform_reset, }; ARM_PLATFORM(am33xx, "ti,am33xx", _platform);
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 21:26:04 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_platform.c Log Message: Fix early putchar, add reset func To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/ti/ti_platform.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 19:11:07 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c files.ti Added Files: src/sys/arch/arm/ti: ti_iic.c ti_iicreg.h Log Message: Add I2C support. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/ti/am3_prcm.c cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_iic.c \ src/sys/arch/arm/ti/ti_iicreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 19:11:07 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c files.ti Added Files: src/sys/arch/arm/ti: ti_iic.c ti_iicreg.h Log Message: Add I2C support. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/ti/am3_prcm.c cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_iic.c \ src/sys/arch/arm/ti/ti_iicreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/am3_prcm.c diff -u src/sys/arch/arm/ti/am3_prcm.c:1.3 src/sys/arch/arm/ti/am3_prcm.c:1.4 --- src/sys/arch/arm/ti/am3_prcm.c:1.3 Sun Oct 27 16:31:26 2019 +++ src/sys/arch/arm/ti/am3_prcm.c Sun Oct 27 19:11:07 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: am3_prcm.c,v 1.3 2019/10/27 16:31:26 jmcneill Exp $ */ +/* $NetBSD: am3_prcm.c,v 1.4 2019/10/27 19:11:07 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.3 2019/10/27 16:31:26 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.4 2019/10/27 19:11:07 jmcneill Exp $"); #include #include @@ -97,6 +97,10 @@ static struct ti_prcm_clk am3_prcm_clks[ AM3_PRCM_HWMOD_PER("uart4", 0x78, "PERIPH_CLK"), AM3_PRCM_HWMOD_PER("uart5", 0x38, "PERIPH_CLK"), + AM3_PRCM_HWMOD_WKUP("i2c1", 0xb8, "PERIPH_CLK"), + AM3_PRCM_HWMOD_PER("i2c2", 0x48, "PERIPH_CLK"), + AM3_PRCM_HWMOD_PER("i2c3", 0x44, "PERIPH_CLK"), + AM3_PRCM_HWMOD_WKUP("timer0", 0x10, "FIXED_32K"), AM3_PRCM_HWMOD_PER("timer2", 0x80, "PERIPH_CLK"), AM3_PRCM_HWMOD_PER("timer3", 0x84, "PERIPH_CLK"), Index: src/sys/arch/arm/ti/files.ti diff -u src/sys/arch/arm/ti/files.ti:1.10 src/sys/arch/arm/ti/files.ti:1.11 --- src/sys/arch/arm/ti/files.ti:1.10 Sun Oct 27 16:31:26 2019 +++ src/sys/arch/arm/ti/files.ti Sun Oct 27 19:11:07 2019 @@ -1,4 +1,4 @@ -# $NetBSD: files.ti,v 1.10 2019/10/27 16:31:26 jmcneill Exp $ +# $NetBSD: files.ti,v 1.11 2019/10/27 19:11:07 jmcneill Exp $ # file arch/arm/ti/ti_platform.c soc_ti @@ -31,6 +31,11 @@ device omaptimer attach omaptimer at fdt file arch/arm/ti/ti_omaptimer.c omaptimer +# I2C +device tiiic: i2cbus, i2cexec +attach tiiic at fdt with ti_iic +file arch/arm/ti/ti_iic.c ti_iic + # Ethernet device cpsw: ether, ifnet, arp, mii, mii_phy attach cpsw at fdt Added files: Index: src/sys/arch/arm/ti/ti_iic.c diff -u /dev/null src/sys/arch/arm/ti/ti_iic.c:1.1 --- /dev/null Sun Oct 27 19:11:07 2019 +++ src/sys/arch/arm/ti/ti_iic.c Sun Oct 27 19:11:07 2019 @@ -0,0 +1,629 @@ +/* $NetBSD: ti_iic.c,v 1.1 2019/10/27 19:11:07 jmcneill Exp $ */ + +/* + * Copyright (c) 2013 Manuel Bouyer. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*- + * Copyright (c) 2012 Jared D. McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. The name of the author may not be used to endorse or promote products + *derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 17:59:21 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_omaptimer.c Log Message: Use Timer2 for timecounter, and enable hw module. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/ti_omaptimer.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_omaptimer.c diff -u src/sys/arch/arm/ti/ti_omaptimer.c:1.1 src/sys/arch/arm/ti/ti_omaptimer.c:1.2 --- src/sys/arch/arm/ti/ti_omaptimer.c:1.1 Thu Oct 26 01:16:32 2017 +++ src/sys/arch/arm/ti/ti_omaptimer.c Sun Oct 27 17:59:21 2019 @@ -1,7 +1,7 @@ -/* $NetBSD: ti_omaptimer.c,v 1.1 2017/10/26 01:16:32 jakllsch Exp $ */ +/* $NetBSD: ti_omaptimer.c,v 1.2 2019/10/27 17:59:21 jmcneill Exp $ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_omaptimer.c,v 1.1 2017/10/26 01:16:32 jakllsch Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_omaptimer.c,v 1.2 2019/10/27 17:59:21 jmcneill Exp $"); #include #include @@ -15,6 +15,23 @@ __KERNEL_RCSID(0, "$NetBSD: ti_omaptimer #include +#include + +#define TIMER_IRQENABLE_SET 0x2c +#define TIMER_IRQENABLE_CLR 0x30 +#define MAT_EN_FLAG __BIT(0) +#define OVF_EN_FLAG __BIT(1) +#define TCAR_EN_FLAG __BIT(2) +#define TIMER_TCLR 0x38 +#define TCLR_ST __BIT(0) +#define TCLR_AR __BIT(1) +#define TIMER_TCRR 0x3c +#define TIMER_TLDR 0x40 + +/* XXX */ +#define IS_TIMER2(addr) ((addr) == 0x4804) +#define IS_TIMER3(addr) ((addr) == 0x48042000) + static const char * const compatible[] = { "ti,am335x-timer-1ms", "ti,am335x-timer", @@ -61,12 +78,16 @@ omaptimer_cpu_initclocks(void) aprint_normal_dev(sc->sc_dev, "interrupting on %s\n", intrstr); - uint32_t value; - value = (0x - ((2400UL / hz) - 1)); - bus_space_write_4(sc->sc_bst, sc->sc_bsh, 0x40, value); - bus_space_write_4(sc->sc_bst, sc->sc_bsh, 0x3c, value); - bus_space_write_4(sc->sc_bst, sc->sc_bsh, 0x2c, 2); - bus_space_write_4(sc->sc_bst, sc->sc_bsh, 0x38, 3); + /* Enable interrupts */ + bus_space_write_4(sc->sc_bst, sc->sc_bsh, TIMER_IRQENABLE_SET, OVF_EN_FLAG); +} + +static u_int +omaptimer_get_timecount(struct timecounter *tc) +{ + struct omaptimer_softc * const sc = tc->tc_priv; + + return bus_space_read_4(sc->sc_bst, sc->sc_bsh, TIMER_TCRR); } static int @@ -83,6 +104,7 @@ omaptimer_attach(device_t parent, device struct omaptimer_softc * const sc = device_private(self); struct fdt_attach_args * const faa = aux; const int phandle = faa->faa_phandle; + struct timecounter *tc = >sc_tc; bus_addr_t addr; bus_size_t size; @@ -107,13 +129,37 @@ omaptimer_attach(device_t parent, device return; } + if (ti_prcm_enable_hwmod(OF_parent(phandle), 0) != 0) { + aprint_error(": couldn't enable module\n"); + return; + } + aprint_naive("\n"); aprint_normal(": Timer\n"); - /* Use this as the OS timer in UP configurations */ - if (!arm_has_mpext_p && addr == 0x48042000) { /* TIMER3 */ - timer_softc = sc; - arm_fdt_timer_register(omaptimer_cpu_initclocks); + if (IS_TIMER2(addr)) { + /* Install timecounter */ + tc->tc_get_timecount = omaptimer_get_timecount; + tc->tc_counter_mask = ~0u; + tc->tc_frequency = 2400; + tc->tc_name = "Timer2"; + tc->tc_quality = 200; + tc->tc_priv = sc; + tc_init(tc); + } else if (IS_TIMER3(addr)) { + /* Configure the timer */ + const uint32_t value = (0x - ((2400UL / hz) - 1)); + bus_space_write_4(sc->sc_bst, sc->sc_bsh, TIMER_TLDR, value); + bus_space_write_4(sc->sc_bst, sc->sc_bsh, TIMER_TCRR, value); + bus_space_write_4(sc->sc_bst, sc->sc_bsh, TIMER_IRQENABLE_CLR, + MAT_EN_FLAG | OVF_EN_FLAG | TCAR_EN_FLAG); + bus_space_write_4(sc->sc_bst, sc->sc_bsh, TIMER_TCLR, TCLR_ST | TCLR_AR); + + /* Use this as the OS timer in UP configurations */ + if (!arm_has_mpext_p) { + timer_softc = sc; + arm_fdt_timer_register(omaptimer_cpu_initclocks); + } } }
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 17:59:21 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_omaptimer.c Log Message: Use Timer2 for timecounter, and enable hw module. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/ti_omaptimer.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 17:58:42 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_platform.c Log Message: Place devmap above KERNEL_IO_VBASE To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/ti/ti_platform.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 17:58:42 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_platform.c Log Message: Place devmap above KERNEL_IO_VBASE To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/ti/ti_platform.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_platform.c diff -u src/sys/arch/arm/ti/ti_platform.c:1.7 src/sys/arch/arm/ti/ti_platform.c:1.8 --- src/sys/arch/arm/ti/ti_platform.c:1.7 Sat Oct 26 15:58:15 2019 +++ src/sys/arch/arm/ti/ti_platform.c Sun Oct 27 17:58:42 2019 @@ -1,9 +1,9 @@ -/* $NetBSD: ti_platform.c,v 1.7 2019/10/26 15:58:15 jmcneill Exp $ */ +/* $NetBSD: ti_platform.c,v 1.8 2019/10/27 17:58:42 jmcneill Exp $ */ #include "opt_console.h" #include -__KERNEL_RCSID(0, "$NetBSD: ti_platform.c,v 1.7 2019/10/26 15:58:15 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_platform.c,v 1.8 2019/10/27 17:58:42 jmcneill Exp $"); #include @@ -14,6 +14,8 @@ __KERNEL_RCSID(0, "$NetBSD: ti_platform. #include +#include + extern struct bus_space armv7_generic_bs_tag; extern struct bus_space armv7_generic_a4x_bs_tag; extern struct arm32_bus_dma_tag arm_generic_dma_tag; @@ -41,9 +43,9 @@ static const struct pmap_devmap * am33xx_platform_devmap(void) { static const struct pmap_devmap devmap[] = { - DEVMAP_ENTRY(0xe4c0, 0x44c0, 0x0040), - DEVMAP_ENTRY(0xe800, 0x4800, 0x0100), - DEVMAP_ENTRY(0xea00, 0x4a00, 0x0100), + DEVMAP_ENTRY(KERNEL_IO_VBASE | 0x04c0, 0x44c0, 0x0040), + DEVMAP_ENTRY(KERNEL_IO_VBASE | 0x0800, 0x4800, 0x0100), + DEVMAP_ENTRY(KERNEL_IO_VBASE | 0x0a00, 0x4a00, 0x0100), DEVMAP_ENTRY_END }; @@ -120,10 +122,10 @@ am33xx_platform_delay(u_int n) prev = bus_space_read_4(bst, bsh, 0x3c); while (ticks > 0) { cur = bus_space_read_4(bst, bsh, 0x3c); - if (cur > prev) + if (cur >= prev) ticks -= (cur - prev); else - ticks -= (UINT32_MAX - prev + 1 - cur); + ticks -= (UINT32_MAX - cur + prev); prev = cur; } } @@ -136,12 +138,4 @@ static const struct arm_platform am33xx_ .ap_delay = am33xx_platform_delay, }; -void dummysetstatclockrate(int); -void -dummysetstatclockrate(int newhz) -{ -} -__weak_alias(setstatclockrate, dummysetstatclockrate); - ARM_PLATFORM(am33xx, "ti,am33xx", _platform); -
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 17:21:23 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_sdhc.c ti_sdhcreg.h Log Message: Disable autoidle To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/ti_sdhc.c \ src/sys/arch/arm/ti/ti_sdhcreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 17:21:23 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_sdhc.c ti_sdhcreg.h Log Message: Disable autoidle To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/ti_sdhc.c \ src/sys/arch/arm/ti/ti_sdhcreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_sdhc.c diff -u src/sys/arch/arm/ti/ti_sdhc.c:1.1 src/sys/arch/arm/ti/ti_sdhc.c:1.2 --- src/sys/arch/arm/ti/ti_sdhc.c:1.1 Sun Oct 27 15:43:46 2019 +++ src/sys/arch/arm/ti/ti_sdhc.c Sun Oct 27 17:21:23 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_sdhc.c,v 1.1 2019/10/27 15:43:46 jmcneill Exp $ */ +/* $NetBSD: ti_sdhc.c,v 1.2 2019/10/27 17:21:23 jmcneill Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. * All rights reserved. @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_sdhc.c,v 1.1 2019/10/27 15:43:46 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_sdhc.c,v 1.2 2019/10/27 17:21:23 jmcneill Exp $"); #include #include @@ -297,8 +297,12 @@ no_dma: aprint_error_dev(dev, "Soft reset timeout\n"); bus_space_write_4(sc->sc_bst, sc->sc_bsh, MMCHS_SYSCONFIG, SYSCONFIG_ENAWAKEUP | +#if notyet SYSCONFIG_AUTOIDLE | SYSCONFIG_SIDLEMODE_AUTO | +#else + SYSCONFIG_SIDLEMODE_IGNORE | +#endif SYSCONFIG_CLOCKACTIVITY_FCLK | SYSCONFIG_CLOCKACTIVITY_ICLK); Index: src/sys/arch/arm/ti/ti_sdhcreg.h diff -u src/sys/arch/arm/ti/ti_sdhcreg.h:1.1 src/sys/arch/arm/ti/ti_sdhcreg.h:1.2 --- src/sys/arch/arm/ti/ti_sdhcreg.h:1.1 Sun Oct 27 15:43:46 2019 +++ src/sys/arch/arm/ti/ti_sdhcreg.h Sun Oct 27 17:21:23 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_sdhcreg.h,v 1.1 2019/10/27 15:43:46 jmcneill Exp $ */ +/* $NetBSD: ti_sdhcreg.h,v 1.2 2019/10/27 17:21:23 jmcneill Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -61,6 +61,7 @@ # define SYSCONFIG_CLOCKACTIVITY_ICLK (1 << 8) # define SYSCONFIG_SIDLEMODE_MASK (3 << 3) # define SYSCONFIG_SIDLEMODE_AUTO (2 << 3) +# define SYSCONFIG_SIDLEMODE_IGNORE (1 << 3) # define SYSCONFIG_ENAWAKEUP (1 << 2) # define SYSCONFIG_SOFTRESET (1 << 1) # define SYSCONFIG_AUTOIDLE (1 << 0)
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 16:31:26 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c files.ti Added Files: src/sys/arch/arm/ti: ti_motg.c ti_otg.c ti_otgreg.h Log Message: Add USB support. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/ti/am3_prcm.c cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_motg.c \ src/sys/arch/arm/ti/ti_otg.c src/sys/arch/arm/ti/ti_otgreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/am3_prcm.c diff -u src/sys/arch/arm/ti/am3_prcm.c:1.2 src/sys/arch/arm/ti/am3_prcm.c:1.3 --- src/sys/arch/arm/ti/am3_prcm.c:1.2 Sun Oct 27 12:14:51 2019 +++ src/sys/arch/arm/ti/am3_prcm.c Sun Oct 27 16:31:26 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: am3_prcm.c,v 1.2 2019/10/27 12:14:51 jmcneill Exp $ */ +/* $NetBSD: am3_prcm.c,v 1.3 2019/10/27 16:31:26 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.2 2019/10/27 12:14:51 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.3 2019/10/27 16:31:26 jmcneill Exp $"); #include #include @@ -113,6 +113,8 @@ static struct ti_prcm_clk am3_prcm_clks[ AM3_PRCM_HWMOD_PER("tptc0", 0x24, "PERIPH_CLK"), AM3_PRCM_HWMOD_PER("tptc1", 0xfc, "PERIPH_CLK"), AM3_PRCM_HWMOD_PER("tptc2", 0x100, "PERIPH_CLK"), + + AM3_PRCM_HWMOD_PER("usb_otg_hs", 0x1c, "PERIPH_CLK"), }; static int Index: src/sys/arch/arm/ti/files.ti diff -u src/sys/arch/arm/ti/files.ti:1.9 src/sys/arch/arm/ti/files.ti:1.10 --- src/sys/arch/arm/ti/files.ti:1.9 Sun Oct 27 15:43:46 2019 +++ src/sys/arch/arm/ti/files.ti Sun Oct 27 16:31:26 2019 @@ -1,4 +1,4 @@ -# $NetBSD: files.ti,v 1.9 2019/10/27 15:43:46 jmcneill Exp $ +# $NetBSD: files.ti,v 1.10 2019/10/27 16:31:26 jmcneill Exp $ # file arch/arm/ti/ti_platform.c soc_ti @@ -48,6 +48,14 @@ file arch/arm/ti/ti_tptc.c ti_tptc attach sdhc at fdt with ti_sdhc: ti_edma, ti_prcm file arch/arm/ti/ti_sdhc.c ti_sdhc +# USB +device tiotg { } : fdt +attach tiotg at fdt with ti_otg +file arch/arm/ti/ti_otg.c ti_otg + +attach motg at fdt with ti_motg +file arch/arm/ti/ti_motg.c ti_motg + # SOC parameters defflag opt_soc.h SOC_TI defflag opt_soc.h SOC_TI_AM335X: SOC_TI Added files: Index: src/sys/arch/arm/ti/ti_motg.c diff -u /dev/null src/sys/arch/arm/ti/ti_motg.c:1.1 --- /dev/null Sun Oct 27 16:31:26 2019 +++ src/sys/arch/arm/ti/ti_motg.c Sun Oct 27 16:31:26 2019 @@ -0,0 +1,237 @@ +/* $NetBSD: ti_motg.c,v 1.1 2019/10/27 16:31:26 jmcneill Exp $ */ +/* + * Copyright (c) 2013 Manuel Bouyer. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__KERNEL_RCSID(0, "$NetBSD: ti_motg.c,v 1.1 2019/10/27 16:31:26 jmcneill Exp $"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +#ifdef USB_DEBUG +#ifndef MOTG_DEBUG +#define motgdebug 0 +#else +extern int motgdebug; +#endif /* MOTG_DEBUG */ +#endif /* USB_DEBUG */ + +#define DPRINTF(FMT,A,B,C,D) USBHIST_LOGN(motgdebug,1,FMT,A,B,C,D) +#define MOTGHIST_FUNC() USBHIST_FUNC() +#define MOTGHIST_CALLED(name) USBHIST_CALLED(motgdebug) + +static const char * compatible [] = { + "ti,musb-am33xx", + NULL +}; + +/* + * motg device attachement and driver, + * for the per-port part of the controller: TI-specific part, phy and + * MI Mentor OTG. + */ + +struct ti_motg_softc { + struct motg_softc sc_motg; + bus_space_tag_t sc_ctrliot; + bus_space_handle_t
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 16:31:26 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c files.ti Added Files: src/sys/arch/arm/ti: ti_motg.c ti_otg.c ti_otgreg.h Log Message: Add USB support. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/ti/am3_prcm.c cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_motg.c \ src/sys/arch/arm/ti/ti_otg.c src/sys/arch/arm/ti/ti_otgreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 15:43:46 UTC 2019 Modified Files: src/sys/arch/arm/ti: files.ti Added Files: src/sys/arch/arm/ti: ti_sdhc.c ti_sdhcreg.h Log Message: Add MMCHS support. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_sdhc.c \ src/sys/arch/arm/ti/ti_sdhcreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 15:43:46 UTC 2019 Modified Files: src/sys/arch/arm/ti: files.ti Added Files: src/sys/arch/arm/ti: ti_sdhc.c ti_sdhcreg.h Log Message: Add MMCHS support. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_sdhc.c \ src/sys/arch/arm/ti/ti_sdhcreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/files.ti diff -u src/sys/arch/arm/ti/files.ti:1.8 src/sys/arch/arm/ti/files.ti:1.9 --- src/sys/arch/arm/ti/files.ti:1.8 Sun Oct 27 12:14:51 2019 +++ src/sys/arch/arm/ti/files.ti Sun Oct 27 15:43:46 2019 @@ -1,4 +1,4 @@ -# $NetBSD: files.ti,v 1.8 2019/10/27 12:14:51 jmcneill Exp $ +# $NetBSD: files.ti,v 1.9 2019/10/27 15:43:46 jmcneill Exp $ # file arch/arm/ti/ti_platform.c soc_ti @@ -44,6 +44,10 @@ device titptc attach titptc at fdt with ti_tptc file arch/arm/ti/ti_tptc.c ti_tptc +# MMCHS +attach sdhc at fdt with ti_sdhc: ti_edma, ti_prcm +file arch/arm/ti/ti_sdhc.c ti_sdhc + # SOC parameters defflag opt_soc.h SOC_TI defflag opt_soc.h SOC_TI_AM335X: SOC_TI Added files: Index: src/sys/arch/arm/ti/ti_sdhc.c diff -u /dev/null src/sys/arch/arm/ti/ti_sdhc.c:1.1 --- /dev/null Sun Oct 27 15:43:46 2019 +++ src/sys/arch/arm/ti/ti_sdhc.c Sun Oct 27 15:43:46 2019 @@ -0,0 +1,672 @@ +/* $NetBSD: ti_sdhc.c,v 1.1 2019/10/27 15:43:46 jmcneill Exp $ */ +/*- + * Copyright (c) 2011 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Matt Thomas of 3am Software Foundry. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__KERNEL_RCSID(0, "$NetBSD: ti_sdhc.c,v 1.1 2019/10/27 15:43:46 jmcneill Exp $"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include + +#define EDMA_MAX_PARAMS 32 + +#ifdef TISDHC_DEBUG +int tisdhcdebug = 1; +#define DPRINTF(n,s)do { if ((n) <= tisdhcdebug) device_printf s; } while (0) +#else +#define DPRINTF(n,s)do {} while (0) +#endif + + +#define CLKD(kz) (sc->sc.sc_clkbase / (kz)) + +#define SDHC_READ(sc, reg) \ + bus_space_read_4((sc)->sc_bst, (sc)->sc_sdhc_bsh, (reg)) +#define SDHC_WRITE(sc, reg, val) \ + bus_space_write_4((sc)->sc_bst, (sc)->sc_sdhc_bsh, (reg), (val)) + +struct ti_sdhc_config { + bus_size_t regoff; + uint32_t flags; +}; + +static const struct ti_sdhc_config omap2_hsmmc_config = { +}; + +static const struct ti_sdhc_config omap3_pre_es3_hsmmc_config = { + .flags = SDHC_FLAG_SINGLE_ONLY +}; + +static const struct ti_sdhc_config omap4_hsmmc_config = { + .regoff = 0x100 +}; + +static const struct of_compat_data compat_data[] = { + { "ti,omap2-hsmmc", (uintptr_t)_hsmmc_config }, + { "ti,omap3-hsmmc", (uintptr_t)_hsmmc_config }, + { "ti,omap3-pre-es3-hsmmc", (uintptr_t)_pre_es3_hsmmc_config }, + { "ti,omap4-hsmmc", (uintptr_t)_hsmmc_config }, + { NULL } +}; + +enum { + EDMA_CHAN_TX, + EDMA_CHAN_RX, + EDMA_NCHAN +}; + +struct ti_sdhc_softc { + struct sdhc_softc sc; + int sc_phandle; + bus_addr_t sc_addr; + bus_space_tag_t sc_bst; + bus_space_handle_t sc_bsh; + bus_space_handle_t sc_hl_bsh; + bus_space_handle_t sc_sdhc_bsh; + struct sdhc_host *sc_hosts[1]; + void *sc_ih; /* interrupt vectoring */ + + int sc_edma_chan[EDMA_NCHAN]; + struct edma_channel *sc_edma_tx; + struct edma_channel *sc_edma_rx; + uint16_t sc_edma_param_tx[EDMA_MAX_PARAMS]; + uint16_t
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 12:14:51 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c files.ti ti_com.c ti_prcm.c ti_prcm.h Added Files: src/sys/arch/arm/ti: ti_edma.c ti_edma.h ti_tptc.c Log Message: Add EDMA TPCC and TPTC drivers. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/am3_prcm.c \ src/sys/arch/arm/ti/ti_prcm.c src/sys/arch/arm/ti/ti_prcm.h cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/ti/ti_com.c cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_edma.c \ src/sys/arch/arm/ti/ti_edma.h src/sys/arch/arm/ti/ti_tptc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/am3_prcm.c diff -u src/sys/arch/arm/ti/am3_prcm.c:1.1 src/sys/arch/arm/ti/am3_prcm.c:1.2 --- src/sys/arch/arm/ti/am3_prcm.c:1.1 Thu Oct 26 23:28:15 2017 +++ src/sys/arch/arm/ti/am3_prcm.c Sun Oct 27 12:14:51 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: am3_prcm.c,v 1.1 2017/10/26 23:28:15 jmcneill Exp $ */ +/* $NetBSD: am3_prcm.c,v 1.2 2019/10/27 12:14:51 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.1 2017/10/26 23:28:15 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: am3_prcm.c,v 1.2 2019/10/27 12:14:51 jmcneill Exp $"); #include #include @@ -108,6 +108,11 @@ static struct ti_prcm_clk am3_prcm_clks[ AM3_PRCM_HWMOD_PER("mmc0", 0x3c, "MMC_CLK"), AM3_PRCM_HWMOD_PER("mmc1", 0xf4, "MMC_CLK"), AM3_PRCM_HWMOD_PER("mmc2", 0xf8, "MMC_CLK"), + + AM3_PRCM_HWMOD_PER("tpcc", 0xbc, "PERIPH_CLK"), + AM3_PRCM_HWMOD_PER("tptc0", 0x24, "PERIPH_CLK"), + AM3_PRCM_HWMOD_PER("tptc1", 0xfc, "PERIPH_CLK"), + AM3_PRCM_HWMOD_PER("tptc2", 0x100, "PERIPH_CLK"), }; static int Index: src/sys/arch/arm/ti/ti_prcm.c diff -u src/sys/arch/arm/ti/ti_prcm.c:1.1 src/sys/arch/arm/ti/ti_prcm.c:1.2 --- src/sys/arch/arm/ti/ti_prcm.c:1.1 Thu Oct 26 23:28:15 2017 +++ src/sys/arch/arm/ti/ti_prcm.c Sun Oct 27 12:14:51 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_prcm.c,v 1.1 2017/10/26 23:28:15 jmcneill Exp $ */ +/* $NetBSD: ti_prcm.c,v 1.2 2019/10/27 12:14:51 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ti_prcm.c,v 1.1 2017/10/26 23:28:15 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_prcm.c,v 1.2 2019/10/27 12:14:51 jmcneill Exp $"); #include #include @@ -255,3 +255,15 @@ ti_prcm_get_hwmod(const int phandle, u_i return NULL; } + +int +ti_prcm_enable_hwmod(const int phandle, u_int index) +{ + struct clk *clk; + + clk = ti_prcm_get_hwmod(phandle, index); + if (clk == NULL) + return ENOENT; + + return clk_enable(clk); +} Index: src/sys/arch/arm/ti/ti_prcm.h diff -u src/sys/arch/arm/ti/ti_prcm.h:1.1 src/sys/arch/arm/ti/ti_prcm.h:1.2 --- src/sys/arch/arm/ti/ti_prcm.h:1.1 Thu Oct 26 23:28:15 2017 +++ src/sys/arch/arm/ti/ti_prcm.h Sun Oct 27 12:14:51 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_prcm.h,v 1.1 2017/10/26 23:28:15 jmcneill Exp $ */ +/* $NetBSD: ti_prcm.h,v 1.2 2019/10/27 12:14:51 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -165,5 +165,6 @@ struct ti_prcm_softc { #endif /* !TI_PRCM_PRIVATE */ struct clk * ti_prcm_get_hwmod(const int, u_int); +int ti_prcm_enable_hwmod(const int, u_int); #endif /* !_ARM_TI_PRCM_H */ Index: src/sys/arch/arm/ti/files.ti diff -u src/sys/arch/arm/ti/files.ti:1.7 src/sys/arch/arm/ti/files.ti:1.8 --- src/sys/arch/arm/ti/files.ti:1.7 Sun Oct 27 11:33:56 2019 +++ src/sys/arch/arm/ti/files.ti Sun Oct 27 12:14:51 2019 @@ -1,4 +1,4 @@ -# $NetBSD: files.ti,v 1.7 2019/10/27 11:33:56 jmcneill Exp $ +# $NetBSD: files.ti,v 1.8 2019/10/27 12:14:51 jmcneill Exp $ # file arch/arm/ti/ti_platform.c soc_ti @@ -36,6 +36,14 @@ device cpsw: ether, ifnet, arp, mii, mi attach cpsw at fdt filearch/arm/ti/if_cpsw.c cpsw +# EDMA +device tiedma +attach tiedma at fdt with ti_edma +file arch/arm/ti/ti_edma.c ti_edma +device titptc +attach titptc at fdt with ti_tptc +file arch/arm/ti/ti_tptc.c ti_tptc + # SOC parameters defflag opt_soc.h SOC_TI defflag opt_soc.h SOC_TI_AM335X: SOC_TI Index: src/sys/arch/arm/ti/ti_com.c diff -u src/sys/arch/arm/ti/ti_com.c:1.6 src/sys/arch/arm/ti/ti_com.c:1.7 --- src/sys/arch/arm/ti/ti_com.c:1.6 Sun Oct 27 11:33:56 2019 +++ src/sys/arch/arm/ti/ti_com.c Sun Oct 27 12:14:51 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_com.c,v 1.6 2019/10/27 11:33:56 jmcneill Exp $ */ +/* $NetBSD: ti_com.c,v 1.7 2019/10/27 12:14:51 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: ti_com.c,v 1.6 2019/10/27 11:33:56 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: ti_com.c,v 1.7 2019/10/27 12:14:51 jmcneill Exp $"); #include #include @@ -79,7 +79,6 @@ ti_com_attach(device_t parent, device_t
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 12:14:51 UTC 2019 Modified Files: src/sys/arch/arm/ti: am3_prcm.c files.ti ti_com.c ti_prcm.c ti_prcm.h Added Files: src/sys/arch/arm/ti: ti_edma.c ti_edma.h ti_tptc.c Log Message: Add EDMA TPCC and TPTC drivers. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/ti/am3_prcm.c \ src/sys/arch/arm/ti/ti_prcm.c src/sys/arch/arm/ti/ti_prcm.h cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/ti/ti_com.c cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_edma.c \ src/sys/arch/arm/ti/ti_edma.h src/sys/arch/arm/ti/ti_tptc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 11:33:56 UTC 2019 Modified Files: src/sys/arch/arm/ti: files.ti ti_com.c Log Message: Make com work again To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/ti/ti_com.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/files.ti diff -u src/sys/arch/arm/ti/files.ti:1.6 src/sys/arch/arm/ti/files.ti:1.7 --- src/sys/arch/arm/ti/files.ti:1.6 Sat Oct 26 15:58:55 2019 +++ src/sys/arch/arm/ti/files.ti Sun Oct 27 11:33:56 2019 @@ -1,4 +1,4 @@ -# $NetBSD: files.ti,v 1.6 2019/10/26 15:58:55 jmcneill Exp $ +# $NetBSD: files.ti,v 1.7 2019/10/27 11:33:56 jmcneill Exp $ # file arch/arm/ti/ti_platform.c soc_ti @@ -23,10 +23,8 @@ attach am3prcm at fdt with am3_prcm file arch/arm/ti/am3_prcm.c am3_prcm # UART -ifdef soc_ti attach com at fdt with ti_com: ti_prcm file arch/arm/ti/ti_com.c ti_com needs-flag -endif # Timer device omaptimer Index: src/sys/arch/arm/ti/ti_com.c diff -u src/sys/arch/arm/ti/ti_com.c:1.5 src/sys/arch/arm/ti/ti_com.c:1.6 --- src/sys/arch/arm/ti/ti_com.c:1.5 Fri Oct 18 06:58:06 2019 +++ src/sys/arch/arm/ti/ti_com.c Sun Oct 27 11:33:56 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ti_com.c,v 1.5 2019/10/18 06:58:06 skrll Exp $ */ +/* $NetBSD: ti_com.c,v 1.6 2019/10/27 11:33:56 jmcneill Exp $ */ /*- * Copyright (c) 2017 Jared McNeill @@ -28,7 +28,7 @@ #include -__KERNEL_RCSID(1, "$NetBSD: ti_com.c,v 1.5 2019/10/18 06:58:06 skrll Exp $"); +__KERNEL_RCSID(1, "$NetBSD: ti_com.c,v 1.6 2019/10/27 11:33:56 jmcneill Exp $"); #include #include @@ -106,7 +106,7 @@ ti_com_attach(device_t parent, device_t return; } - hwmod = ti_prcm_get_hwmod(phandle, 0); + hwmod = ti_prcm_get_hwmod(OF_parent(phandle), 0); KASSERT(hwmod != NULL); if (clk_enable(hwmod) != 0) { aprint_error(": couldn't enable module\n");
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sun Oct 27 11:33:56 UTC 2019 Modified Files: src/sys/arch/arm/ti: files.ti ti_com.c Log Message: Make com work again To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/ti/ti_com.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sat Oct 26 15:58:55 UTC 2019 Modified Files: src/sys/arch/arm/ti: files.ti Added Files: src/sys/arch/arm/ti: ti_sysc.c Log Message: Add bus driver for TI sysc interconncet. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_sysc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/files.ti diff -u src/sys/arch/arm/ti/files.ti:1.5 src/sys/arch/arm/ti/files.ti:1.6 --- src/sys/arch/arm/ti/files.ti:1.5 Sat Oct 26 14:57:27 2019 +++ src/sys/arch/arm/ti/files.ti Sat Oct 26 15:58:55 2019 @@ -1,4 +1,4 @@ -# $NetBSD: files.ti,v 1.5 2019/10/26 14:57:27 jmcneill Exp $ +# $NetBSD: files.ti,v 1.6 2019/10/26 15:58:55 jmcneill Exp $ # file arch/arm/ti/ti_platform.c soc_ti @@ -6,7 +6,12 @@ file arch/arm/ti/ti_platform.c soc_ti # Interrupt controller device omapintc: pic, pic_splfuncs attach omapintc at fdt -file arch/arm/ti/ti_omapintc.c omapintc +file arch/arm/ti/ti_omapintc.c omapintc + +# sysc interconnect +device tisysc { } : fdt, ti_prcm +attach tisysc at fdt with ti_sysc +file arch/arm/ti/ti_sysc.c ti_sysc # PRCM define ti_prcm Added files: Index: src/sys/arch/arm/ti/ti_sysc.c diff -u /dev/null src/sys/arch/arm/ti/ti_sysc.c:1.1 --- /dev/null Sat Oct 26 15:58:55 2019 +++ src/sys/arch/arm/ti/ti_sysc.c Sat Oct 26 15:58:55 2019 @@ -0,0 +1,72 @@ +/* $NetBSD: ti_sysc.c,v 1.1 2019/10/26 15:58:55 jmcneill Exp $ */ + +/*- + * Copyright (c) 2019 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__KERNEL_RCSID(0, "$NetBSD: ti_sysc.c,v 1.1 2019/10/26 15:58:55 jmcneill Exp $"); + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +static int ti_sysc_match(device_t, cfdata_t, void *); +static void ti_sysc_attach(device_t, device_t, void *); + +CFATTACH_DECL_NEW(ti_sysc, 0, ti_sysc_match, ti_sysc_attach, NULL, NULL); + +static const char * compatible[] = { + "ti,sysc", + NULL +}; + +static int +ti_sysc_match(device_t parent, cfdata_t cf, void *aux) +{ + struct fdt_attach_args * const faa = aux; + + return of_match_compatible(faa->faa_phandle, compatible); +} + +static void +ti_sysc_attach(device_t parent, device_t self, void *aux) +{ + struct fdt_attach_args * const faa = aux; + const int phandle = faa->faa_phandle; + + aprint_naive("\n"); + aprint_normal("\n"); + + fdt_add_bus(self, phandle, faa); +}
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sat Oct 26 15:58:15 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_platform.c Log Message: Fix am33xx_platform_early_putchar for pre-MMU output To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/ti/ti_platform.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/arch/arm/ti/ti_platform.c diff -u src/sys/arch/arm/ti/ti_platform.c:1.6 src/sys/arch/arm/ti/ti_platform.c:1.7 --- src/sys/arch/arm/ti/ti_platform.c:1.6 Tue Oct 30 16:41:52 2018 +++ src/sys/arch/arm/ti/ti_platform.c Sat Oct 26 15:58:15 2019 @@ -1,9 +1,9 @@ -/* $NetBSD: ti_platform.c,v 1.6 2018/10/30 16:41:52 skrll Exp $ */ +/* $NetBSD: ti_platform.c,v 1.7 2019/10/26 15:58:15 jmcneill Exp $ */ #include "opt_console.h" #include -__KERNEL_RCSID(0, "$NetBSD: ti_platform.c,v 1.6 2018/10/30 16:41:52 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ti_platform.c,v 1.7 2019/10/26 15:58:15 jmcneill Exp $"); #include @@ -25,7 +25,9 @@ am33xx_platform_early_putchar(char c) { #ifdef CONSADDR #define CONSADDR_VA ((CONSADDR - 0x44c0) + 0xe4c0) - volatile uint32_t *uartaddr = (volatile uint32_t *)CONSADDR_VA; + volatile uint32_t *uartaddr = cpu_earlydevice_va_p() ? + (volatile uint32_t *)CONSADDR_VA : + (volatile uint32_t *)CONSADDR; while ((le32toh(uartaddr[com_lsr]) & LSR_TXRDY) == 0) ;
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sat Oct 26 15:58:55 UTC 2019 Modified Files: src/sys/arch/arm/ti: files.ti Added Files: src/sys/arch/arm/ti: ti_sysc.c Log Message: Add bus driver for TI sysc interconncet. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/ti/files.ti cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/ti/ti_sysc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: jmcneill Date: Sat Oct 26 15:58:15 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_platform.c Log Message: Fix am33xx_platform_early_putchar for pre-MMU output To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/ti/ti_platform.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/arch/arm/ti
Module Name:src Committed By: skrll Date: Fri Oct 18 06:58:06 UTC 2019 Modified Files: src/sys/arch/arm/ti: ti_com.c Log Message: Use PRIxBUSADDR To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/ti/ti_com.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.