zephyr/drivers
Andy Ross 662b0bf765 drivers/timer: Add x86 APIC TSC_DEADLINE driver
Modern hardware all supports a TSC_DEADLINE mode for the APIC timer,
where the same GHz-scale 64 bit TSC used for performance monitoring
becomes the free-running counter used for cpu-local timer interrupts.
Being a free running counter that does not need to be reset, it will
not lose time in an interrupt.  Being 64 bit, it needs no rollover or
clamping logic in the driver when presented with a 32 bit tick count.
Being a proper comparator, it will correctly trigger interrupts for
times set "in the past" and thus needs no minimum/clamping logic.  The
counter is synchronized across the system architecturally (modulo one
burp where firmware likes to change the adjustment value) so usage is
SMP-safe by default.  Access to the 64 bit counter and comparator
value are single-instruction atomics even on 32 bit systems, so it
beats even the RISC-V machine timer in complexity (which was our
reigning champ for "simplest timer driver").

Really this is just ideal for Zephyr.  So rather than try to add
support for it to the existing APIC driver and increase complexity,
make this a new standalone driver instead.  All modern hardware has
what it needs.  The sole gotcha is that it's not easily emulatable
(qemu supports it only under kvm where they can freeload on the host
TSC) so it can be exercised only on hardware platforms right now.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-05-07 16:48:58 -04:00
..
adc drivers: adc: add ADC emulator 2021-05-07 15:27:37 +02:00
audio drivers/audio: Kconfig: Fix dmic INIT_PRIORITY default value 2021-05-04 08:33:46 -05:00
bluetooth drivers: Bluetooth: Update H5 driver to new delayable work API. 2021-05-05 19:44:09 -04:00
can drivers: can: Implement stm32fd driver 2021-05-07 12:36:10 -05:00
clock_control drivers/clock_control: stm32: rename macros to avoid z_ namespace 2021-05-06 07:36:05 -05:00
console drivers: console: remove usage of device_pm_control_nop 2021-04-28 10:54:58 -04:00
counter counter: callback null check to use NULL instead of numeric zero 2021-04-29 07:16:37 -04:00
crypto drivers: crypto: remove usage of device_pm_control_nop 2021-04-28 10:54:58 -04:00
dac drivers: dac: added driver for Microchip MCP4725 2021-05-06 11:07:33 -05:00
debug
disk drivers: disk: remove usage of device_pm_control_nop 2021-04-28 16:41:29 -04:00
display pm: rename PM_DEVICE_GET/SET_POWER_STATE to PM_DEVICE_STATE_GET/SET 2021-05-05 18:35:49 -04:00
dma drivers/dma: stm32 fix dmamux request id valid check 2021-05-06 09:28:33 -05: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 edac: ibecc: Add supported SKU device IDs 2021-03-22 13:05:01 -04:00
eeprom drivers: eeprom: remove usage of device_pm_control_nop 2021-04-28 10:55:22 -04:00
entropy pm: rename PM_DEVICE_GET/SET_POWER_STATE to PM_DEVICE_STATE_GET/SET 2021-05-05 18:35:49 -04:00
espi drivers: espi: remove usage of device_pm_control_nop 2021-04-28 10:55:22 -04:00
ethernet pm: rename PM_DEVICE_GET/SET_POWER_STATE to PM_DEVICE_STATE_GET/SET 2021-05-05 18:35:49 -04:00
flash drivers: flash: Enable FlexSPI XIP on mimxrt685_evk. 2021-05-07 15:44:19 -05:00
gpio api: gpio: do not support INT flags in gpio_pin_configure 2021-05-07 12:42:08 -05:00
hwinfo drivers: hwinfo: Remove invalid comparison 2021-03-26 07:13:13 -04:00
i2c drivers: i2c_nrfx_twi: Add recover when I2C transfer timeout 2021-05-07 10:24:41 -05:00
i2s drivers: i2s: i2s_sam_ssc: Fix build issue 2021-05-05 13:01:01 -05:00
ieee802154 drivers: ieee802154: Udpate nRF IEEE 802.15.4 radio driver 2021-05-06 08:46:47 -05:00
interrupt_controller drivers: interrupt_controller: intc_shared: cond. forward sense cell 2021-05-07 12:41:04 -05:00
ipm ipm: cavs: (cosmetic) fix indentation 2021-05-07 12:44:34 -04:00
kscan drivers: kscan: remove usage of device_pm_control_nop 2021-04-28 11:25:42 -04:00
led pm: rename PM_DEVICE_GET/SET_POWER_STATE to PM_DEVICE_STATE_GET/SET 2021-05-05 18:35:49 -04:00
led_strip drivers: led_strip: remove usage of device_pm_control_nop 2021-04-28 11:25:42 -04:00
lora drivers: lora: remove usage of device_pm_control_nop 2021-04-28 11:25:42 -04:00
memc drivers: memc: Update driver to support XIP on mimxrt685_evk. 2021-05-07 15:44:19 -05:00
misc drv: display: Initial FT800 display driver 2021-03-19 19:05:53 +01:00
modem drivers: modem: ublox-sara-r4: make reset pin optional 2021-05-06 09:44:19 -05:00
net drivers: net: remove usage of device_pm_control_nop 2021-04-28 12:25:24 -04:00
neural_net drivers: neural_net: remove usage of device_pm_control_nop 2021-04-28 12:25:24 -04:00
pcie drivers: pcie: remove usage of device_pm_control_nop 2021-04-28 12:25:24 -04:00
peci drivers: peci: remove usage of device_pm_control_nop 2021-04-28 12:25:24 -04:00
pinmux drivers/pinmux: stm32: Enable PM_DEVICE_RUNTIME services 2021-05-06 14:31:13 -04:00
pm_cpu_ops drivers: pm_cpu_ops: remove usage of device_pm_control_nop 2021-04-28 16:43:29 -04:00
ps2 drivers: ps2: remove usage of device_pm_control_nop 2021-04-28 16:43:29 -04:00
ptp_clock include: Move ptp_clock.h to drivers/ptp_clock.h 2021-03-25 10:09:33 +02:00
pwm pm: rename PM_DEVICE_GET/SET_POWER_STATE to PM_DEVICE_STATE_GET/SET 2021-05-05 18:35:49 -04:00
regulator drivers: regulator: remove usage of device_pm_control_nop 2021-04-28 16:43:29 -04:00
sensor drivers: sensors: smart-battery with SBS 1.1 compliant fuel gauge 2021-05-07 07:55:23 -05:00
serial drivers: serial: add Renesas R-Car driver 2021-05-07 13:08:48 +02:00
spi drivers: spi: sifive: fix bug of transferring multiple bufs 2021-05-06 07:41:16 -05:00
timer drivers/timer: Add x86 APIC TSC_DEADLINE driver 2021-05-07 16:48:58 -04:00
usb drivers: usb_dc_nrfx: add attached event delay 2021-04-29 09:55:28 -04: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 power: move reboot functionality to os lib 2021-04-28 20:34:00 -04:00
wifi drivers: wifi: esp: stop using pkt->work in TX path 2021-05-07 13:10:01 +02:00
CMakeLists.txt disk: move disk and sdmmc controller drivers to drivers/disk 2021-03-23 12:16:01 +01:00
Kconfig disk: move disk and sdmmc controller drivers to drivers/disk 2021-03-23 12:16:01 +01:00