I2C: Fix some compile time issues found with tools/testbuild.sh
This commit is contained in:
parent
0693e76be8
commit
c9a7d48cb2
@ -338,8 +338,6 @@ static const char *efm32_i2c_state_str(int i2c_state);
|
|||||||
* Private Data
|
* Private Data
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/* Trace events strings */
|
|
||||||
|
|
||||||
/* I2C device structures */
|
/* I2C device structures */
|
||||||
|
|
||||||
#ifdef CONFIG_EFM32_I2C0
|
#ifdef CONFIG_EFM32_I2C0
|
||||||
|
@ -204,8 +204,6 @@ static void lpc11_i2c_setfrequency(struct lpc11_i2cdev_s *priv,
|
|||||||
|
|
||||||
static int lpc11_i2c_start(struct lpc11_i2cdev_s *priv)
|
static int lpc11_i2c_start(struct lpc11_i2cdev_s *priv)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
|
||||||
|
|
||||||
putreg32(I2C_CONCLR_STAC | I2C_CONCLR_SIC,
|
putreg32(I2C_CONCLR_STAC | I2C_CONCLR_SIC,
|
||||||
priv->base + LPC11_I2C_CONCLR_OFFSET);
|
priv->base + LPC11_I2C_CONCLR_OFFSET);
|
||||||
putreg32(I2C_CONSET_STA, priv->base + LPC11_I2C_CONSET_OFFSET);
|
putreg32(I2C_CONSET_STA, priv->base + LPC11_I2C_CONSET_OFFSET);
|
||||||
|
@ -167,7 +167,7 @@ struct i2c_ops_s lpc17_i2c_ops =
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static void lpc17_i2c_setfrequency(struct lpc17_i2cdev_s *priv,
|
static void lpc17_i2c_setfrequency(struct lpc17_i2cdev_s *priv,
|
||||||
uint32_t frequency);
|
uint32_t frequency)
|
||||||
{
|
{
|
||||||
if (frequency != priv->frequency)
|
if (frequency != priv->frequency)
|
||||||
{
|
{
|
||||||
@ -204,8 +204,6 @@ static void lpc17_i2c_setfrequency(struct lpc17_i2cdev_s *priv,
|
|||||||
|
|
||||||
static int lpc17_i2c_start(struct lpc17_i2cdev_s *priv)
|
static int lpc17_i2c_start(struct lpc17_i2cdev_s *priv)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
|
||||||
|
|
||||||
putreg32(I2C_CONCLR_STAC | I2C_CONCLR_SIC,
|
putreg32(I2C_CONCLR_STAC | I2C_CONCLR_SIC,
|
||||||
priv->base + LPC17_I2C_CONCLR_OFFSET);
|
priv->base + LPC17_I2C_CONCLR_OFFSET);
|
||||||
putreg32(I2C_CONSET_STA, priv->base + LPC17_I2C_CONSET_OFFSET);
|
putreg32(I2C_CONSET_STA, priv->base + LPC17_I2C_CONSET_OFFSET);
|
||||||
|
@ -209,8 +209,6 @@ static void lpc2378_i2c_setfrequency(struct lpc2378_i2cdev_s *priv,
|
|||||||
|
|
||||||
static int lpc2378_i2c_start(struct lpc2378_i2cdev_s *priv)
|
static int lpc2378_i2c_start(struct lpc2378_i2cdev_s *priv)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
|
||||||
|
|
||||||
putreg32(I2C_CONCLR_STAC | I2C_CONCLR_SIC,
|
putreg32(I2C_CONCLR_STAC | I2C_CONCLR_SIC,
|
||||||
priv->base + I2C_CONCLR_OFFSET);
|
priv->base + I2C_CONCLR_OFFSET);
|
||||||
putreg32(I2C_CONSET_STA, priv->base + I2C_CONSET_OFFSET);
|
putreg32(I2C_CONSET_STA, priv->base + I2C_CONSET_OFFSET);
|
||||||
|
@ -120,7 +120,7 @@ static int i2c_transfer(FAR struct i2c_master_s *dev,
|
|||||||
FAR struct i2c_msg_s *msgs, int count);
|
FAR struct i2c_msg_s *msgs, int count);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* I2C device operations
|
* Private Data
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
struct i2c_ops_s lpc31_i2c_ops =
|
struct i2c_ops_s lpc31_i2c_ops =
|
||||||
@ -129,83 +129,11 @@ struct i2c_ops_s lpc31_i2c_ops =
|
|||||||
};
|
};
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: up_i2cinitialize
|
* Private Functions
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Initialise an I2C device
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
struct i2c_master_s *up_i2cinitialize(int port)
|
|
||||||
{
|
|
||||||
struct lpc31_i2cdev_s *priv = &i2cdevices[port];
|
|
||||||
|
|
||||||
priv->base = (port == 0) ? LPC31_I2C0_VBASE : LPC31_I2C1_VBASE;
|
|
||||||
priv->clkid = (port == 0) ? CLKID_I2C0PCLK : CLKID_I2C1PCLK;
|
|
||||||
priv->rstid = (port == 0) ? RESETID_I2C0RST : RESETID_I2C1RST;
|
|
||||||
priv->irqid = (port == 0) ? LPC31_IRQ_I2C0 : LPC31_IRQ_I2C1;
|
|
||||||
|
|
||||||
sem_init(&priv->mutex, 0, 1);
|
|
||||||
sem_init(&priv->wait, 0, 0);
|
|
||||||
|
|
||||||
/* Enable I2C system clocks */
|
|
||||||
|
|
||||||
lpc31_enableclock(priv->clkid);
|
|
||||||
|
|
||||||
/* Reset I2C blocks */
|
|
||||||
|
|
||||||
lpc31_softreset(priv->rstid);
|
|
||||||
|
|
||||||
/* Soft reset the device */
|
|
||||||
|
|
||||||
i2c_reset(priv);
|
|
||||||
|
|
||||||
/* Allocate a watchdog timer */
|
|
||||||
priv->timeout = wd_create();
|
|
||||||
|
|
||||||
DEBUGASSERT(priv->timeout != 0);
|
|
||||||
|
|
||||||
/* Attach Interrupt Handler */
|
|
||||||
irq_attach(priv->irqid, i2c_interrupt);
|
|
||||||
|
|
||||||
/* Enable Interrupt Handler */
|
|
||||||
up_enable_irq(priv->irqid);
|
|
||||||
|
|
||||||
/* Install our operations */
|
|
||||||
priv->dev.ops = &lpc31_i2c_ops;
|
|
||||||
|
|
||||||
return &priv->dev;
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: up_i2cuninitalize
|
* Name: i2c_setfrequency
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Uninitialise an I2C device
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
void up_i2cuninitalize(struct lpc31_i2cdev_s *priv)
|
|
||||||
{
|
|
||||||
/* Disable All Interrupts, soft reset the device */
|
|
||||||
|
|
||||||
i2c_reset(priv);
|
|
||||||
|
|
||||||
/* Detach Interrupt Handler */
|
|
||||||
|
|
||||||
irq_detach(priv->irqid);
|
|
||||||
|
|
||||||
/* Reset I2C blocks */
|
|
||||||
|
|
||||||
lpc31_softreset(priv->rstid);
|
|
||||||
|
|
||||||
/* Disable I2C system clocks */
|
|
||||||
|
|
||||||
lpc31_disableclock(priv->clkid);
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Name: lpc31_i2c_setfrequency
|
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Set the frequency for the next transfer
|
* Set the frequency for the next transfer
|
||||||
@ -567,6 +495,7 @@ static void i2c_timeout(int argc, uint32_t arg, ...)
|
|||||||
* Perform a soft reset of the I2C controller
|
* Perform a soft reset of the I2C controller
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static void i2c_reset(struct lpc31_i2cdev_s *priv)
|
static void i2c_reset(struct lpc31_i2cdev_s *priv)
|
||||||
{
|
{
|
||||||
putreg32(I2C_CTRL_RESET, priv->base + LPC31_I2C_CTRL_OFFSET);
|
putreg32(I2C_CTRL_RESET, priv->base + LPC31_I2C_CTRL_OFFSET);
|
||||||
@ -576,3 +505,83 @@ static void i2c_reset(struct lpc31_i2cdev_s *priv)
|
|||||||
while ((getreg32(priv->base + LPC31_I2C_CTRL_OFFSET) & I2C_CTRL_RESET) != 0)
|
while ((getreg32(priv->base + LPC31_I2C_CTRL_OFFSET) & I2C_CTRL_RESET) != 0)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: up_i2cinitialize
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Initialise an I2C device
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
struct i2c_master_s *up_i2cinitialize(int port)
|
||||||
|
{
|
||||||
|
struct lpc31_i2cdev_s *priv = &i2cdevices[port];
|
||||||
|
|
||||||
|
priv->base = (port == 0) ? LPC31_I2C0_VBASE : LPC31_I2C1_VBASE;
|
||||||
|
priv->clkid = (port == 0) ? CLKID_I2C0PCLK : CLKID_I2C1PCLK;
|
||||||
|
priv->rstid = (port == 0) ? RESETID_I2C0RST : RESETID_I2C1RST;
|
||||||
|
priv->irqid = (port == 0) ? LPC31_IRQ_I2C0 : LPC31_IRQ_I2C1;
|
||||||
|
|
||||||
|
sem_init(&priv->mutex, 0, 1);
|
||||||
|
sem_init(&priv->wait, 0, 0);
|
||||||
|
|
||||||
|
/* Enable I2C system clocks */
|
||||||
|
|
||||||
|
lpc31_enableclock(priv->clkid);
|
||||||
|
|
||||||
|
/* Reset I2C blocks */
|
||||||
|
|
||||||
|
lpc31_softreset(priv->rstid);
|
||||||
|
|
||||||
|
/* Soft reset the device */
|
||||||
|
|
||||||
|
i2c_reset(priv);
|
||||||
|
|
||||||
|
/* Allocate a watchdog timer */
|
||||||
|
priv->timeout = wd_create();
|
||||||
|
|
||||||
|
DEBUGASSERT(priv->timeout != 0);
|
||||||
|
|
||||||
|
/* Attach Interrupt Handler */
|
||||||
|
irq_attach(priv->irqid, i2c_interrupt);
|
||||||
|
|
||||||
|
/* Enable Interrupt Handler */
|
||||||
|
up_enable_irq(priv->irqid);
|
||||||
|
|
||||||
|
/* Install our operations */
|
||||||
|
priv->dev.ops = &lpc31_i2c_ops;
|
||||||
|
|
||||||
|
return &priv->dev;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: up_i2cuninitalize
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Uninitialise an I2C device
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
void up_i2cuninitalize(struct lpc31_i2cdev_s *priv)
|
||||||
|
{
|
||||||
|
/* Disable All Interrupts, soft reset the device */
|
||||||
|
|
||||||
|
i2c_reset(priv);
|
||||||
|
|
||||||
|
/* Detach Interrupt Handler */
|
||||||
|
|
||||||
|
irq_detach(priv->irqid);
|
||||||
|
|
||||||
|
/* Reset I2C blocks */
|
||||||
|
|
||||||
|
lpc31_softreset(priv->rstid);
|
||||||
|
|
||||||
|
/* Disable I2C system clocks */
|
||||||
|
|
||||||
|
lpc31_disableclock(priv->clkid);
|
||||||
|
}
|
||||||
|
@ -191,8 +191,6 @@ static void lpc43_i2c_setfrequency(struct lpc43_i2cdev_s *priv,
|
|||||||
|
|
||||||
static int lpc43_i2c_start(struct lpc43_i2cdev_s *priv)
|
static int lpc43_i2c_start(struct lpc43_i2cdev_s *priv)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
|
||||||
|
|
||||||
putreg32(I2C_CONCLR_STAC | I2C_CONCLR_SIC,
|
putreg32(I2C_CONCLR_STAC | I2C_CONCLR_SIC,
|
||||||
priv->base + LPC43_I2C_CONCLR_OFFSET);
|
priv->base + LPC43_I2C_CONCLR_OFFSET);
|
||||||
putreg32(I2C_CONSET_STA, priv->base + LPC43_I2C_CONSET_OFFSET);
|
putreg32(I2C_CONSET_STA, priv->base + LPC43_I2C_CONSET_OFFSET);
|
||||||
|
@ -237,7 +237,7 @@ static int twi_transfer(FAR struct i2c_master_s *dev,
|
|||||||
|
|
||||||
/* Initialization */
|
/* Initialization */
|
||||||
|
|
||||||
static uint32_t twi_setfrequency(struct twi_dev_s *priv, uint32_t frequency);
|
static void twi_setfrequency(struct twi_dev_s *priv, uint32_t frequency);
|
||||||
static void twi_hw_initialize(struct twi_dev_s *priv, uint32_t frequency);
|
static void twi_hw_initialize(struct twi_dev_s *priv, uint32_t frequency);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
@ -1915,7 +1915,7 @@ static int tiva_i2c_process(struct i2c_master_s *dev, struct i2c_msg_s *msgv, in
|
|||||||
* each message segment.
|
* each message segment.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
tiva_i2c_setclock(priv, msgs->frequency);
|
tiva_i2c_setclock(priv, msgv->frequency);
|
||||||
|
|
||||||
/* Send the address, then the process moves into the ISR. I2C
|
/* Send the address, then the process moves into the ISR. I2C
|
||||||
* interrupts will be enabled within tiva_i2c_waitdone().
|
* interrupts will be enabled within tiva_i2c_waitdone().
|
||||||
@ -2033,7 +2033,9 @@ static int tiva_i2c_transfer(struct i2c_master_s *dev, struct i2c_msg_s *msgv,
|
|||||||
|
|
||||||
tiva_i2c_sem_wait(dev); /* Ensure that address or flags don't change meanwhile */
|
tiva_i2c_sem_wait(dev); /* Ensure that address or flags don't change meanwhile */
|
||||||
ret = tiva_i2c_process(dev, msgv, msgc);
|
ret = tiva_i2c_process(dev, msgv, msgc);
|
||||||
|
|
||||||
tiva_i2c_sem_post(dev);
|
tiva_i2c_sem_post(dev);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************************
|
/************************************************************************************
|
||||||
|
Loading…
Reference in New Issue
Block a user