BPF [SECURITY & LSM] (Security Audit and Enforcement using BPF)
S: Maintained
F: Documentation/bpf/prog_lsm.rst
F: kernel/bpf/cgroup.c
BPF [TOOLING] (bpftool)
S: Maintained
F: kernel/bpf/disasm.*
S: Maintained
Q: http://patchwork.kernel.org/project/dm-devel/list/
DEVICE-MAPPER VDO TARGET
S: Maintained
F: Documentation/admin-guide/device-mapper/vdo*.rst
S: Maintained
W: https://erofs.docs.kernel.org
S: Maintained
F: drivers/hid/hid-logitech-hidpp.c
- HIGH-RESOLUTION TIMERS, CLOCKEVENTS
+ HIGH-RESOLUTION TIMERS, TIMER WHEEL, CLOCKEVENTS
S: Maintained
F: Documentation/timers/
F: include/linux/clockchips.h
F: include/linux/hrtimer.h
+ F: include/linux/timer.h
F: kernel/time/clockevents.c
F: kernel/time/hrtimer.c
- F: kernel/time/timer_*.c
+ F: kernel/time/timer.c
+ F: kernel/time/timer_list.c
+ F: kernel/time/timer_migration.*
+ F: tools/testing/selftests/timers/
HIGH-SPEED SCC DRIVER FOR AX.25
MARVELL MWIFIEX WIRELESS DRIVER
S: Odd Fixes
F: drivers/net/wireless/marvell/mwifiex/
MELLANOX ETHERNET DRIVER (mlx5e)
S: Supported
W: http://www.mellanox.com
MELLANOX MLX5 core VPI driver
S: Supported
F: include/uapi/linux/nsm.h
NOHZ, DYNTICKS SUPPORT
S: Maintained
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/nohz
PARAVIRT_OPS INTERFACE
- R: Ajay Kaher <akaher@vmware.com>
- R: Alexey Makhalov <amakhalov@vmware.com>
- R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com>
+ R: Ajay Kaher <ajay.kaher@broadcom.com>
+ R: Alexey Makhalov <alexey.amakhalov@broadcom.com>
+ R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
S: Supported
F: include/linux/pnp.h
POSIX CLOCKS and TIMERS
S: Maintained
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
F: fs/timerfd.c
F: include/linux/time_namespace.h
- F: include/linux/timer*
+ F: include/linux/timerfd.h
+ F: include/uapi/linux/time.h
+ F: include/uapi/linux/timerfd.h
F: include/trace/events/timer*
- F: kernel/time/*timer*
+ F: kernel/time/itimer.c
+ F: kernel/time/posix-*
F: kernel/time/namespace.c
POWER MANAGEMENT CORE
S: Maintained
+ T: git https://github.com/pkshih/rtw.git
F: drivers/net/wireless/realtek/rtlwifi/
REALTEK WIRELESS DRIVER (rtw88)
S: Maintained
+ T: git https://github.com/pkshih/rtw.git
F: drivers/net/wireless/realtek/rtw88/
REALTEK WIRELESS DRIVER (rtw89)
S: Maintained
+ T: git https://github.com/pkshih/rtw.git
F: drivers/net/wireless/realtek/rtw89/
REDPINE WIRELESS DRIVER
F: Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml
F: drivers/i2c/busses/i2c-emev2.c
- RENESAS ETHERNET DRIVERS
+ RENESAS ETHERNET AVB DRIVER
- F: Documentation/devicetree/bindings/net/renesas,*.yaml
- F: drivers/net/ethernet/renesas/
- F: include/linux/sh_eth.h
+ F: Documentation/devicetree/bindings/net/renesas,etheravb.yaml
+ F: drivers/net/ethernet/renesas/Kconfig
+ F: drivers/net/ethernet/renesas/Makefile
+ F: drivers/net/ethernet/renesas/ravb*
+
+ RENESAS ETHERNET SWITCH DRIVER
+ F: Documentation/devicetree/bindings/net/renesas,*ether-switch.yaml
+ F: drivers/net/ethernet/renesas/Kconfig
+ F: drivers/net/ethernet/renesas/Makefile
+ F: drivers/net/ethernet/renesas/rcar_gen4*
+ F: drivers/net/ethernet/renesas/rswitch*
RENESAS IDT821034 ASoC CODEC
F: Documentation/devicetree/bindings/i2c/renesas,rzv2m.yaml
F: drivers/i2c/busses/i2c-rzv2m.c
+ RENESAS SUPERH ETHERNET DRIVER
+ F: Documentation/devicetree/bindings/net/renesas,ether.yaml
+ F: drivers/net/ethernet/renesas/Kconfig
+ F: drivers/net/ethernet/renesas/Makefile
+ F: drivers/net/ethernet/renesas/sh_eth*
+ F: include/linux/sh_eth.h
+
RENESAS USB PHY DRIVER
S: Maintained
+ T: git https://github.com/pkshih/rtw.git
F: drivers/net/wireless/realtek/rtl818x/rtl8187/
RTL8XXXU WIRELESS DRIVER (rtl8xxxu)
S: Maintained
+ T: git https://github.com/pkshih/rtw.git
F: drivers/net/wireless/realtek/rtl8xxxu/
RTRS TRANSPORT DRIVERS
F: Documentation/devicetree/bindings/sound/tas2562.yaml
F: Documentation/devicetree/bindings/sound/tas2770.yaml
F: Documentation/devicetree/bindings/sound/tas27xx.yaml
-F: Documentation/devicetree/bindings/sound/ti,pcm1681.txt
+F: Documentation/devicetree/bindings/sound/ti,pcm1681.yaml
F: Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml
F: Documentation/devicetree/bindings/sound/ti,tlv320*.yaml
F: Documentation/devicetree/bindings/sound/tlv320adcx140.yaml
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
F: include/linux/clocksource.h
F: include/linux/time.h
+ F: include/linux/timekeeper_internal.h
+ F: include/linux/timekeeping.h
F: include/linux/timex.h
F: include/uapi/linux/time.h
F: include/uapi/linux/timex.h
F: kernel/time/alarmtimer.c
- F: kernel/time/clocksource.c
- F: kernel/time/ntp.c
- F: kernel/time/time*.c
+ F: kernel/time/clocksource*
+ F: kernel/time/ntp*
+ F: kernel/time/time.c
+ F: kernel/time/timeconst.bc
+ F: kernel/time/timeconv.c
+ F: kernel/time/timecounter.c
+ F: kernel/time/timekeeping*
+ F: kernel/time/time_test.c
F: tools/testing/selftests/timers/
TIPC NETWORK LAYER
W: https://kernsec.org/wiki/index.php/Linux_Kernel_Integrity
Q: https://patchwork.kernel.org/project/linux-integrity/list/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git
+ F: Documentation/devicetree/bindings/tpm/
F: drivers/char/tpm/
TPS546D24 DRIVER
F: drivers/misc/vmw_balloon.c
VMWARE HYPERVISOR INTERFACE
- M: Ajay Kaher <akaher@vmware.com>
- M: Alexey Makhalov <amakhalov@vmware.com>
- R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com>
+ M: Ajay Kaher <ajay.kaher@broadcom.com>
+ M: Alexey Makhalov <alexey.amakhalov@broadcom.com>
+ R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
S: Supported
F: arch/x86/kernel/cpu/vmware.c
VMWARE PVRDMA DRIVER
- M: Bryan Tan <bryantan@vmware.com>
- M: Vishnu Dasa <vdasa@vmware.com>
- R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com>
+ M: Bryan Tan <bryan-bt.tan@broadcom.com>
+ M: Vishnu Dasa <vishnu.dasa@broadcom.com>
+ R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
S: Supported
F: drivers/infiniband/hw/vmw_pvrdma/
VMWARE PVSCSI DRIVER
- M: Vishal Bhakta <vbhakta@vmware.com>
- R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com>
+ M: Vishal Bhakta <vishal.bhakta@broadcom.com>
+ R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
S: Supported
F: drivers/scsi/vmw_pvscsi.c
F: drivers/scsi/vmw_pvscsi.h
VMWARE VIRTUAL PTP CLOCK DRIVER
- M: Jeff Sipek <jsipek@vmware.com>
- R: Ajay Kaher <akaher@vmware.com>
- R: Alexey Makhalov <amakhalov@vmware.com>
- R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com>
+ M: Nick Shi <nick.shi@broadcom.com>
+ R: Ajay Kaher <ajay.kaher@broadcom.com>
+ R: Alexey Makhalov <alexey.amakhalov@broadcom.com>
+ R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
S: Supported
F: drivers/ptp/ptp_vmw.c
VMWARE VMCI DRIVER
- M: Bryan Tan <bryantan@vmware.com>
- M: Vishnu Dasa <vdasa@vmware.com>
- R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com>
+ M: Bryan Tan <bryan-bt.tan@broadcom.com>
+ M: Vishnu Dasa <vishnu.dasa@broadcom.com>
+ R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
S: Supported
F: drivers/misc/vmw_vmci/
F: drivers/input/mouse/vmmouse.h
VMWARE VMXNET3 ETHERNET DRIVER
- M: Ronak Doshi <doshir@vmware.com>
- R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com>
+ M: Ronak Doshi <ronak.doshi@broadcom.com>
+ R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
S: Supported
F: drivers/net/vmxnet3/
VMWARE VSOCK VMCI TRANSPORT DRIVER
- M: Bryan Tan <bryantan@vmware.com>
- M: Vishnu Dasa <vdasa@vmware.com>
- R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com>
+ M: Bryan Tan <bryan-bt.tan@broadcom.com>
+ M: Vishnu Dasa <vishnu.dasa@broadcom.com>
+ R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
S: Supported
F: net/vmw_vsock/vmci_transport*
static void spi_dev_set_name(struct spi_device *spi)
{
- struct acpi_device *adev = ACPI_COMPANION(&spi->dev);
+ struct device *dev = &spi->dev;
+ struct fwnode_handle *fwnode = dev_fwnode(dev);
- if (adev) {
- dev_set_name(&spi->dev, "spi-%s", acpi_dev_name(adev));
+ if (is_acpi_device_node(fwnode)) {
+ dev_set_name(dev, "spi-%s", acpi_dev_name(to_acpi_device_node(fwnode)));
+ return;
+ }
+
+ if (is_software_node(fwnode)) {
+ dev_set_name(dev, "spi-%pfwP", fwnode);
return;
}
proxy->controller_data = chip->controller_data;
proxy->controller_state = NULL;
/*
- * spi->chip_select[i] gives the corresponding physical CS for logical CS i
- * logical CS number is represented by setting the ith bit in spi->cs_index_mask
- * So, for example, if spi->cs_index_mask = 0x01 then logical CS number is 0 and
- * spi->chip_select[0] will give the physical CS.
- * By default spi->chip_select[0] will hold the physical CS number so, set
- * spi->cs_index_mask as 0x01.
+ * By default spi->chip_select[0] will hold the physical CS number,
+ * so set bit 0 in spi->cs_index_mask.
*/
- proxy->cs_index_mask = 0x01;
+ proxy->cs_index_mask = BIT(0);
if (chip->swnode) {
status = device_add_software_node(&proxy->dev, chip->swnode);
}
/*-------------------------------------------------------------------------*/
+#define spi_for_each_valid_cs(spi, idx) \
+ for (idx = 0; idx < SPI_CS_CNT_MAX; idx++) \
+ if (!(spi->cs_index_mask & BIT(idx))) {} else
+
static inline bool spi_is_last_cs(struct spi_device *spi)
{
u8 idx;
bool last = false;
- for (idx = 0; idx < SPI_CS_CNT_MAX; idx++) {
- if (spi->cs_index_mask & BIT(idx)) {
- if (spi->controller->last_cs[idx] == spi_get_chipselect(spi, idx))
- last = true;
- }
+ spi_for_each_valid_cs(spi, idx) {
+ if (spi->controller->last_cs[idx] == spi_get_chipselect(spi, idx))
+ last = true;
}
return last;
}
+static void spi_toggle_csgpiod(struct spi_device *spi, u8 idx, bool enable, bool activate)
+{
+ /*
+ * Historically ACPI has no means of the GPIO polarity and
+ * thus the SPISerialBus() resource defines it on the per-chip
+ * basis. In order to avoid a chain of negations, the GPIO
+ * polarity is considered being Active High. Even for the cases
+ * when _DSD() is involved (in the updated versions of ACPI)
+ * the GPIO CS polarity must be defined Active High to avoid
+ * ambiguity. That's why we use enable, that takes SPI_CS_HIGH
+ * into account.
+ */
+ if (has_acpi_companion(&spi->dev))
+ gpiod_set_value_cansleep(spi_get_csgpiod(spi, idx), !enable);
+ else
+ /* Polarity handled by GPIO library */
+ gpiod_set_value_cansleep(spi_get_csgpiod(spi, idx), activate);
+
+ if (activate)
+ spi_delay_exec(&spi->cs_setup, NULL);
+ else
+ spi_delay_exec(&spi->cs_inactive, NULL);
+}
static void spi_set_cs(struct spi_device *spi, bool enable, bool force)
{
if (spi_is_csgpiod(spi)) {
if (!(spi->mode & SPI_NO_CS)) {
- /*
- * Historically ACPI has no means of the GPIO polarity and
- * thus the SPISerialBus() resource defines it on the per-chip
- * basis. In order to avoid a chain of negations, the GPIO
- * polarity is considered being Active High. Even for the cases
- * when _DSD() is involved (in the updated versions of ACPI)
- * the GPIO CS polarity must be defined Active High to avoid
- * ambiguity. That's why we use enable, that takes SPI_CS_HIGH
- * into account.
- */
- for (idx = 0; idx < SPI_CS_CNT_MAX; idx++) {
- if ((spi->cs_index_mask & BIT(idx)) && spi_get_csgpiod(spi, idx)) {
- if (has_acpi_companion(&spi->dev))
- gpiod_set_value_cansleep(spi_get_csgpiod(spi, idx),
- !enable);
- else
- /* Polarity handled by GPIO library */
- gpiod_set_value_cansleep(spi_get_csgpiod(spi, idx),
- activate);
-
- if (activate)
- spi_delay_exec(&spi->cs_setup, NULL);
- else
- spi_delay_exec(&spi->cs_inactive, NULL);
- }
+ spi_for_each_valid_cs(spi, idx) {
+ if (spi_get_csgpiod(spi, idx))
+ spi_toggle_csgpiod(spi, idx, enable, activate);
}
}
/* Some SPI masters need both GPIO CS & slave_select */
* to the same values as *xferp, so tx_buf, rx_buf and len
* are all identical (as well as most others)
* so we just have to fix up len and the pointers.
- *
- * This also includes support for the depreciated
- * spi_message.is_dma_mapped interface.
*/
/*
/* Update rx_buf, tx_buf and DMA */
if (xfers[i].rx_buf)
xfers[i].rx_buf += offset;
- if (xfers[i].rx_dma)
- xfers[i].rx_dma += offset;
if (xfers[i].tx_buf)
xfers[i].tx_buf += offset;
- if (xfers[i].tx_dma)
- xfers[i].tx_dma += offset;
/* Update length */
xfers[i].len = min(maxsize, xfers[i].len - offset);