mirror of
https://github.com/apache/nuttx.git
synced 2026-05-25 09:45:55 +08:00
Merge remote-tracking branch 'origin/master' into misoc
This commit is contained in:
@@ -36,6 +36,7 @@
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/fs/fs.h>
|
||||
|
||||
@@ -360,9 +361,13 @@ int calypso_kbd_irq(int irq, uint32_t * regs)
|
||||
|
||||
void up_keypad(void)
|
||||
{
|
||||
/* Semaphore; helps leaving IRQ ctx as soon as possible */
|
||||
/* kbssem semaphore helps leaving IRQ ctx as soon as possible. This
|
||||
* semaphore is used for signaling and, hence, should not have priority
|
||||
* inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&kbdsem, 0, 0);
|
||||
sem_setprotocol(&kbdsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Drive cols low in idle state such that all buttons cause events */
|
||||
|
||||
|
||||
@@ -71,8 +71,9 @@
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
@@ -681,8 +682,14 @@ static inline void efm32_i2c_sem_post(FAR struct efm32_i2c_priv_s *priv)
|
||||
static inline void efm32_i2c_sem_init(FAR struct efm32_i2c_priv_s *priv)
|
||||
{
|
||||
sem_init(&priv->sem_excl, 0, 1);
|
||||
|
||||
#ifndef CONFIG_I2C_POLLED
|
||||
/* This semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&priv->sem_isr, 0, 0);
|
||||
sem_setprotocol(&priv->sem_isr, SEM_PRIO_NONE);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/spi/spi.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
@@ -1640,6 +1641,13 @@ static int spi_portinitialize(struct efm32_spidev_s *priv)
|
||||
|
||||
(void)sem_init(&priv->rxdmasem, 0, 0);
|
||||
(void)sem_init(&priv->txdmasem, 0, 0);
|
||||
|
||||
/* These semaphores are used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->rxdmasem, SEM_PRIO_NONE);
|
||||
sem_setprotocol(&priv->txdmasem, SEM_PRIO_NONE);
|
||||
#endif
|
||||
|
||||
/* Enable SPI */
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/usb/usb.h>
|
||||
#include <nuttx/usb/usbhost.h>
|
||||
#include <nuttx/usb/usbhost_devaddr.h>
|
||||
@@ -5157,6 +5158,12 @@ static inline void efm32_sw_initialize(FAR struct efm32_usbhost_s *priv)
|
||||
sem_init(&priv->pscsem, 0, 0);
|
||||
sem_init(&priv->exclsem, 0, 1);
|
||||
|
||||
/* The pscsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->pscsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Initialize the driver state data */
|
||||
|
||||
priv->smstate = SMSTATE_DETACHED;
|
||||
@@ -5172,8 +5179,15 @@ static inline void efm32_sw_initialize(FAR struct efm32_usbhost_s *priv)
|
||||
for (i = 0; i < EFM32_MAX_TX_FIFOS; i++)
|
||||
{
|
||||
FAR struct efm32_chan_s *chan = &priv->chan[i];
|
||||
|
||||
chan->chidx = i;
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not
|
||||
* have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&chan->waitsem, 0, 0);
|
||||
sem_setprotocol(&chan->waitsem, SEM_PRIO_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
#include <nuttx/spi/spi.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "up_internal.h"
|
||||
@@ -1116,7 +1117,13 @@ FAR struct spi_dev_s *imx_spibus_initialize(int port)
|
||||
/* Initialize the state structure */
|
||||
|
||||
#ifndef CONFIG_SPI_POLLWAIT
|
||||
/* Initialize the semaphore that is used to wake up the waiting
|
||||
* thread when the DMA transfer completes. This semaphore is used for
|
||||
* signaling and, hence, should not have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&priv->waitsem, 0, 0);
|
||||
sem_setprotocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
#endif
|
||||
sem_init(&priv->exclsem, 0, 1);
|
||||
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -1105,9 +1106,17 @@ struct i2c_master_s *kinetis_i2cbus_initialize(int port)
|
||||
|
||||
leave_critical_section(flags);
|
||||
|
||||
/* Initialize semaphores */
|
||||
|
||||
sem_init(&priv->mutex, 0, 1);
|
||||
sem_init(&priv->wait, 0, 0);
|
||||
|
||||
/* The wait semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->wait, SEM_PRIO_NONE);
|
||||
|
||||
/* Allocate a watchdog timer */
|
||||
|
||||
priv->timeout = wd_create();
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/sdio.h>
|
||||
#include <nuttx/wqueue.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/mmcsd.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -2774,8 +2775,18 @@ FAR struct sdio_dev_s *sdhc_initialize(int slotno)
|
||||
DEBUGASSERT(slotno == 0);
|
||||
|
||||
/* Initialize the SDHC slot structure data structure */
|
||||
/* Initialize semaphores */
|
||||
|
||||
sem_init(&priv->waitsem, 0, 0);
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Create a watchdog timer */
|
||||
|
||||
priv->waitwdog = wd_create();
|
||||
DEBUGASSERT(priv->waitwdog);
|
||||
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -584,9 +585,17 @@ struct i2c_master_s *lpc11_i2cbus_initialize(int port)
|
||||
|
||||
putreg32(I2C_CONSET_I2EN, priv->base + LPC11_I2C_CONSET_OFFSET);
|
||||
|
||||
/* Initialize semaphores */
|
||||
|
||||
sem_init(&priv->mutex, 0, 1);
|
||||
sem_init(&priv->wait, 0, 0);
|
||||
|
||||
/* The wait semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->wait, SEM_PRIO_NONE);
|
||||
|
||||
/* Allocate a watchdog timer */
|
||||
|
||||
priv->timeout = wd_create();
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -589,9 +590,17 @@ struct i2c_master_s *lpc17_i2cbus_initialize(int port)
|
||||
|
||||
putreg32(I2C_CONSET_I2EN, priv->base + LPC17_I2C_CONSET_OFFSET);
|
||||
|
||||
/* Initialize semaphores */
|
||||
|
||||
sem_init(&priv->mutex, 0, 1);
|
||||
sem_init(&priv->wait, 0, 0);
|
||||
|
||||
/* The wait semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->wait, SEM_PRIO_NONE);
|
||||
|
||||
/* Allocate a watchdog timer */
|
||||
|
||||
priv->timeout = wd_create();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* arch/arm/src/lpc17xx/lpc17_sdcard.c
|
||||
*
|
||||
* Copyright (C) 2013-2014 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2013-2014, 2016 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -52,6 +52,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/sdio.h>
|
||||
#include <nuttx/wqueue.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/mmcsd.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -2699,8 +2700,18 @@ FAR struct sdio_dev_s *sdio_initialize(int slotno)
|
||||
putreg32(regval, LPC17_SYSCON_PCONP);
|
||||
|
||||
/* Initialize the SD card slot structure */
|
||||
/* Initialize semaphores */
|
||||
|
||||
sem_init(&priv->waitsem, 0, 0);
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Create a watchdog timer */
|
||||
|
||||
priv->waitwdog = wd_create();
|
||||
DEBUGASSERT(priv->waitwdog);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* arch/arm/src/lpc17xx/lpc17_usbhost.c
|
||||
*
|
||||
* Copyright (C) 2010-2012, 2014-2015 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2010-2012, 2014-2016 Gregory Nutt. All rights reserved.
|
||||
* Authors: Rafael Noronha <rafael@pdsolucoes.com.br>
|
||||
* Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
@@ -51,6 +51,7 @@
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/usb/usb.h>
|
||||
#include <nuttx/usb/ohci.h>
|
||||
#include <nuttx/usb/usbhost.h>
|
||||
@@ -2262,10 +2263,12 @@ static int lpc17_epalloc(struct usbhost_driver_s *drvr,
|
||||
uinfo("EP%d CTRL:%08x\n", epdesc->addr, ed->hw.ctrl);
|
||||
|
||||
/* Initialize the semaphore that is used to wait for the endpoint
|
||||
* WDH event.
|
||||
* WDH event. The wdhsem semaphore is used for signaling and, hence,
|
||||
* should not have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&ed->wdhsem, 0, 0);
|
||||
sem_setprotocol(&priv->wdhsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Link the common tail TD to the ED's TD list */
|
||||
|
||||
@@ -3639,6 +3642,12 @@ struct usbhost_connection_s *lpc17_usbhost_initialize(int controller)
|
||||
sem_init(&priv->pscsem, 0, 0);
|
||||
sem_init(&priv->exclsem, 0, 1);
|
||||
|
||||
/* The pscsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->pscsem, SEM_PRIO_NONE);
|
||||
|
||||
#ifndef CONFIG_USBHOST_INT_DISABLE
|
||||
priv->ininterval = MAX_PERINTERVAL;
|
||||
priv->outinterval = MAX_PERINTERVAL;
|
||||
@@ -3719,7 +3728,13 @@ struct usbhost_connection_s *lpc17_usbhost_initialize(int controller)
|
||||
memset((void *)HCCA, 0, sizeof(struct ohci_hcca_s));
|
||||
memset((void *)TDTAIL, 0, sizeof(struct ohci_gtd_s));
|
||||
memset((void *)EDCTRL, 0, sizeof(struct lpc17_ed_s));
|
||||
|
||||
/* The EDCTRL wdhsem semaphore is used for signaling and, hence, should
|
||||
* not have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&EDCTRL->wdhsem, 0, 0);
|
||||
sem_setprotocol(&EDCTRL->wdhsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Initialize user-configurable EDs */
|
||||
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -600,9 +601,17 @@ struct i2c_master_s *lpc2378_i2cbus_initialize(int port)
|
||||
|
||||
putreg32(I2C_CONSET_I2EN, priv->base + I2C_CONSET_OFFSET);
|
||||
|
||||
/* Initialize semaphores */
|
||||
|
||||
sem_init(&priv->mutex, 0, 1);
|
||||
sem_init(&priv->wait, 0, 0);
|
||||
|
||||
/* The wait semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->wait, SEM_PRIO_NONE);
|
||||
|
||||
/* Allocate a watchdog timer */
|
||||
|
||||
priv->timeout = wd_create();
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/wqueue.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/usb/usb.h>
|
||||
#include <nuttx/usb/usbhost.h>
|
||||
#include <nuttx/usb/ehci.h>
|
||||
@@ -3931,7 +3932,13 @@ static int lpc31_epalloc(FAR struct usbhost_driver_s *drvr,
|
||||
epinfo->maxpacket = epdesc->mxpacketsize;
|
||||
epinfo->xfrtype = epdesc->xfrtype;
|
||||
epinfo->speed = hport->speed;
|
||||
|
||||
/* The iocsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&epinfo->iocsem, 0, 0);
|
||||
sem_setprotocol(&epinfo->iocsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Success.. return an opaque reference to the endpoint information structure
|
||||
* instance
|
||||
@@ -4916,6 +4923,12 @@ FAR struct usbhost_connection_s *lpc31_ehci_initialize(int controller)
|
||||
sem_init(&g_ehci.exclsem, 0, 1);
|
||||
sem_init(&g_ehci.pscsem, 0, 0);
|
||||
|
||||
/* The pscsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&g_ehci.pscsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Initialize EP0 */
|
||||
|
||||
sem_init(&g_ehci.ep0.iocsem, 0, 1);
|
||||
@@ -4952,7 +4965,13 @@ FAR struct usbhost_connection_s *lpc31_ehci_initialize(int controller)
|
||||
rhport->ep0.xfrtype = USB_EP_ATTR_XFER_CONTROL;
|
||||
rhport->ep0.speed = USB_SPEED_FULL;
|
||||
rhport->ep0.maxpacket = 8;
|
||||
|
||||
/* The port iocsem semaphore is used for signaling and, hence,
|
||||
* should not have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&rhport->ep0.iocsem, 0, 0);
|
||||
sem_setprotocol(&rhport->iocsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Initialize the public port representation */
|
||||
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -554,9 +555,17 @@ struct i2c_master_s *lpc31_i2cbus_initialize(int port)
|
||||
priv->rstid = (port == 0) ? RESETID_I2C0RST : RESETID_I2C1RST;
|
||||
priv->irqid = (port == 0) ? LPC31_IRQ_I2C0 : LPC31_IRQ_I2C1;
|
||||
|
||||
/* Initialize semaphores */
|
||||
|
||||
sem_init(&priv->mutex, 0, 1);
|
||||
sem_init(&priv->wait, 0, 0);
|
||||
|
||||
/* The wait semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->wait, SEM_PRIO_NONE);
|
||||
|
||||
/* Enable I2C system clocks */
|
||||
|
||||
lpc31_enableclock(priv->clkid);
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/wqueue.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/usb/usb.h>
|
||||
#include <nuttx/usb/usbhost.h>
|
||||
#include <nuttx/usb/ehci.h>
|
||||
@@ -3768,7 +3769,13 @@ static int lpc43_epalloc(FAR struct usbhost_driver_s *drvr,
|
||||
epinfo->maxpacket = epdesc->mxpacketsize;
|
||||
epinfo->xfrtype = epdesc->xfrtype;
|
||||
epinfo->speed = hport->speed;
|
||||
|
||||
/* The endpoint iocsem semaphore is used for signaling and, hence,
|
||||
* should not have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&epinfo->iocsem, 0, 0);
|
||||
sem_setprotocol(&epinfo->iocsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Success.. return an opaque reference to the endpoint information structure
|
||||
* instance
|
||||
@@ -4747,6 +4754,12 @@ FAR struct usbhost_connection_s *lpc43_ehci_initialize(int controller)
|
||||
sem_init(&g_ehci.exclsem, 0, 1);
|
||||
sem_init(&g_ehci.pscsem, 0, 0);
|
||||
|
||||
/* The pscsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&g_ehci.pscsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Initialize EP0 */
|
||||
|
||||
sem_init(&g_ehci.ep0.iocsem, 0, 1);
|
||||
@@ -4783,7 +4796,13 @@ FAR struct usbhost_connection_s *lpc43_ehci_initialize(int controller)
|
||||
rhport->ep0.xfrtype = USB_EP_ATTR_XFER_CONTROL;
|
||||
rhport->ep0.speed = USB_SPEED_FULL;
|
||||
rhport->ep0.maxpacket = 8;
|
||||
|
||||
/* The EP0 iocsem semaphore is used for signaling and, hence, should
|
||||
* not have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&rhport->ep0.iocsem, 0, 0);
|
||||
sem_setprotocol(&rhport->ep0.iocsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Initialize the public port representation */
|
||||
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -539,9 +540,17 @@ struct i2c_master_s *lpc43_i2cbus_initialize(int port)
|
||||
|
||||
putreg32(I2C_CONSET_I2EN, priv->base + LPC43_I2C_CONSET_OFFSET);
|
||||
|
||||
/* Initialize semaphores */
|
||||
|
||||
sem_init(&priv->mutex, 0, 1);
|
||||
sem_init(&priv->wait, 0, 0);
|
||||
|
||||
/* The wait semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->wait, SEM_PRIO_NONE);
|
||||
|
||||
/* Allocate a watchdog timer */
|
||||
|
||||
priv->timeout = wd_create();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* arch/arm/src/sam34/sam_hsmci.c
|
||||
*
|
||||
* Copyright (C) 2010, 2012-2014 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2010, 2012-2014, 2016 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -52,6 +52,7 @@
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/sdio.h>
|
||||
#include <nuttx/wqueue.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/mmcsd.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -2668,8 +2669,18 @@ FAR struct sdio_dev_s *sdio_initialize(int slotno)
|
||||
mcinfo("slotno: %d\n", slotno);
|
||||
|
||||
/* Initialize the HSMCI slot structure */
|
||||
/* Initialize semaphores */
|
||||
|
||||
sem_init(&priv->waitsem, 0, 0);
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Create a watchdog timer */
|
||||
|
||||
priv->waitwdog = wd_create();
|
||||
DEBUGASSERT(priv->waitwdog);
|
||||
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/spi/spi.h>
|
||||
|
||||
#include "up_internal.h"
|
||||
@@ -1882,10 +1883,12 @@ struct spi_dev_s *sam_spibus_initialize(int port)
|
||||
|
||||
#ifdef CONFIG_SAM34_SPI_DMA
|
||||
/* Initialize the SPI semaphore that is used to wake up the waiting
|
||||
* thread when the DMA transfer completes.
|
||||
* thread when the DMA transfer completes. This semaphore is used for
|
||||
* signaling and, hence, should not have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&spics->dmawait, 0, 0);
|
||||
sem_setprotocol(&spics->dmawait, SEM_PRIO_NONE);
|
||||
|
||||
/* Create a watchdog time to catch DMA timeouts */
|
||||
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -982,9 +983,17 @@ struct i2c_master_s *sam_i2cbus_initialize(int bus)
|
||||
|
||||
priv->dev.ops = &g_twiops;
|
||||
|
||||
/* Initialize semaphores */
|
||||
|
||||
sem_init(&priv->exclsem, 0, 1);
|
||||
sem_init(&priv->waitsem, 0, 0);
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Allocate a watchdog timer */
|
||||
|
||||
priv->timeout = wd_create();
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/wqueue.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/usb/usb.h>
|
||||
#include <nuttx/usb/usbhost.h>
|
||||
#include <nuttx/usb/ehci.h>
|
||||
@@ -3752,7 +3753,13 @@ static int sam_epalloc(FAR struct usbhost_driver_s *drvr,
|
||||
epinfo->maxpacket = epdesc->mxpacketsize;
|
||||
epinfo->xfrtype = epdesc->xfrtype;
|
||||
epinfo->speed = hport->speed;
|
||||
|
||||
/* The endpoint iocsem semaphore is used for signaling and, hence,
|
||||
* should not have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&epinfo->iocsem, 0, 0);
|
||||
sem_setprotocol(&epinfo->iocsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Success.. return an opaque reference to the endpoint information structure
|
||||
* instance
|
||||
@@ -4787,6 +4794,12 @@ FAR struct usbhost_connection_s *sam_ehci_initialize(int controller)
|
||||
sem_init(&g_ehci.exclsem, 0, 1);
|
||||
sem_init(&g_ehci.pscsem, 0, 0);
|
||||
|
||||
/* The pscsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&g_ehci.pscsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Initialize EP0 */
|
||||
|
||||
sem_init(&g_ehci.ep0.iocsem, 0, 1);
|
||||
@@ -4823,7 +4836,13 @@ FAR struct usbhost_connection_s *sam_ehci_initialize(int controller)
|
||||
rhport->ep0.xfrtype = USB_EP_ATTR_XFER_CONTROL;
|
||||
rhport->ep0.speed = USB_SPEED_FULL;
|
||||
rhport->ep0.maxpacket = 8;
|
||||
|
||||
/* The endpoint 0 iocsem semaphore is used for signaling and, hence,
|
||||
* should not have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&rhport->ep0.iocsem, 0, 0);
|
||||
sem_setprotocol(&rhport->ep0.iocsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Initialize the public port representation */
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* arch/arm/src/sama5/sam_hsmci.c
|
||||
*
|
||||
* Copyright (C) 2013-2014 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2013-2014, 2016 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -52,6 +52,7 @@
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/sdio.h>
|
||||
#include <nuttx/wqueue.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/mmcsd.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -3331,8 +3332,18 @@ FAR struct sdio_dev_s *sdio_initialize(int slotno)
|
||||
priv, priv->base, priv->hsmci, dmac, pid);
|
||||
|
||||
/* Initialize the HSMCI slot structure */
|
||||
/* Initialize semaphores */
|
||||
|
||||
sem_init(&priv->waitsem, 0, 0);
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Create a watchdog timer */
|
||||
|
||||
priv->waitwdog = wd_create();
|
||||
DEBUGASSERT(priv->waitwdog);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* arch/arm/src/sama5/sam_nand.c
|
||||
*
|
||||
* Copyright (C) 2013 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2013, 2016 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* References:
|
||||
@@ -58,6 +58,7 @@
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/fs/ioctl.h>
|
||||
#include <nuttx/mtd/mtd.h>
|
||||
#include <nuttx/mtd/nand.h>
|
||||
@@ -2944,7 +2945,12 @@ struct mtd_dev_s *sam_nand_initialize(int cs)
|
||||
priv->cs = cs;
|
||||
|
||||
#ifdef CONFIG_SAMA5_NAND_DMA
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&priv->waitsem, 0, 0);
|
||||
sem_setprotocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
#endif
|
||||
|
||||
/* Perform one-time, global NFC/PMECC initialization */
|
||||
@@ -2956,8 +2962,14 @@ struct mtd_dev_s *sam_nand_initialize(int cs)
|
||||
#if NAND_NBANKS > 1
|
||||
sem_init(&g_nand.exclsem, 0, 1);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SAMA5_NAND_HSMCINTERRUPTS
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not
|
||||
* have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&g_nand.waitsem, 0, 0);
|
||||
sem_setprotocol(&g_nand.waitsem, SEM_PRIO_NONE);
|
||||
#endif
|
||||
|
||||
/* Enable the NAND FLASH Controller (The NFC is always used) */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* arch/arm/src/sama5/sam_ohci.c
|
||||
*
|
||||
* Copyright (C) 2013, 2015 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2013, 2015-2016 Gregory Nutt. All rights reserved.
|
||||
* Authors: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -51,6 +51,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/wqueue.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/usb/usb.h>
|
||||
#include <nuttx/usb/ohci.h>
|
||||
#include <nuttx/usb/usbhost.h>
|
||||
@@ -2664,6 +2665,12 @@ static int sam_epalloc(struct usbhost_driver_s *drvr,
|
||||
|
||||
sem_init(&eplist->wdhsem, 0, 0);
|
||||
|
||||
/* The wdhsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&eplist->wdhsem, SEM_PRIO_NONE);
|
||||
|
||||
/* We must have exclusive access to the ED pool, the bulk list, the periodic list
|
||||
* and the interrupt table.
|
||||
*/
|
||||
@@ -3903,6 +3910,12 @@ struct usbhost_connection_s *sam_ohci_initialize(int controller)
|
||||
sem_init(&g_ohci.pscsem, 0, 0);
|
||||
sem_init(&g_ohci.exclsem, 0, 1);
|
||||
|
||||
/* The pscsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&g_ohci.pscsem, SEM_PRIO_NONE);
|
||||
|
||||
#ifndef CONFIG_USBHOST_INT_DISABLE
|
||||
g_ohci.ininterval = MAX_PERINTERVAL;
|
||||
g_ohci.outinterval = MAX_PERINTERVAL;
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/spi/spi.h>
|
||||
|
||||
#include "up_internal.h"
|
||||
@@ -1810,10 +1811,12 @@ struct spi_dev_s *sam_spibus_initialize(int port)
|
||||
|
||||
#ifdef CONFIG_SAMA5_SPI_DMA
|
||||
/* Initialize the SPI semaphore that is used to wake up the waiting
|
||||
* thread when the DMA transfer completes.
|
||||
* thread when the DMA transfer completes. This semaphore is used for
|
||||
* signaling and, hence, should not have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&spics->dmawait, 0, 0);
|
||||
sem_setprotocol(&spics->dmawait, SEM_PRIO_NONE);
|
||||
|
||||
/* Create a watchdog time to catch DMA timeouts */
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/fs/fs.h>
|
||||
#include <nuttx/drivers/drivers.h>
|
||||
|
||||
@@ -352,9 +353,18 @@ static int sam_rng_initialize(void)
|
||||
/* Initialize the device structure */
|
||||
|
||||
memset(&g_trngdev, 0, sizeof(struct trng_dev_s));
|
||||
|
||||
/* Initialize semphores */
|
||||
|
||||
sem_init(&g_trngdev.exclsem, 0, 1);
|
||||
sem_init(&g_trngdev.waitsem, 0, 0);
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&g_trngdev.waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Enable clocking to the TRNG */
|
||||
|
||||
sam_trng_enableclk();
|
||||
|
||||
@@ -66,6 +66,7 @@
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/wqueue.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/input/touchscreen.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
@@ -1669,7 +1670,12 @@ int sam_tsd_register(struct sam_adc_s *adc, int minor)
|
||||
priv->threshx = INVALID_THRESHOLD; /* Initialize thresholding logic */
|
||||
priv->threshy = INVALID_THRESHOLD; /* Initialize thresholding logic */
|
||||
|
||||
sem_init(&priv->waitsem, 0, 0); /* Initialize pen event wait semaphore */
|
||||
/* Initialize pen event wait semaphore. This semaphore is used for
|
||||
* signaling and, hence, should not have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&priv->waitsem, 0, 0);
|
||||
sem_setprotocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Register the device as an input device */
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -1306,9 +1307,17 @@ struct i2c_master_s *sam_i2cbus_initialize(int bus)
|
||||
|
||||
priv->dev.ops = &g_twiops;
|
||||
|
||||
/* Initialize semaphores */
|
||||
|
||||
(void)sem_init(&priv->exclsem, 0, 1);
|
||||
(void)sem_init(&priv->waitsem, 0, 0);
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Perform repeatable TWI hardware initialization */
|
||||
|
||||
twi_hw_initialize(priv, frequency);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* arch/arm/src/samv7/sam_hsmci.c
|
||||
*
|
||||
* Copyright (C) 2015 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2015-2016 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -52,6 +52,7 @@
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/sdio.h>
|
||||
#include <nuttx/wqueue.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/mmcsd.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -3352,8 +3353,18 @@ FAR struct sdio_dev_s *sdio_initialize(int slotno)
|
||||
priv, priv->base, priv->hsmci, pid);
|
||||
|
||||
/* Initialize the HSMCI slot structure */
|
||||
/* Initialize semaphores */
|
||||
|
||||
sem_init(&priv->waitsem, 0, 0);
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Create a watchdog timer */
|
||||
|
||||
priv->waitwdog = wd_create();
|
||||
DEBUGASSERT(priv->waitwdog);
|
||||
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/spi/qspi.h>
|
||||
|
||||
#include "up_internal.h"
|
||||
@@ -1790,10 +1791,12 @@ struct qspi_dev_s *sam_qspi_initialize(int intf)
|
||||
}
|
||||
|
||||
/* Initialize the QSPI semaphore that is used to wake up the waiting
|
||||
* thread when the DMA transfer completes.
|
||||
* thread when the DMA transfer completes. This semaphore is used for
|
||||
* signaling and, hence, should not have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&priv->dmawait, 0, 0);
|
||||
sem_setprotocol(&priv->dmawait, SEM_PRIO_NONE);
|
||||
|
||||
/* Create a watchdog time to catch DMA timeouts */
|
||||
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/spi/spi.h>
|
||||
|
||||
#include "up_internal.h"
|
||||
@@ -626,7 +627,7 @@ static inline uint32_t spi_cs2pcs(struct sam_spics_s *spics)
|
||||
#ifndef CONFIG_SAMV7_SPI_CS_DECODING
|
||||
return ((uint32_t)1 << (spics->cs)) - 1;
|
||||
#else
|
||||
return spics->cs;
|
||||
return spics->cs - 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -2164,10 +2165,12 @@ FAR struct spi_dev_s *sam_spibus_initialize(int port)
|
||||
|
||||
#ifdef CONFIG_SAMV7_SPI_DMA
|
||||
/* Initialize the SPI semaphore that is used to wake up the waiting
|
||||
* thread when the DMA transfer completes.
|
||||
* thread when the DMA transfer completes. This semaphore is used for
|
||||
* signaling and, hence, should not have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&spics->dmawait, 0, 0);
|
||||
sem_setprotocol(&spics->dmawait, SEM_PRIO_NONE);
|
||||
|
||||
/* Create a watchdog time to catch DMA timeouts */
|
||||
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/fs/fs.h>
|
||||
#include <nuttx/drivers/drivers.h>
|
||||
|
||||
@@ -353,9 +354,18 @@ static int sam_rng_initialize(void)
|
||||
/* Initialize the device structure */
|
||||
|
||||
memset(&g_trngdev, 0, sizeof(struct trng_dev_s));
|
||||
|
||||
/* Initialize semaphores */
|
||||
|
||||
sem_init(&g_trngdev.exclsem, 0, 1);
|
||||
sem_init(&g_trngdev.waitsem, 0, 0);
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&g_trngdev.waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Enable clocking to the TRNG */
|
||||
|
||||
sam_trng_enableclk();
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -1454,9 +1455,17 @@ struct i2c_master_s *sam_i2cbus_initialize(int bus)
|
||||
|
||||
priv->dev.ops = &g_twiops;
|
||||
|
||||
/* Initialize semaphores */
|
||||
|
||||
(void)sem_init(&priv->exclsem, 0, 1);
|
||||
(void)sem_init(&priv->waitsem, 0, 0);
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not
|
||||
* have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Perform repeatable TWIHS hardware initialization */
|
||||
|
||||
twi_hw_initialize(priv, frequency);
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/drivers/1wire.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
@@ -744,6 +745,12 @@ static inline void stm32_1wire_sem_init(FAR struct stm32_1wire_priv_s *priv)
|
||||
{
|
||||
sem_init(&priv->sem_excl, 0, 1);
|
||||
sem_init(&priv->sem_isr, 0, 0);
|
||||
|
||||
/* The sem_isr semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->sem_isr, SEM_PRIO_NONE);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
||||
@@ -49,8 +49,9 @@
|
||||
#include <semaphore.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/video/fb.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/video/fb.h>
|
||||
|
||||
#include <arch/chip/dma2d.h>
|
||||
#include <arch/board/board.h>
|
||||
@@ -2167,9 +2168,13 @@ int up_dma2dinitialize(void)
|
||||
|
||||
sem_init(&g_lock, 0, 1);
|
||||
|
||||
/* Initialize the semaphore for interrupt handling */
|
||||
/* Initialize the semaphore for interrupt handling. This waitsem
|
||||
* semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(g_interrupt.sem, 0, 0);
|
||||
sem_setprotocol(g_interrupt.sem, SEM_PRIO_NONE);
|
||||
|
||||
#ifdef CONFIG_STM32_DMA2D_L8
|
||||
/* Enable dma2d transfer and clut loading interrupts only */
|
||||
|
||||
@@ -84,8 +84,9 @@
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
@@ -784,8 +785,14 @@ static inline void stm32_i2c_sem_post(struct stm32_i2c_priv_s *priv)
|
||||
static inline void stm32_i2c_sem_init(FAR struct stm32_i2c_priv_s *priv)
|
||||
{
|
||||
sem_init(&priv->sem_excl, 0, 1);
|
||||
|
||||
#ifndef CONFIG_I2C_POLLED
|
||||
/* This semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&priv->sem_isr, 0, 0);
|
||||
sem_setprotocol(&priv->sem_isr, SEM_PRIO_NONE);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -91,8 +91,9 @@
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
@@ -792,8 +793,14 @@ static inline void stm32_i2c_sem_post(FAR struct stm32_i2c_priv_s *priv)
|
||||
static inline void stm32_i2c_sem_init(FAR struct stm32_i2c_priv_s *priv)
|
||||
{
|
||||
sem_init(&priv->sem_excl, 0, 1);
|
||||
|
||||
#ifndef CONFIG_I2C_POLLED
|
||||
/* This semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&priv->sem_isr, 0, 0);
|
||||
sem_setprotocol(&priv->sem_isr, SEM_PRIO_NONE);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -49,8 +49,9 @@
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/video/fb.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/video/fb.h>
|
||||
|
||||
#include <arch/chip/ltdc.h>
|
||||
#include <arch/chip/dma2d.h>
|
||||
@@ -1287,9 +1288,13 @@ static void stm32_global_configure(void)
|
||||
|
||||
sem_init(&g_lock, 0, 1);
|
||||
|
||||
/* Initialize the semaphore for interrupt handling */
|
||||
/* Initialize the semaphore for interrupt handling. This waitsem
|
||||
* semaphore is used for signaling and, hence, should not have priority
|
||||
* inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(g_interrupt.sem, 0, 0);
|
||||
sem_setprotocol(g_interrupt.sem, SEM_PRIO_NONE);
|
||||
|
||||
/* Attach LTDC interrupt vector */
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/usb/usb.h>
|
||||
#include <nuttx/usb/usbhost.h>
|
||||
#include <nuttx/usb/usbhost_devaddr.h>
|
||||
@@ -5091,6 +5092,12 @@ static inline void stm32_sw_initialize(FAR struct stm32_usbhost_s *priv)
|
||||
sem_init(&priv->pscsem, 0, 0);
|
||||
sem_init(&priv->exclsem, 0, 1);
|
||||
|
||||
/* The pscsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->pscsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Initialize the driver state data */
|
||||
|
||||
priv->smstate = SMSTATE_DETACHED;
|
||||
@@ -5106,8 +5113,15 @@ static inline void stm32_sw_initialize(FAR struct stm32_usbhost_s *priv)
|
||||
for (i = 0; i < STM32_MAX_TX_FIFOS; i++)
|
||||
{
|
||||
FAR struct stm32_chan_s *chan = &priv->chan[i];
|
||||
|
||||
chan->chidx = i;
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not
|
||||
* have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&chan->waitsem, 0, 0);
|
||||
sem_setprotocol(&chan->waitsem, SEM_PRIO_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/usb/usb.h>
|
||||
#include <nuttx/usb/usbhost.h>
|
||||
#include <nuttx/usb/usbhost_devaddr.h>
|
||||
@@ -5091,6 +5092,12 @@ static inline void stm32_sw_initialize(FAR struct stm32_usbhost_s *priv)
|
||||
sem_init(&priv->pscsem, 0, 0);
|
||||
sem_init(&priv->exclsem, 0, 1);
|
||||
|
||||
/* The pscsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->pscsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Initialize the driver state data */
|
||||
|
||||
priv->smstate = SMSTATE_DETACHED;
|
||||
@@ -5106,8 +5113,15 @@ static inline void stm32_sw_initialize(FAR struct stm32_usbhost_s *priv)
|
||||
for (i = 0; i < STM32_MAX_TX_FIFOS; i++)
|
||||
{
|
||||
FAR struct stm32_chan_s *chan = &priv->chan[i];
|
||||
|
||||
chan->chidx = i;
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not
|
||||
* have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&chan->waitsem, 0, 0);
|
||||
sem_setprotocol(&chan->waitsem, SEM_PRIO_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* arch/arm/src/stm32/stm32_sdio.c
|
||||
*
|
||||
* Copyright (C) 2009, 2011-2014 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2009, 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
|
||||
@@ -52,6 +52,7 @@
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/sdio.h>
|
||||
#include <nuttx/wqueue.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/mmcsd.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -2853,8 +2854,18 @@ FAR struct sdio_dev_s *sdio_initialize(int slotno)
|
||||
struct stm32_dev_s *priv = &g_sdiodev;
|
||||
|
||||
/* Initialize the SDIO slot structure */
|
||||
/* Initialize semaphores */
|
||||
|
||||
sem_init(&priv->waitsem, 0, 0);
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Create a watchdog timer */
|
||||
|
||||
priv->waitwdog = wd_create();
|
||||
DEBUGASSERT(priv->waitwdog);
|
||||
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/spi/spi.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
@@ -1719,12 +1720,18 @@ static void spi_bus_initialize(FAR struct stm32_spidev_s *priv)
|
||||
|
||||
sem_init(&priv->exclsem, 0, 1);
|
||||
|
||||
/* Initialize the SPI semaphores that is used to wait for DMA completion */
|
||||
|
||||
#ifdef CONFIG_STM32_SPI_DMA
|
||||
/* Initialize the SPI semaphores that is used to wait for DMA completion.
|
||||
* This semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&priv->rxsem, 0, 0);
|
||||
sem_init(&priv->txsem, 0, 0);
|
||||
|
||||
sem_setprotocol(&priv->rxsem, SEM_PRIO_NONE);
|
||||
sem_setprotocol(&priv->txsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Get DMA channels. NOTE: stm32_dmachannel() will always assign the DMA channel.
|
||||
* if the channel is not available, then stm32_dmachannel() will block and wait
|
||||
* until the channel becomes available. WARNING: If you have another device sharing
|
||||
|
||||
@@ -85,8 +85,9 @@
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
@@ -899,8 +900,14 @@ static inline void stm32_i2c_sem_post(FAR struct stm32_i2c_priv_s *priv)
|
||||
static inline void stm32_i2c_sem_init(FAR struct stm32_i2c_priv_s *priv)
|
||||
{
|
||||
sem_init(&priv->sem_excl, 0, 1);
|
||||
|
||||
#ifndef CONFIG_I2C_POLLED
|
||||
/* This semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&priv->sem_isr, 0, 0);
|
||||
sem_setprotocol(&priv->sem_isr, SEM_PRIO_NONE);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -84,8 +84,9 @@
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
@@ -786,8 +787,14 @@ static inline void stm32_i2c_sem_post(struct stm32_i2c_priv_s *priv)
|
||||
static inline void stm32_i2c_sem_init(FAR struct stm32_i2c_priv_s *priv)
|
||||
{
|
||||
sem_init(&priv->sem_excl, 0, 1);
|
||||
|
||||
#ifndef CONFIG_I2C_POLLED
|
||||
/* This semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&priv->sem_isr, 0, 0);
|
||||
sem_setprotocol(&priv->sem_isr, SEM_PRIO_NONE);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -231,9 +231,10 @@
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
@@ -1089,8 +1090,14 @@ static inline void stm32_i2c_sem_post(FAR struct i2c_master_s *dev)
|
||||
static inline void stm32_i2c_sem_init(FAR struct i2c_master_s *dev)
|
||||
{
|
||||
sem_init(&((struct stm32_i2c_inst_s *)dev)->priv->sem_excl, 0, 1);
|
||||
|
||||
#ifndef CONFIG_I2C_POLLED
|
||||
/* This semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&((struct stm32_i2c_inst_s *)dev)->priv->sem_isr, 0, 0);
|
||||
sem_setprotocol(&((struct stm32_i2c_inst_s *)dev)->priv->sem_isr, SEM_PRIO_NONE);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/usb/usb.h>
|
||||
#include <nuttx/usb/usbhost.h>
|
||||
#include <nuttx/usb/usbhost_devaddr.h>
|
||||
@@ -5089,6 +5090,12 @@ static inline void stm32_sw_initialize(FAR struct stm32_usbhost_s *priv)
|
||||
sem_init(&priv->pscsem, 0, 0);
|
||||
sem_init(&priv->exclsem, 0, 1);
|
||||
|
||||
/* The pscsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->pscsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Initialize the driver state data */
|
||||
|
||||
priv->smstate = SMSTATE_DETACHED;
|
||||
@@ -5104,8 +5111,15 @@ static inline void stm32_sw_initialize(FAR struct stm32_usbhost_s *priv)
|
||||
for (i = 0; i < STM32_MAX_TX_FIFOS; i++)
|
||||
{
|
||||
FAR struct stm32_chan_s *chan = &priv->chan[i];
|
||||
|
||||
chan->chidx = i;
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not
|
||||
* have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&chan->waitsem, 0, 0);
|
||||
sem_setprotocol(&chan->waitsem, SEM_PRIO_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/sdio.h>
|
||||
#include <nuttx/wqueue.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/mmcsd.h>
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
@@ -3214,8 +3215,18 @@ FAR struct sdio_dev_s *sdio_initialize(int slotno)
|
||||
}
|
||||
|
||||
/* Initialize the SDIO slot structure */
|
||||
/* Initialize semaphores */
|
||||
|
||||
sem_init(&priv->waitsem, 0, 0);
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->waitsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Create a watchdog timer */
|
||||
|
||||
priv->waitwdog = wd_create();
|
||||
DEBUGASSERT(priv->waitwdog);
|
||||
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/spi/spi.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
@@ -1665,16 +1666,22 @@ static void spi_bus_initialize(FAR struct stm32_spidev_s *priv)
|
||||
|
||||
spi_putreg(priv, STM32_SPI_CRCPR_OFFSET, 7);
|
||||
|
||||
/* Initialize the SPI semaphore that enforces mutually exclusive access */
|
||||
/* Initialize the SPI semaphore that enforces mutually exclusive access. */
|
||||
|
||||
sem_init(&priv->exclsem, 0, 1);
|
||||
|
||||
/* Initialize the SPI semaphores that is used to wait for DMA completion */
|
||||
|
||||
#ifdef CONFIG_STM32F7_SPI_DMA
|
||||
/* Initialize the SPI semaphores that is used to wait for DMA completion.
|
||||
* This semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&priv->rxsem, 0, 0);
|
||||
sem_init(&priv->txsem, 0, 0);
|
||||
|
||||
sem_setprotocol(&priv->rxsem, SEM_PRIO_NONE);
|
||||
sem_setprotocol(&priv->txsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Get DMA channels. NOTE: stm32_dmachannel() will always assign the DMA channel.
|
||||
* if the channel is not available, then stm32_dmachannel() will block and wait
|
||||
* until the channel becomes available. WARNING: If you have another device sharing
|
||||
|
||||
@@ -81,8 +81,9 @@
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/irq.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/i2c/i2c_master.h>
|
||||
|
||||
#include <arch/board/board.h>
|
||||
|
||||
@@ -843,8 +844,14 @@ static inline void stm32l4_i2c_sem_post(FAR struct stm32l4_i2c_priv_s *priv)
|
||||
static inline void stm32l4_i2c_sem_init(FAR struct stm32l4_i2c_priv_s *priv)
|
||||
{
|
||||
sem_init(&priv->sem_excl, 0, 1);
|
||||
|
||||
#ifndef CONFIG_I2C_POLLED
|
||||
/* This semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&priv->sem_isr, 0, 0);
|
||||
sem_setprotocol(&priv->sem_isr, SEM_PRIO_NONE);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/usb/usb.h>
|
||||
#include <nuttx/usb/usbhost.h>
|
||||
#include <nuttx/usb/usbhost_devaddr.h>
|
||||
@@ -5096,6 +5097,12 @@ static inline void stm32l4_sw_initialize(FAR struct stm32l4_usbhost_s *priv)
|
||||
sem_init(&priv->pscsem, 0, 0);
|
||||
sem_init(&priv->exclsem, 0, 1);
|
||||
|
||||
/* The pscsem semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_setprotocol(&priv->pscsem, SEM_PRIO_NONE);
|
||||
|
||||
/* Initialize the driver state data */
|
||||
|
||||
priv->smstate = SMSTATE_DETACHED;
|
||||
@@ -5111,8 +5118,15 @@ static inline void stm32l4_sw_initialize(FAR struct stm32l4_usbhost_s *priv)
|
||||
for (i = 0; i < STM32L4_MAX_TX_FIFOS; i++)
|
||||
{
|
||||
FAR struct stm32l4_chan_s *chan = &priv->chan[i];
|
||||
|
||||
chan->chidx = i;
|
||||
|
||||
/* The waitsem semaphore is used for signaling and, hence, should not
|
||||
* have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&chan->waitsem, 0, 0);
|
||||
sem_setprotocol(&chan->waitsem, SEM_PRIO_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
#include <nuttx/wdog.h>
|
||||
#include <nuttx/clock.h>
|
||||
#include <nuttx/kmalloc.h>
|
||||
#include <nuttx/semaphore.h>
|
||||
#include <nuttx/spi/qspi.h>
|
||||
|
||||
#include "up_internal.h"
|
||||
@@ -2501,10 +2502,12 @@ struct qspi_dev_s *stm32l4_qspi_initialize(int intf)
|
||||
}
|
||||
|
||||
/* Initialize the QSPI semaphore that is used to wake up the waiting
|
||||
* thread when the DMA transfer completes.
|
||||
* thread when the DMA transfer completes. This semaphore is used for
|
||||
* signaling and, hence, should not have priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&priv->dmawait, 0, 0);
|
||||
sem_setprotocol(&priv->dmawait, SEM_PRIO_NONE);
|
||||
|
||||
/* Create a watchdog time to catch DMA timeouts */
|
||||
|
||||
@@ -2526,10 +2529,13 @@ struct qspi_dev_s *stm32l4_qspi_initialize(int intf)
|
||||
goto errout_with_dmadog;
|
||||
}
|
||||
|
||||
/* Initialize the semaphore that blocks until the operation completes */
|
||||
/* Initialize the semaphore that blocks until the operation completes.
|
||||
* This semaphore is used for signaling and, hence, should not have
|
||||
* priority inheritance enabled.
|
||||
*/
|
||||
|
||||
sem_init(&priv->op_sem, 0, 0);
|
||||
|
||||
sem_setprotocol(&priv->op_sem, SEM_PRIO_NONE);
|
||||
#endif
|
||||
|
||||
/* Perform hardware initialization. Puts the QSPI into an active
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user