Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 4 additions & 104 deletions drivers/1wire/1wire.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,32 +103,6 @@ static inline uint32_t onewire_leuint32(uint32_t x)
}
#endif

/****************************************************************************
* Name: onewire_sem_init
*
* Description:
*
****************************************************************************/

static inline void onewire_sem_init(FAR struct onewire_sem_s *sem)
{
sem->holder = NO_HOLDER;
sem->count = 0;
nxsem_init(&sem->sem, 0, 1);
}

/****************************************************************************
* Name: onewire_sem_destroy
*
* Description:
*
****************************************************************************/

static inline void onewire_sem_destroy(FAR struct onewire_sem_s *sem)
{
nxsem_destroy(&sem->sem);
}

/****************************************************************************
* Name: onewire_pm_prepare
*
Expand Down Expand Up @@ -211,80 +185,6 @@ static int onewire_pm_prepare(FAR struct pm_callback_s *cb, int domain,
* Public Functions
****************************************************************************/

/****************************************************************************
* Name: onewire_sem_wait
*
* Description:
* Take the exclusive access, waiting as necessary
*
****************************************************************************/

int onewire_sem_wait(FAR struct onewire_master_s *master)
{
pid_t me;
int ret;

/* Do we already hold the semaphore? */

me = getpid();
if (me == master->devsem.holder)
{
/* Yes... just increment the count */

master->devsem.count++;
DEBUGASSERT(master->devsem.count > 0);
}

/* Take the semaphore (perhaps waiting) */

else
{
ret = nxsem_wait(&master->devsem.sem);
if (ret < 0)
{
return ret;
}

/* Now we hold the semaphore */

master->devsem.holder = me;
master->devsem.count = 1;
}

return OK;
}

/****************************************************************************
* Name: onewire_sem_post
*
* Description:
* Release the mutual exclusion semaphore
*
****************************************************************************/

void onewire_sem_post(FAR struct onewire_master_s *master)
{
DEBUGASSERT(master->devsem.holder == getpid());

/* Is this our last count on the semaphore? */

if (master->devsem.count > 1)
{
/* No.. just decrement the count */

master->devsem.count--;
}

/* Yes.. then we can really release the semaphore */

else
{
master->devsem.holder = NO_HOLDER;
master->devsem.count = 0;
nxsem_post(&master->devsem.sem);
}
}

/****************************************************************************
* Name: onewire_reset_resume
*
Expand Down Expand Up @@ -529,7 +429,7 @@ int onewire_search(FAR struct onewire_master_s *master,

/* Make complete search on the bus mutal exclusive */

ret = onewire_sem_wait(master);
ret = nxrmutex_lock(&master->devlock);
if (ret < 0)
{
return ret;
Expand Down Expand Up @@ -663,7 +563,7 @@ int onewire_search(FAR struct onewire_master_s *master,
}

unlock:
onewire_sem_post(master);
nxrmutex_unlock(&master->devlock);
return (ret < 0) ? ret : nslaves_match;
}

Expand Down Expand Up @@ -743,7 +643,7 @@ onewire_initialize(FAR struct onewire_dev_s *dev, int maxslaves)
/* Initialize the device structure */

master->dev = dev;
onewire_sem_init(&master->devsem);
nxrmutex_init(&master->devlock);
master->nslaves = 0;
master->maxslaves = maxslaves;
master->insearch = false;
Expand Down Expand Up @@ -780,7 +680,7 @@ int onewire_uninitialize(FAR struct onewire_master_s *master)

/* Release resources. This does not touch the underlying onewire_dev_s */

onewire_sem_destroy(&master->devsem);
nxrmutex_destroy(&master->devlock);
kmm_free(master);
return OK;
}
14 changes: 2 additions & 12 deletions drivers/1wire/1wire_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
#include <nuttx/config.h>

#include <stdbool.h>
#include <nuttx/semaphore.h>
#include <nuttx/mutex.h>
#include <nuttx/power/pm.h>

/****************************************************************************
Expand All @@ -37,17 +37,10 @@

struct onewire_dev_s;

struct onewire_sem_s
{
sem_t sem;
pid_t holder; /* The current holder of the semaphore */
int16_t count; /* Number of counts held */
};

