zephyr/drivers
Dino Li ce7c7bb5f9 it8xxx2: intc: protect interrupt enable registers of soc
Because these two functions are called from threads and ISR.
And they run a bit-wise OR operation on the interrupt registers.
So protect them to prevent race condition between thread and ISR
context where causing an interrupt won't enable as expected.

eg.
- Pseudo code of thread enable IER1's bit1:
1. load word from IER1 (0x40) and write into CPU register S1
   => S1=0x40
2. Or S1's bit1
   => S1=0x42
(But if an interrupt is triggered here)
3. Store word to IER1 from S1
   => IER1=0x42
(IER1 will be 0x42 not 0x43, IER1's bit0 is disable again due to the
race condition above)

-Pseudo code of ISR enable IER1's bit0
1. load word from IER1 (0x40) write into CPU register S2
   => S2=0x40
2. Or S2's bit0
   => S2=0x41
3. Store word to IER1 from S2
   => IER1=0x41
4. Go back to thread.

Signed-off-by: Dino Li <Dino.Li@ite.com.tw>
2021-07-20 20:00:39 -04:00
..
adc driver: adc: an adc driver for rt1170 2021-07-20 13:15:58 -05:00
audio drivers/audio: Kconfig: Fix dmic INIT_PRIORITY default value 2021-05-04 08:33:46 -05:00
bluetooth drivers: bluetooth: hci driver for stm32wb includes clock control 2021-06-18 07:59:48 -05:00
cache cache: Introduce external cache controller system support 2021-05-08 07:00:33 +02:00
can drivers: can: Kconfig.rcar: Make options depend on its driver 2021-06-28 10:40:18 -05:00
clock_control drivers: clock_control_nrf: Add configuration of HFCLKAUDIO frequency 2021-07-20 10:13:56 +03:00
console drivers: console: update USB_UART_CONSOLE description 2021-07-19 04:02:07 -04:00
counter drivers: counter: Add counter for rt600 2021-07-16 18:56:15 -04:00
crypto drivers: crypto: remove usage of device_pm_control_nop 2021-04-28 10:54:58 -04:00
dac drivers/pinmux: stm32: Move stm32 driver from stm32/ 2021-06-11 08:04:39 -05:00
debug tracing: fix conflict with RTT locking 2021-05-25 07:36:38 -05:00
disk disk: Add support for MCUs with SDIO drivers. 2021-07-16 18:57:17 -04:00
display drivers: display: ili9xxx: remove unnecessary casts 2021-07-14 13:19:32 -05:00
dma drivers/dma: STM32: Initialising DMA_InitStruct with 0 for stm32l5xx 2021-07-10 12:43:19 -04:00
ec_host_cmd_periph drivers: ec_host_cmd_periph: remove usage of device_pm_control_nop 2021-04-28 10:55:22 -04:00
edac drivers: edac: Fix PCIe Kconfig dependency 2021-07-12 20:02:00 -04:00
eeprom drivers: eeprom: at2x: convert to new DT helper macros 2021-06-08 16:09:39 +02:00
entropy drivers: entropy: add support for stm32wl and stm32g0 2021-07-13 09:37:48 -04:00
espi drivers: npcx: convert NPCX drivers clock client to DEVICE_DT_GET 2021-06-27 23:02:39 -04:00
ethernet drivers: eth: sam: Replace constants by devicetree values 2021-07-16 21:34:43 -04:00
flash dts: Introduce DT_STRING_TOKEN and DT_STRING_UPPER_TOKEN 2021-07-15 18:12:51 -05:00
gpio drivers: gpio: Refactor mcux lpc driver to use DT_INST_FOREACH 2021-07-19 20:00:54 -04:00
hwinfo drivers: hwinfo: add NXP MCUX RCM hwinfo driver 2021-07-08 09:33:32 -05:00
i2c drivers: i2c: rcar: Fix possible compiler warning 2021-07-19 17:54:38 +02:00
i2s soc: atmel_sam: Add _INST to ATMEL_SAM_DT_PIN* macros 2021-06-14 09:50:41 -05:00
ieee802154 drivers: ieee802154: align with API changes 2021-07-19 18:15:56 +03:00
interrupt_controller it8xxx2: intc: protect interrupt enable registers of soc 2021-07-20 20:00:39 -04:00
ipm ipm: cavs: (cosmetic) fix indentation 2021-05-07 12:44:34 -04:00
kscan drivers: ht16k33: convert keyscan driver from gpio API to kscan API 2021-06-18 11:22:40 +02:00
led pm: remove callback from control function 2021-07-13 09:36:45 -04:00
led_strip led_strip: ws2812: claim compatibility with Everlight B1414 2021-07-20 13:35:02 +02:00
lora drivers: sx126x: add support for the stm32wl chip 2021-07-15 21:30:28 -04:00
memc drivers: stm32-fmc: enable MEMC_STM32 default based on dt 2021-06-29 11:30:35 -04:00
misc
modem drivers: modem: operate on device pointers instead of names 2021-07-15 11:48:00 -04:00
net drivers: net: ppp: fix removing CRC16 from packet 2021-07-15 06:54:33 -04:00
neural_net drivers: neural_net: remove usage of device_pm_control_nop 2021-04-28 12:25:24 -04:00
pcie pcie: msi: Map only actual table 2021-07-08 14:36:32 -04:00
peci drivers: peci: remove usage of device_pm_control_nop 2021-04-28 12:25:24 -04:00
pinmux drivers/pinmux: stm32: Group gpio devices usability checks 2021-07-16 07:21:07 -04:00
pm_cpu_ops driver: pm_cpu_ops: change PM_CPU_OPS_PSCI's dependency 2021-07-13 09:30:29 -04:00
ps2 drivers: PS/2: npcx: Replace device_get_binding with DEVICE_DT_GET 2021-07-02 15:41:28 -04:00
ptp_clock
pwm pm: remove callback from control function 2021-07-13 09:36:45 -04:00
regulator drivers: regulator: remove usage of device_pm_control_nop 2021-04-28 16:43:29 -04:00
sensor drivers: sensors: Add driver for LM75 2021-07-20 16:15:32 -05:00
serial drivers: serial: nrfx_uarte: Fix race condition in async isr 2021-07-20 13:31:25 +02:00
spi esp32: drivers: interrupt_controller: review SPI interrupt usage 2021-07-16 07:19:28 -04:00
syscon drivers: syscon: Add generic syscon API 2021-07-16 21:31:38 -04:00
timer timer: hpet: convert register access to functions 2021-07-20 13:35:14 +02:00
usb drivers: usb_dc_mcux_ehci: use K_NO_WAIT in k_heap_alloc() 2021-07-14 13:05:18 -05:00
video drivers: video: remove usage of device_pm_control_nop 2021-04-28 12:25:39 -04:00
virtualization drivers: virtualization: remove usage of device_pm_control_nop 2021-04-28 12:25:39 -04:00
watchdog esp32: drivers: interrupt_controller: review WDT interrupt usage 2021-07-16 07:19:28 -04:00
wifi driver: wifi: add esp event task name 2021-07-16 18:59:57 -04:00
CMakeLists.txt drivers: syscon: Add generic syscon API 2021-07-16 21:31:38 -04:00
Kconfig drivers: syscon: Add generic syscon API 2021-07-16 21:31:38 -04:00