From owner-svn-src-projects@FreeBSD.ORG Sun Mar 17 00:11:45 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 69F69D01; Sun, 17 Mar 2013 00:11:45 +0000 (UTC) (envelope-from ray@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 4A6F2977; Sun, 17 Mar 2013 00:11:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r2H0Bing064224; Sun, 17 Mar 2013 00:11:44 GMT (envelope-from ray@svn.freebsd.org) Received: (from ray@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r2H0BiTx064223; Sun, 17 Mar 2013 00:11:44 GMT (envelope-from ray@svn.freebsd.org) Message-Id: <201303170011.r2H0BiTx064223@svn.freebsd.org> From: Aleksandr Rybalko Date: Sun, 17 Mar 2013 00:11:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r248399 - projects/efika_mx/sys/arm/freescale/imx X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Mar 2013 00:11:45 -0000 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 #include +#include #include #include #include #include -#include -#include #include #include #include #include +#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