struct onewire_master_s
{
FAR struct onewire_dev_s *dev; /* 1-Wire lower half */
struct onewire_sem_s devsem; /* Re-entrant semaphore */
rmutex_t devlock; /* Re-entrant lock */
int nslaves; /* Number of 1-wire slaves */
int maxslaves; /* Maximum number of 1-wire slaves */
bool insearch; /* If we are in middle of 1-wire search */
Expand All @@ -72,9 +65,6 @@ bool onewire_valid_rom(uint64_t rom);

/* Rest are from 1wire.c */

int onewire_sem_wait(FAR struct onewire_master_s *master);
void onewire_sem_post(FAR struct onewire_master_s *master);

int onewire_addslave(FAR struct onewire_master_s *master,
FAR struct onewire_slave_s *slave);
int onewire_removeslave(FAR struct onewire_master_s *master,
Expand Down
4 changes: 2 additions & 2 deletions drivers/1wire/1wire_read.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ int onewire_read(FAR struct onewire_master_s *master,
return -EAGAIN;
}

ret = onewire_sem_wait(master);
ret = nxrmutex_lock(&master->devlock);
if (ret < 0)
{
return ret;
Expand All @@ -86,6 +86,6 @@ int onewire_read(FAR struct onewire_master_s *master,
ret = ONEWIRE_READ(master->dev, buffer, buflen);

err_unlock:
onewire_sem_post(master);
nxrmutex_unlock(&master->devlock);
return ret;
}
4 changes: 2 additions & 2 deletions drivers/1wire/1wire_write.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ int onewire_write(FAR struct onewire_master_s *master,
return -EAGAIN;
}

ret = onewire_sem_wait(master);
ret = nxrmutex_lock(&master->devlock);
if (ret < 0)
{
return ret;
Expand All @@ -87,6 +87,6 @@ int onewire_write(FAR struct onewire_master_s *master,
ret = ONEWIRE_WRITE(master->dev, buffer, buflen);

err_unlock:
onewire_sem_post(master);
nxrmutex_unlock(&master->devlock);
return ret;
}
4 changes: 2 additions & 2 deletions drivers/1wire/1wire_writeread.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ int onewire_writeread(FAR struct onewire_master_s *master,
return -EAGAIN;
}

ret = onewire_sem_wait(master);
ret = nxrmutex_lock(&master->devlock);
if (ret < 0)
{
return ret;
Expand All @@ -97,6 +97,6 @@ int onewire_writeread(FAR struct onewire_master_s *master,
ret = ONEWIRE_READ(master->dev, rbuffer, rbuflen);

err_unlock:
onewire_sem_post(master);
nxrmutex_unlock(&master->devlock);
return ret;
}
16 changes: 8 additions & 8 deletions drivers/1wire/ds28e17.c
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ static inline int ds_i2c_sem_wait(FAR struct i2c_master_s *i2cdev)
FAR struct ds_i2c_inst_s *inst = (FAR struct ds_i2c_inst_s *)i2cdev;
FAR struct onewire_master_s *master = inst->master;

return onewire_sem_wait(master);
return nxrmutex_lock(&master->devlock);
}

/****************************************************************************
Expand All @@ -171,7 +171,7 @@ static inline void ds_i2c_sem_post(FAR struct i2c_master_s *i2cdev)
FAR struct ds_i2c_inst_s *inst = (FAR struct ds_i2c_inst_s *)i2cdev;
FAR struct onewire_master_s *master = inst->master;

onewire_sem_post(master);
nxrmutex_unlock(&master->devlock);
}

static int ds_error(uint8_t buf[])
Expand Down Expand Up @@ -917,7 +917,7 @@ FAR struct i2c_master_s *

/* We need a recursive lock as this may be called from a search callback. */

ret = onewire_sem_wait(master);
ret = nxrmutex_lock(&master->devlock);
if (ret < 0)
{
kmm_free(inst);
Expand All @@ -929,7 +929,7 @@ FAR struct i2c_master_s *
{
kmm_free(inst);
i2cerr("ERROR: Failed to add slave\n");
onewire_sem_post(master);
nxrmutex_unlock(&master->devlock);
return NULL;
}

Expand All @@ -947,7 +947,7 @@ FAR struct i2c_master_s *
ds28e17_selftest(inst);
}

onewire_sem_post(master);
nxrmutex_unlock(&master->devlock);
return (struct i2c_master_s *)inst;
}

Expand All @@ -973,7 +973,7 @@ int ds28e17_lower_half_unregister(FAR struct ds28e17_dev_s *priv,
FAR struct onewire_master_s *master = inst->master;
int ret;

ret = onewire_sem_wait(master);
ret = nxrmutex_lock(&master->devlock);
if (ret < 0)
{
return ret;
Expand All @@ -984,12 +984,12 @@ int ds28e17_lower_half_unregister(FAR struct ds28e17_dev_s *priv,
{
kmm_free(inst);
i2cerr("ERROR: Failed to remove slave\n");
onewire_sem_post(master);
nxrmutex_unlock(&master->devlock);
return ret;
}

kmm_free(inst);
onewire_sem_post(master);
nxrmutex_unlock(&master->devlock);

return OK;
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/clk/clk.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
* Private Datas
****************************************************************************/

static mutex_t g_clk_list_lock = MUTEX_INITIALIZER;
static mutex_t g_clk_list_lock = NXMUTEX_INITIALIZER;

static struct list_node g_clk_root_list
= LIST_INITIAL_VALUE(g_clk_root_list);
Expand Down
2 changes: 1 addition & 1 deletion drivers/clk/clk_rpmsg.c
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ static int clk_rpmsg_set_phase(FAR struct clk_s *clk, int degrees);
* Private Datas
****************************************************************************/

static mutex_t g_clk_rpmsg_lock = MUTEX_INITIALIZER;
static mutex_t g_clk_rpmsg_lock = NXMUTEX_INITIALIZER;
static struct list_node g_clk_rpmsg_priv =
LIST_INITIAL_VALUE(g_clk_rpmsg_priv);

Expand Down
2 changes: 1 addition & 1 deletion drivers/power/pm.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@

#include <queue.h>

#include <nuttx/semaphore.h>
#include <nuttx/mutex.h>
#include <nuttx/clock.h>
#include <nuttx/power/pm.h>
#include <nuttx/wdog.h>
Expand Down
2 changes: 1 addition & 1 deletion drivers/power/regulator_rpmsg.c
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ static int regulator_rpmsg_is_enabled(FAR struct regulator_dev_s *rdev);
* Private Data
****************************************************************************/

static mutex_t g_regulator_rpmsg_lock = MUTEX_INITIALIZER;
static mutex_t g_regulator_rpmsg_lock = NXMUTEX_INITIALIZER;
static struct list_node g_regulator_rpmsg_priv =
LIST_INITIAL_VALUE(g_regulator_rpmsg_priv);

Expand Down
Loading