Update to use 64-bit timer when available

This commit is contained in:
Gregory Nutt 2016-01-21 11:53:58 -06:00
parent b6dd44bdcd
commit 5ebd84c890
8 changed files with 105 additions and 104 deletions

View File

@ -212,8 +212,8 @@ struct efm32_trace_s
uint32_t i2c_reg_state; /* I2C register I2Cx_STATES */
uint32_t i2c_reg_if; /* I2C register I2Cx_IF */
uint32_t count; /* Interrupt count when status change */
int dcnt; /* Interrupt count when status change */
uint32_t time; /* First of event or first status */
systime_t time; /* First of event or first status */
int dcnt; /* Interrupt count when status change */
};
/* I2C Device hardware configuration */
@ -260,7 +260,7 @@ struct efm32_i2c_priv_s
#ifdef CONFIG_I2C_TRACE
int tndx; /* Trace array index */
uint32_t start_time; /* Time when the trace was started */
systime_t start_time; /* Time when the trace was started */
/* The actual trace data */
@ -650,9 +650,9 @@ static inline int efm32_i2c_sem_waitdone(FAR struct efm32_i2c_priv_s *priv)
#else
static inline int efm32_i2c_sem_waitdone(FAR struct efm32_i2c_priv_s *priv)
{
uint32_t timeout;
uint32_t start;
uint32_t elapsed;
systime_t timeout;
systime_t start;
systime_t elapsed;
/* Get the timeout value */
@ -759,11 +759,11 @@ static void efm32_i2c_traceclear(FAR struct efm32_i2c_priv_s *priv)
{
struct efm32_trace_s *trace = &priv->trace[priv->tndx];
trace->i2c_state = I2CSTATE_NONE; /* I2C current state of state machine */
trace->i2c_reg_if = 0; /* I2C I2Cx_IF register */
trace->i2c_reg_state = 0; /* I2C I2Cx_STATES register */
trace->count = 0; /* Interrupt count when status change */
trace->time = 0; /* Time of first status or event */
trace->i2c_state = I2CSTATE_NONE; /* I2C current state of state machine */
trace->i2c_reg_if = 0; /* I2C I2Cx_IF register */
trace->i2c_reg_state = 0; /* I2C I2Cx_STATES register */
trace->count = 0; /* Interrupt count when status change */
trace->time = 0; /* Time of first status or event */
}
static void efm32_i2c_tracereset(FAR struct efm32_i2c_priv_s *priv)
@ -826,17 +826,18 @@ static void efm32_i2c_tracedump(FAR struct efm32_i2c_priv_s *priv)
struct efm32_trace_s *trace;
int i;
syslog(LOG_DEBUG, "Elapsed time: %d\n", clock_systimer() - priv->start_time);
syslog(LOG_DEBUG, "Elapsed time: %ld\n",
(long)(clock_systimer() - priv->start_time));
for (i = 0; i < priv->tndx; i++)
{
trace = &priv->trace[i];
syslog(LOG_DEBUG,
"%2d. I2Cx_STATE: %08x I2Cx_PENDING: %08x dcnt %3d COUNT: %3d "
"STATE: %s(%2d) TIME: %d\n",
"STATE: %s(%2d) TIME: %ld\n",
i + 1, trace->i2c_reg_state, trace->i2c_reg_if, trace->dcnt,
trace->count, efm32_i2c_state_str(trace->i2c_state),
trace->i2c_state, trace->time - priv->start_time);
trace->i2c_state, (long)(trace->time - priv->start_time));
}
}
#endif /* CONFIG_I2C_TRACE */

View File

