sama5/sam_tsd: Fix error: 'ret' may be used uninitialized
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
parent
a7558cf9b9
commit
b1e661e7db
@ -196,7 +196,8 @@ struct sam_tsd_s
|
||||
/* Interrupt bottom half logic and data sampling */
|
||||
|
||||
static void sam_tsd_notify(struct sam_tsd_s *priv);
|
||||
static int sam_tsd_sample(struct sam_tsd_s *priv, struct sam_sample_s *sample);
|
||||
static int sam_tsd_sample(struct sam_tsd_s *priv,
|
||||
struct sam_sample_s *sample);
|
||||
static int sam_tsd_waitsample(struct sam_tsd_s *priv,
|
||||
struct sam_sample_s *sample);
|
||||
static void sam_tsd_bottomhalf(void *arg);
|
||||
@ -259,17 +260,17 @@ static void sam_tsd_notify(struct sam_tsd_s *priv)
|
||||
|
||||
if (priv->nwaiters > 0)
|
||||
{
|
||||
/* After posting this semaphore, we need to exit because the touchscreen
|
||||
* is no longer available.
|
||||
/* After posting this semaphore, we need to exit because the
|
||||
* touchscreen is no longer available.
|
||||
*/
|
||||
|
||||
nxsem_post(&priv->waitsem);
|
||||
}
|
||||
|
||||
/* If there are threads waiting on poll() for touchscreen data to become available,
|
||||
* then wake them up now. NOTE: we wake up all waiting threads because we
|
||||
* do not know that they are going to do. If they all try to read the data,
|
||||
* then some make end up blocking after all.
|
||||
/* If there are threads waiting on poll() for touchscreen data to become
|
||||
* available, then wake them up now. NOTE: we wake up all waiting threads
|
||||
* because we do not know that they are going to do. If they all try to
|
||||
* read the data, then some make end up blocking after all.
|
||||
*/
|
||||
|
||||
for (i = 0; i < CONFIG_SAMA5_TSD_NPOLLWAITERS; i++)
|
||||
@ -288,7 +289,8 @@ static void sam_tsd_notify(struct sam_tsd_s *priv)
|
||||
* Name: sam_tsd_sample
|
||||
****************************************************************************/
|
||||
|
||||
static int sam_tsd_sample(struct sam_tsd_s *priv, struct sam_sample_s *sample)
|
||||
static int sam_tsd_sample(struct sam_tsd_s *priv,
|
||||
struct sam_sample_s *sample)
|
||||
{
|
||||
irqstate_t flags;
|
||||
int ret = -EAGAIN;
|
||||
@ -341,10 +343,11 @@ static int sam_tsd_sample(struct sam_tsd_s *priv, struct sam_sample_s *sample)
|
||||
* Name: sam_tsd_waitsample
|
||||
****************************************************************************/
|
||||
|
||||
static int sam_tsd_waitsample(struct sam_tsd_s *priv, struct sam_sample_s *sample)
|
||||
static int sam_tsd_waitsample(struct sam_tsd_s *priv,
|
||||
struct sam_sample_s *sample)
|
||||
{
|
||||
irqstate_t flags;
|
||||
int ret;
|
||||
int ret = 0;
|
||||
|
||||
/* Interrupts me be disabled when this is called to (1) prevent posting
|
||||
* of semaphores from interrupt handlers, and (2) to prevent sampled data
|
||||
@ -387,7 +390,7 @@ static int sam_tsd_waitsample(struct sam_tsd_s *priv, struct sam_sample_s *sampl
|
||||
iinfo("Sampled\n");
|
||||
|
||||
/* Re-acquire the semaphore that manages mutually exclusive access to
|
||||
* the device structure. We may have to wait here. But we have our sample.
|
||||
* the device structure. We may have to wait here. But we have our sample.
|
||||
* Interrupts and pre-emption will be re-enabled while we wait.
|
||||
*/
|
||||
|
||||
@ -420,7 +423,7 @@ errout:
|
||||
*
|
||||
* Input Parameters:
|
||||
* priv - The touchscreen private data structure
|
||||
* tsav - The new (shifted) value of the TSAV field of the ADC TSMR register.
|
||||
* tsav - The new (shifted) value of the TSAV field of ADC TSMR register
|
||||
*
|
||||
* Returned Value:
|
||||
* None
|
||||
@ -476,9 +479,9 @@ static void sam_tsd_setaverage(struct sam_tsd_s *priv, uint32_t tsav)
|
||||
* Description:
|
||||
* This function executes on the worker thread. It is scheduled by
|
||||
* sam_tsd_interrupt whenever any interesting, enabled TSD event occurs.
|
||||
* All TSD interrupts are disabled when this function runs. sam_tsd_bottomhalf
|
||||
* will re-enable TSD interrupts when it completes processing all pending
|
||||
* TSD events.
|
||||
* All TSD interrupts are disabled when this function runs.
|
||||
* sam_tsd_bottomhalf will re-enable TSD interrupts when it completes
|
||||
* processing all pending TSD events.
|
||||
*
|
||||
* Input Parameters:
|
||||
* arg - The touchscreen private data structure cast to (void *)
|
||||
@ -540,8 +543,8 @@ static void sam_tsd_bottomhalf(void *arg)
|
||||
|
||||
ier = ADC_INT_PEN;
|
||||
|
||||
/* Ignore the interrupt if the pen was already up (CONTACT_NONE == pen up
|
||||
* and already reported; CONTACT_UP == pen up, but not reported)
|
||||
/* Ignore the interrupt if the pen was already up (CONTACT_NONE == pen
|
||||
* up and already reported; CONTACT_UP == pen up, but not reported)
|
||||
*/
|
||||
|
||||
if (priv->sample.contact == CONTACT_NONE ||
|
||||
@ -570,8 +573,8 @@ static void sam_tsd_bottomhalf(void *arg)
|
||||
}
|
||||
|
||||
/* It is a pen down event. If the last loss-of-contact event has not been
|
||||
* processed yet, then we have to ignore the pen down event (or else it will
|
||||
* look like a drag event)
|
||||
* processed yet, then we have to ignore the pen down event (or else it
|
||||
* will look like a drag event)
|
||||
*/
|
||||
|
||||
else if (priv->sample.contact == CONTACT_UP)
|
||||
@ -590,7 +593,7 @@ static void sam_tsd_bottomhalf(void *arg)
|
||||
}
|
||||
else
|
||||
{
|
||||
/* The pen is down and the driver has accepted the last sample values. */
|
||||
/* The pen is down and the driver accepted the last sample values. */
|
||||
|
||||
/* While the pen is down we want interrupts on all data ready and pen
|
||||
* release events.
|
||||
@ -779,9 +782,9 @@ static int sam_tsd_schedule(struct sam_tsd_s *priv)
|
||||
|
||||
sam_adc_putreg(priv->adc, SAM_ADC_IDR, ADC_TSD_ALLINTS);
|
||||
|
||||
/* Transfer processing to the worker thread. Since touchscreen ADC interrupts are
|
||||
* disabled while the work is pending, no special action should be required
|
||||
* to protected the work queue.
|
||||
/* Transfer processing to the worker thread. Since touchscreen ADC
|
||||
* interrupts are disabled while the work is pending, no special action
|
||||
* should be required to protected the work queue.
|
||||
*/
|
||||
|
||||
DEBUGASSERT(priv->work.worker == NULL);
|
||||
|
Loading…
Reference in New Issue
Block a user