Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 Mar 2013 00:11:44 +0000 (UTC)
From:      Aleksandr Rybalko <ray@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r248399 - projects/efika_mx/sys/arm/freescale/imx
Message-ID:  <201303170011.r2H0BiTx064223@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ray
Date: Sun Mar 17 00:11:44 2013
New Revision: 248399
URL: http://svnweb.freebsd.org/changeset/base/248399

Log:
  Update imx_gpt to use new sbintime_t.
  
  Sponsored by:	The FreeBSD Foundation

Modified:
  projects/efika_mx/sys/arm/freescale/imx/imx_gpt.c

Modified: projects/efika_mx/sys/arm/freescale/imx/imx_gpt.c
==============================================================================
--- projects/efika_mx/sys/arm/freescale/imx/imx_gpt.c	Sat Mar 16 23:46:50 2013	(r248398)
+++ projects/efika_mx/sys/arm/freescale/imx/imx_gpt.c	Sun Mar 17 00:11:44 2013	(r248399)
@@ -45,19 +45,20 @@ __FBSDID("$FreeBSD$");
 #include <machine/frame.h>
 #include <machine/intr.h>
 
+#include <machine/fdt.h>
 #include <dev/fdt/fdt_common.h>
 #include <dev/ofw/openfirm.h>
 #include <dev/ofw/ofw_bus.h>
 #include <dev/ofw/ofw_bus_subr.h>
 
-#include <machine/bus.h>
-#include <machine/fdt.h>
 #include <arm/freescale/imx/imx_gptvar.h>
 #include <arm/freescale/imx/imx_gptreg.h>
 
 #include <sys/kdb.h>
 #include <arm/freescale/imx/imx51_ccmvar.h>
 
+#define	MIN_PERIOD		100LLU
+
 #define	WRITE4(_sc, _r, _v)						\
 	    bus_space_write_4((_sc)->sc_iot, (_sc)->sc_ioh, (_r), (_v))
 #define	READ4(_sc, _r)							\
@@ -68,8 +69,8 @@ __FBSDID("$FreeBSD$");
 	    WRITE4((_sc), (_r), READ4((_sc), (_r)) & ~(_m))
 
 static u_int	imx_gpt_get_timecount(struct timecounter *);
-static int	imx_gpt_timer_start(struct eventtimer *,
-    struct bintime *, struct bintime *);
+static int	imx_gpt_timer_start(struct eventtimer *, sbintime_t,
+    sbintime_t);
 static int	imx_gpt_timer_stop(struct eventtimer *);
 
 static int imx_gpt_intr(void *);
@@ -174,12 +175,8 @@ imx_gpt_attach(device_t dev)
 	sc->et.et_flags = ET_FLAGS_ONESHOT | ET_FLAGS_PERIODIC;
 	sc->et.et_quality = 1000;
 	sc->et.et_frequency = sc->clkfreq;
-	sc->et.et_min_period.sec = 0;
-	sc->et.et_min_period.frac =
-	    ((0x00000002LLU << 32) / sc->et.et_frequency) << 32;
-	sc->et.et_max_period.sec = 0xfffffff0U / sc->et.et_frequency;
-	sc->et.et_max_period.frac =
-	    ((0xfffffffeLLU << 32) / sc->et.et_frequency) << 32;
+	sc->et.et_min_period = (MIN_PERIOD << 32) / sc->et.et_frequency;
+	sc->et.et_max_period = (0xfffffffeLLU << 32) / sc->et.et_frequency;
 	sc->et.et_start = imx_gpt_timer_start;
 	sc->et.et_stop = imx_gpt_timer_stop;
 	sc->et.et_priv = sc;
@@ -208,26 +205,21 @@ imx_gpt_attach(device_t dev)
 }
 
 static int
-imx_gpt_timer_start(struct eventtimer *et, struct bintime *first,
-    struct bintime *period)
+imx_gpt_timer_start(struct eventtimer *et, sbintime_t first, sbintime_t period)
 {
 	struct imx_gpt_softc *sc;
 	uint32_t ticks;
 
 	sc = (struct imx_gpt_softc *)et->et_priv;
 
-	if (period != NULL) {
-		sc->sc_period = (et->et_frequency * (first->frac >> 32)) >> 32;
-		sc->sc_period += et->et_frequency * first->sec;
+	if (period != 0) {
+		sc->sc_period = ((uint32_t)et->et_frequency * period) >> 32;
 		/* Set expected value */
 		WRITE4(sc, IMX_GPT_OCR2, READ4(sc, IMX_GPT_CNT) + sc->sc_period);
 		/* Enable compare register 2 Interrupt */
 		SET4(sc, IMX_GPT_IR, GPT_IR_OF2);
-	} else if (first != NULL) {
-
-		ticks = (et->et_frequency * (first->frac >> 32)) >> 32;
-		if (first->sec != 0)
-			ticks += et->et_frequency * first->sec;
+	} else if (first != 0) {
+		ticks = ((uint32_t)et->et_frequency * first) >> 32;
 
 		/*
 		 * TODO: setupt second compare reg with time which will save



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201303170011.r2H0BiTx064223>