@ -1,7 +1,7 @@
/****************************************************************************
* arch/arm/src/efm32/efm32_usbhost.c
*
* Copyright (C) 2014-2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2014-2016 Gregory Nutt. All rights reserved.
* Authors: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -1674,8 +1674,8 @@ static int efm32_ctrl_sendsetup(FAR struct efm32_usbhost_s *priv,
FAR const struct usb_ctrlreq_s *req)
{
FAR struct efm32_chan_s *chan;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
int ret;
/* Loop while the device reports NAK (and a timeout is not exceeded */
@ -1904,8 +1904,8 @@ static ssize_t efm32_in_transfer(FAR struct efm32_usbhost_s *priv, int chidx,
FAR uint8_t *buffer, size_t buflen)
{
FAR struct efm32_chan_s *chan;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
int ret;
/* Loop until the transfer completes (i.e., buflen is decremented to zero)
@ -2163,8 +2163,8 @@ static ssize_t efm32_out_transfer(FAR struct efm32_usbhost_s *priv, int chidx,
FAR uint8_t *buffer, size_t buflen)
{
FAR struct efm32_chan_s *chan;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
size_t xfrlen;
ssize_t xfrd;
int ret;
@ -4373,8 +4373,8 @@ static int efm32_ctrlin(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep0,
FAR struct efm32_usbhost_s *priv = (FAR struct efm32_usbhost_s *)drvr;
FAR struct efm32_ctrlinfo_s *ep0info = (FAR struct efm32_ctrlinfo_s *)ep0;
uint16_t buflen;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
int retries;
int ret;
@ -4458,8 +4458,8 @@ static int efm32_ctrlout(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep0,
FAR struct efm32_usbhost_s *priv = (FAR struct efm32_usbhost_s *)drvr;
FAR struct efm32_ctrlinfo_s *ep0info = (FAR struct efm32_ctrlinfo_s *)ep0;
uint16_t buflen;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
int retries;
int ret;

View File

@ -7,7 +7,7 @@
*
* With extensions, modifications by:
*
* Copyright (C) 2011-2014 Gregory Nutt. All rights reserved.
* Copyright (C) 2011-2014, 2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -226,7 +226,7 @@ struct stm32_trace_s
uint32_t count; /* Interrupt count when status change */
enum stm32_intstate_e event; /* Last event that occurred with this status */
uint32_t parm; /* Parameter associated with the event */
uint32_t time; /* First of event or first status */
systime_t time; /* First of event or first status */
};
/* I2C Device hardware configuration */
@ -267,7 +267,7 @@ struct stm32_i2c_priv_s
#ifdef CONFIG_I2C_TRACE
int tndx; /* Trace array index */
uint32_t start_time; /* Time when the trace was started */
systime_t start_time; /* Time when the trace was started */
/* The actual trace data */
@ -687,9 +687,9 @@ static inline int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv)
#else
static inline int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv)
{
uint32_t timeout;
uint32_t start;
uint32_t elapsed;
systime_t timeout;
systime_t start;
systime_t elapsed;
int ret;
/* Get the timeout value */
@ -725,8 +725,8 @@ static inline int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv)
while (priv->intstate != INTSTATE_DONE && elapsed < timeout);
i2cvdbg("intstate: %d elapsed: %d threshold: %d status: %08x\n",
priv->intstate, elapsed, timeout, priv->status);
i2cvdbg("intstate: %d elapsed: %ld threshold: %ld status: %08x\n",
priv->intstate, (long)elapsed, (long)timeout, priv->status);
/* Set the interrupt state back to IDLE */
@ -746,9 +746,9 @@ static inline int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv)
static inline void stm32_i2c_sem_waitstop(FAR struct stm32_i2c_priv_s *priv)
{
uint32_t start;
uint32_t elapsed;
uint32_t timeout;
systime_t start;
systime_t elapsed;
systime_t timeout;
uint32_t cr1;
uint32_t sr1;
@ -946,8 +946,8 @@ static void stm32_i2c_tracedump(FAR struct stm32_i2c_priv_s *priv)
struct stm32_trace_s *trace;
int i;
syslog(LOG_DEBUG, "Elapsed time: %d\n",
clock_systimer() - priv->start_time);
syslog(LOG_DEBUG, "Elapsed time: %ld\n",
(long)(clock_systimer() - priv->start_time));
for (i = 0; i <= priv->tndx; i++)
{

View File

@ -7,7 +7,7 @@
*
* With extensions, modifications by:
*
* Copyright (C) 2011-2014 Gregory Nutt. All rights reserved.
* Copyright (C) 2011-2014, 2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Copyright( C) 2014 Patrizio Simona. All rights reserved.
@ -253,22 +253,22 @@ struct stm32_trace_s
uint32_t count; /* Interrupt count when status change */
uint32_t event; /* Last event that occurred with this status */
uint32_t parm; /* Parameter associated with the event */
uint32_t time; /* First of event or first status */
systime_t time; /* First of event or first status */
};
/* I2C Device hardware configuration */
struct stm32_i2c_config_s
{
uint32_t base; /* I2C base address */
uint32_t clk_bit; /* Clock enable bit */
uint32_t reset_bit; /* Reset bit */
uint32_t scl_pin; /* GPIO configuration for SCL as SCL */
uint32_t sda_pin; /* GPIO configuration for SDA as SDA */
uint32_t base; /* I2C base address */
uint32_t clk_bit; /* Clock enable bit */
uint32_t reset_bit; /* Reset bit */
uint32_t scl_pin; /* GPIO configuration for SCL as SCL */
uint32_t sda_pin; /* GPIO configuration for SDA as SDA */
#ifndef CONFIG_I2C_POLLED
int (*isr)(int, void *); /* Interrupt handler */
uint32_t ev_irq; /* Event IRQ */
uint32_t er_irq; /* Error IRQ */
int (*isr)(int, void *); /* Interrupt handler */
uint32_t ev_irq; /* Event IRQ */
uint32_t er_irq; /* Error IRQ */
#endif
};
@ -296,7 +296,7 @@ struct stm32_i2c_priv_s
#ifdef CONFIG_I2C_TRACE
int tndx; /* Trace array index */
uint32_t start_time; /* Time when the trace was started */
systime_t start_time; /* Time when the trace was started */
/* The actual trace data */
@ -695,9 +695,9 @@ static int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv)
#else
static int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv)
{
uint32_t timeout;
uint32_t start;
uint32_t elapsed;
systime_t timeout;
systime_t start;
systime_t elapsed;
int ret;
/* Get the timeout value */
@ -733,8 +733,8 @@ static int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv)
while (priv->intstate != INTSTATE_DONE && elapsed < timeout);
i2cvdbg("intstate: %d elapsed: %d threshold: %d status: %08x\n",
priv->intstate, elapsed, timeout, priv->status);
i2cvdbg("intstate: %d elapsed: %ld threshold: %ld status: %08x\n",
priv->intstate, (long)elapsed, (long)timeout, priv->status);
/* Set the interrupt state back to IDLE */
@ -754,9 +754,9 @@ static int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv)
static inline void stm32_i2c_sem_waitstop(FAR struct stm32_i2c_priv_s *priv)
{
uint32_t start;
uint32_t elapsed;
uint32_t timeout;
systime_t start;
systime_t elapsed;
systime_t timeout;
uint32_t cr1;
uint32_t sr1;
@ -954,8 +954,8 @@ static void stm32_i2c_tracedump(FAR struct stm32_i2c_priv_s *priv)
struct stm32_trace_s *trace;
int i;
syslog(LOG_DEBUG, "Elapsed time: %d\n",
clock_systimer() - priv->start_time);
syslog(LOG_DEBUG, "Elapsed time: %ld\n",
(long)(clock_systimer() - priv->start_time));
for (i = 0; i <= priv->tndx; i++)
{

View File

@ -1,7 +1,7 @@
/****************************************************************************
* arch/arm/src/stm32/stm32_otgfshost.c
*
* Copyright (C) 2012-2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2012-2016 Gregory Nutt. All rights reserved.
* Authors: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -1596,8 +1596,8 @@ static int stm32_ctrl_sendsetup(FAR struct stm32_usbhost_s *priv,
FAR const struct usb_ctrlreq_s *req)
{
FAR struct stm32_chan_s *chan;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
int ret;
/* Loop while the device reports NAK (and a timeout is not exceeded */
@ -1826,8 +1826,8 @@ static ssize_t stm32_in_transfer(FAR struct stm32_usbhost_s *priv, int chidx,
FAR uint8_t *buffer, size_t buflen)
{
FAR struct stm32_chan_s *chan;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
int ret;
/* Loop until the transfer completes (i.e., buflen is decremented to zero)
@ -2085,8 +2085,8 @@ static ssize_t stm32_out_transfer(FAR struct stm32_usbhost_s *priv, int chidx,
FAR uint8_t *buffer, size_t buflen)
{
FAR struct stm32_chan_s *chan;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
size_t xfrlen;
ssize_t xfrd;
int ret;
@ -4305,8 +4305,8 @@ static int stm32_ctrlin(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep0,
FAR struct stm32_usbhost_s *priv = (FAR struct stm32_usbhost_s *)drvr;
FAR struct stm32_ctrlinfo_s *ep0info = (FAR struct stm32_ctrlinfo_s *)ep0;
uint16_t buflen;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
int retries;
int ret;
@ -4390,8 +4390,8 @@ static int stm32_ctrlout(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep0,
FAR struct stm32_usbhost_s *priv = (FAR struct stm32_usbhost_s *)drvr;
FAR struct stm32_ctrlinfo_s *ep0info = (FAR struct stm32_ctrlinfo_s *)ep0;
uint16_t buflen;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
int retries;
int ret;

View File

@ -1,7 +1,7 @@
/****************************************************************************
* arch/arm/src/stm32/stm32_otghshost.c
*
* Copyright (C) 2012-2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2012-2016 Gregory Nutt. All rights reserved.
* Authors: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@ -1596,8 +1596,8 @@ static int stm32_ctrl_sendsetup(FAR struct stm32_usbhost_s *priv,
FAR const struct usb_ctrlreq_s *req)
{
FAR struct stm32_chan_s *chan;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
int ret;
/* Loop while the device reports NAK (and a timeout is not exceeded */
@ -1826,8 +1826,8 @@ static ssize_t stm32_in_transfer(FAR struct stm32_usbhost_s *priv, int chidx,
FAR uint8_t *buffer, size_t buflen)
{
FAR struct stm32_chan_s *chan;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
int ret;
/* Loop until the transfer completes (i.e., buflen is decremented to zero)
@ -2085,8 +2085,8 @@ static ssize_t stm32_out_transfer(FAR struct stm32_usbhost_s *priv, int chidx,
FAR uint8_t *buffer, size_t buflen)
{
FAR struct stm32_chan_s *chan;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
size_t xfrlen;
ssize_t xfrd;
int ret;
@ -4305,8 +4305,8 @@ static int stm32_ctrlin(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep0,
FAR struct stm32_usbhost_s *priv = (FAR struct stm32_usbhost_s *)drvr;
FAR struct stm32_ctrlinfo_s *ep0info = (FAR struct stm32_ctrlinfo_s *)ep0;
uint16_t buflen;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
int retries;
int ret;
@ -4390,8 +4390,8 @@ static int stm32_ctrlout(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep0,
FAR struct stm32_usbhost_s *priv = (FAR struct stm32_usbhost_s *)drvr;
FAR struct stm32_ctrlinfo_s *ep0info = (FAR struct stm32_ctrlinfo_s *)ep0;
uint16_t buflen;
uint32_t start;
uint32_t elapsed;
systime_t start;
systime_t elapsed;
int retries;
int ret;

View File

@ -7,7 +7,7 @@
*
* With extensions and modifications for the F1, F2, and F4 by:
*
* Copyright (C) 2011-2013 Gregory Nutt. All rights reserved.
* Copyright (C) 2011-2013, 2016 Gregory Nutt. All rights reserved.
* Author: Gregroy Nutt <gnutt@nuttx.org>
*
* And this version for the STM32 F3 by
@ -218,7 +218,7 @@ struct stm32_trace_s
uint32_t count; /* Interrupt count when status change */
enum stm32_intstate_e event; /* Last event that occurred with this status */
uint32_t parm; /* Parameter associated with the event */
uint32_t time; /* First of event or first status */
systime_t time; /* First of event or first status */
};
/* I2C Device hardware configuration */
@ -260,7 +260,7 @@ struct stm32_i2c_priv_s
#ifdef CONFIG_I2C_TRACE
int tndx; /* Trace array index */
uint32_t start_time; /* Time when the trace was started */
systime_t start_time; /* Time when the trace was started */
/* The actual trace data */
@ -719,9 +719,9 @@ static inline int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv)
#else
static inline int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv)
{
uint32_t timeout;
uint32_t start;
uint32_t elapsed;
systime_t timeout;
systime_t start;
systime_t elapsed;
int ret;
/* Get the timeout value */
@ -757,8 +757,8 @@ static inline int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv)
while (priv->intstate != INTSTATE_DONE && elapsed < timeout);
i2cvdbg("intstate: %d elapsed: %d threshold: %d status: %08x\n",
priv->intstate, elapsed, timeout, priv->status);
i2cvdbg("intstate: %d elapsed: %ld threshold: %ld status: %08x\n",
priv->intstate, (long)elapsed, (long)timeout, priv->status);
/* Set the interrupt state back to IDLE */
@ -859,9 +859,9 @@ stm32_i2c_disable_autoend(FAR struct stm32_i2c_priv_s *priv)
static inline void stm32_i2c_sem_waitstop(FAR struct stm32_i2c_priv_s *priv)
{
uint32_t start;
uint32_t elapsed;
uint32_t timeout;
systime_t start;
systime_t elapsed;
systime_t timeout;
uint32_t cr;
uint32_t sr;
@ -1060,8 +1060,8 @@ static void stm32_i2c_tracedump(FAR struct stm32_i2c_priv_s *priv)
struct stm32_trace_s *trace;
int i;
syslog(LOG_DEBUG, "Elapsed time: %d\n",
clock_systimer() - priv->start_time);
syslog(LOG_DEBUG, "Elapsed time: %ld\n",
(long)(clock_systimer() - priv->start_time));
for (i = 0; i <= priv->tndx; i++)
{

View File

@ -1,7 +1,7 @@
/************************************************************************************
* arch/arm/src/tiva/tiva_i2c.c
*
* Copyright (C) 2014-2015 Gregory Nutt. All rights reserved.
* Copyright (C) 2014-2016 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* The basic structure of this driver derives in spirit (if nothing more) from the
@ -187,7 +187,7 @@ struct tiva_trace_s
uint32_t count; /* Interrupt count when status change */
enum tiva_trace_e event; /* Last event that occurred with this status */
uint32_t parm; /* Parameter associated with the event */
uint32_t time; /* First of event or first status */
systime_t time; /* First of event or first status */
};
/* I2C Device hardware configuration */
@ -243,7 +243,7 @@ struct tiva_i2c_priv_s
int tndx; /* Trace array index */
int tcount; /* Number of events with this status */
uint32_t ttime; /* Time when the trace was started */
systime_t ttime; /* Time when the trace was started */
uint32_t tstatus; /* Last status read */
/* The actual trace data */
@ -861,9 +861,9 @@ static inline int tiva_i2c_sem_waitdone(struct tiva_i2c_priv_s *priv)
#else
static inline int tiva_i2c_sem_waitdone(struct tiva_i2c_priv_s *priv)
{
uint32_t timeout;
uint32_t start;
uint32_t elapsed;
systime_t timeout;
systime_t start;
systime_t elapsed;
uint32_t status;
int ret;
@ -903,8 +903,8 @@ static inline int tiva_i2c_sem_waitdone(struct tiva_i2c_priv_s *priv)
while (priv->intstate != INTSTATE_DONE && elapsed < timeout);
i2cvdbg("intstate: %d elapsed: %d threshold: %d status: %08x\n",
priv->intstate, elapsed, timeout, status);
i2cvdbg("intstate: %d elapsed: %ld threshold: %ld status: %08x\n",
priv->intstate, (long)elapsed, (long)timeout, status);
/* Set the interrupt state back to IDLE */
@ -1086,8 +1086,8 @@ static void tiva_i2c_tracedump(struct tiva_i2c_priv_s *priv)
struct tiva_trace_s *trace;
int i;
syslog(LOG_DEBUG, "Elapsed time: %d\n",
clock_systimer() - priv->ttime);
syslog(LOG_DEBUG, "Elapsed time: %ld\n",
(long)(clock_systimer() - priv->ttime));
for (i = 0; i <= priv->tndx; i++)
{