Date: Wed, 04 Jul 2012 12:10:26 +0000 From: aleek@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r238946 - in soc2012/aleek/beaglexm-armv6/sys/arm/ti: . am37x Message-ID: <20120704121026.69274106566B@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: aleek Date: Wed Jul 4 12:10:20 2012 New Revision: 238946 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=238946 Log: fixed bug in gptimer driver. mmc is dectected Modified: soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_gptimer.h soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_gptimer_tc.c soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_mmchs.c Modified: soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_gptimer.h ============================================================================== --- soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_gptimer.h Wed Jul 4 10:17:02 2012 (r238945) +++ soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_gptimer.h Wed Jul 4 12:10:20 2012 (r238946) @@ -119,7 +119,10 @@ void (*callback)(void *data), void *data); int -omap3_gptimer_start(struct eventtimer *et, struct bintime *first, struct bintime *period); +omap3_gptimer_start_et(struct eventtimer *et, struct bintime *first, struct bintime *period); + +int +omap3_gptimer_start(struct omap3_gptimer_softc *sc); int omap3_gptimer_stop(struct eventtimer *et); Modified: soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_gptimer_tc.c ============================================================================== --- soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_gptimer_tc.c Wed Jul 4 10:17:02 2012 (r238945) +++ soc2012/aleek/beaglexm-armv6/sys/arm/ti/am37x/am37x_gptimer_tc.c Wed Jul 4 12:10:20 2012 (r238946) @@ -79,7 +79,7 @@ */ static struct timecounter omap3_gptimer_tc = { /* Name of the timecounter. */ - .tc_name = "OMAP3 Timecouter", + .tc_name = "OMAP3 Timecounter", /* * This function reads the counter. It is not required to * mask any unimplemented bits out, as long as they are @@ -464,7 +464,7 @@ * Returns 0 on success, otherwise an error code */ int -omap3_gptimer_start(struct eventtimer *et, struct bintime *first, struct bintime *period) +omap3_gptimer_start_et(struct eventtimer *et, struct bintime *first, struct bintime *period) { struct omap3_gptimer_softc *sc = (struct omap3_gptimer_softc *)et->et_priv; uint32_t val; @@ -486,6 +486,27 @@ return 0; } +int +omap3_gptimer_start(struct omap3_gptimer_softc *sc) +{ + uint32_t val; + + /* Sanity checks */ + if (sc == NULL) + return (ENOMEM); + if (!(sc->flags & OMAP3_GPTIMER_ACTIVATED_FLAG)) + return (EINVAL); + + //OMAP3_GPTIMER_LOCK(sc); + + val = gptimer_read_4(OMAP3_GPT_TCLR); + val |= TCLR_ST; + gptimer_write_4(OMAP3_GPT_TCLR, val); + + //OMAP3_GPTIMER_UNLOCK(sc); + + return 0; +} /** * omap3_gptimer_stop - stops a one-shot or periodic timer * @n: the number of the timer (first timer is number 1) @@ -772,12 +793,14 @@ /* setup GPTIMER10 for system ticks, and GPTIMER11 for general purpose counter */ oldirqstate = disable_interrupts(I32_bit); - /* Setup another timer to be the timecounter */ + /* Setup timer to be the timecounter */ if (omap3_gptimer_activate(sc, OMAP3_GPTIMER_PERIODIC_FLAG, 0, NULL, NULL)) { device_printf(dev, "Error: failed to activate system tick timer\n"); - }/* else if (omap3_gptimer_start(sc)) { + } + else if (omap3_gptimer_start(sc)) + { device_printf(dev, "Error: failed to start system tick timer\n"); - }*/ + } /* Save the system clock speed */ omap3_gptimer_get_freq(sc, &timer_freq); @@ -859,8 +882,8 @@ panic("Error: failed to start system tick timer\n"); /* Lastly start the tick timer */ - /*if (omap3_gptimer_start(sc)) - panic("Error: failed to start system tick timer\n");*/ + if (omap3_gptimer_start(sc)) + panic("Error: failed to start system tick timer\n"); omap3_gptimer_get_freq(sc, &timer_freq); device_printf(dev, "tick: timer_freq = %u\n", timer_freq); @@ -875,7 +898,7 @@ omap3_gptimer_et.et_min_period.frac = ((0x00000002LLU << 32) / omap3_gptimer_et.et_frequency) << 32; omap3_gptimer_et.et_max_period.sec = 0xfffffff0U / omap3_gptimer_et.et_frequency; omap3_gptimer_et.et_max_period.frac = ((0xfffffffeLLU << 32) / omap3_gptimer_et.et_frequency) << 32; - omap3_gptimer_et.et_start = omap3_gptimer_start; + omap3_gptimer_et.et_start = omap3_gptimer_start_et; omap3_gptimer_et.et_stop = omap3_gptimer_stop; omap3_gptimer_et.et_priv = &omap3_gptimer_et; et_register( &omap3_gptimer_et ); Modified: soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_mmchs.c ============================================================================== --- soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_mmchs.c Wed Jul 4 10:17:02 2012 (r238945) +++ soc2012/aleek/beaglexm-armv6/sys/arm/ti/ti_mmchs.c Wed Jul 4 12:10:20 2012 (r238946) @@ -908,7 +908,7 @@ /* Loop waiting for the command to finish */ timeout = hz; do { - pause("MMCINIT", 1); + pause("MMCINIT1", 1); if (timeout-- == 0) { device_printf(sc->sc_dev, "Error: first stream init timed out\n"); break; @@ -924,7 +924,7 @@ /* Loop waiting for the second command to finish */ timeout = hz; do { - pause("MMCINIT", 1); + pause("MMCINIT2", 1); if (timeout-- == 0) { device_printf(sc->sc_dev, "Error: second stream init timed out\n"); break; @@ -1431,7 +1431,6 @@ static int ti_mmchs_init_dma_channels(struct ti_mmchs_softc *sc) { - printf( "%s:%d\n", __FILE__, __LINE__ ); #ifdef SOC_TI_AM335X switch (sc->device_id) { case 0: @@ -1455,13 +1454,11 @@ int err; uint32_t rev; - printf( "%s:%d\n", __FILE__, __LINE__ ); /* Get the current chip revision */ rev = ti_revision(); if ((OMAP_REV_DEVICE(rev) != OMAP4430_DEV) && (sc->device_id > 3)) return(EINVAL); - printf( "%s:%d\n", __FILE__, __LINE__ ); /* Get the DMA MMC triggers */ switch (sc->device_id) { case 0: @@ -1490,13 +1487,11 @@ return(EINVAL); } - printf( "%s:%d\n", __FILE__, __LINE__ ); /* Activate a RX channel from the OMAP DMA driver */ err = ti_sdma_activate_channel(&sc->sc_dmach_rd, ti_mmchs_dma_intr, sc); if (err != 0) return(err); - printf( "%s:%d\n", __FILE__, __LINE__ ); /* Setup the RX channel for MMC data transfers */ ti_sdma_set_xfer_burst(sc->sc_dmach_rd, TI_SDMA_BURST_NONE, TI_SDMA_BURST_64); @@ -1506,13 +1501,11 @@ ti_sdma_set_addr_mode(sc->sc_dmach_rd, TI_SDMA_ADDR_CONSTANT, TI_SDMA_ADDR_POST_INCREMENT); - printf( "%s:%d\n", __FILE__, __LINE__ ); /* Activate and configure the TX DMA channel */ err = ti_sdma_activate_channel(&sc->sc_dmach_wr, ti_mmchs_dma_intr, sc); if (err != 0) return(err); - printf( "%s:%d\n", __FILE__, __LINE__ ); /* Setup the TX channel for MMC data transfers */ ti_sdma_set_xfer_burst(sc->sc_dmach_wr, TI_SDMA_BURST_64, TI_SDMA_BURST_NONE);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120704121026.69274106566B>