socsvn commit: r238946 - in
soc2012/aleek/beaglexm-armv6/sys/arm/ti: . am37x
aleek at FreeBSD.org
aleek at FreeBSD.org
Wed Jul 4 12:10:28 UTC 2012
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);
More information about the svn-soc-all
mailing list