You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
Merge 5.10.75 into android12-5.10-lts
Changes in 5.10.75 ALSA: usb-audio: Add quirk for VF0770 ALSA: pcm: Workaround for a wrong offset in SYNC_PTR compat ioctl ALSA: seq: Fix a potential UAF by wrong private_free call order ALSA: hda/realtek: Enable 4-speaker output for Dell Precision 5560 laptop ALSA: hda - Enable headphone mic on Dell Latitude laptops with ALC3254 ALSA: hda/realtek: Complete partial device name to avoid ambiguity ALSA: hda/realtek: Add quirk for Clevo X170KM-G ALSA: hda/realtek - ALC236 headset MIC recording issue ALSA: hda/realtek: Add quirk for TongFang PHxTxX1 ALSA: hda/realtek: Fix for quirk to enable speaker output on the Lenovo 13s Gen2 ALSA: hda/realtek: Fix the mic type detection issue for ASUS G551JW nds32/ftrace: Fix Error: invalid operands (*UND* and *UND* sections) for `^' s390: fix strrchr() implementation clk: socfpga: agilex: fix duplicate s2f_user0_clk csky: don't let sigreturn play with priveleged bits of status register csky: Fixup regs.sr broken in ptrace arm64/hugetlb: fix CMA gigantic page order for non-4K PAGE_SIZE drm/msm: Avoid potential overflow in timeout_to_jiffies() btrfs: unlock newly allocated extent buffer after error btrfs: deal with errors when replaying dir entry during log replay btrfs: deal with errors when adding inode reference during log replay btrfs: check for error when looking up inode during dir entry replay btrfs: update refs for any root except tree log roots btrfs: fix abort logic in btrfs_replace_file_extents x86/resctrl: Free the ctrlval arrays when domain_setup_mon_state() fails mei: me: add Ice Lake-N device id. USB: xhci: dbc: fix tty registration race xhci: guard accesses to ep_state in xhci_endpoint_reset() xhci: Fix command ring pointer corruption while aborting a command xhci: Enable trust tx length quirk for Fresco FL11 USB controller cb710: avoid NULL pointer subtraction efi/cper: use stack buffer for error record decoding efi: Change down_interruptible() in virt_efi_reset_system() to down_trylock() usb: musb: dsps: Fix the probe error path Input: xpad - add support for another USB ID of Nacon GC-100 USB: serial: qcserial: add EM9191 QDL support USB: serial: option: add Quectel EC200S-CN module support USB: serial: option: add Telit LE910Cx composition 0x1204 USB: serial: option: add prod. id for Quectel EG91 misc: fastrpc: Add missing lock before accessing find_vma() virtio: write back F_VERSION_1 before validate EDAC/armada-xp: Fix output of uncorrectable error counter nvmem: Fix shift-out-of-bound (UBSAN) with byte size cells x86/Kconfig: Do not enable AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT automatically powerpc/xive: Discard disabled interrupts in get_irqchip_state() iio: adc: aspeed: set driver data when adc probe. drivers: bus: simple-pm-bus: Add support for probing simple bus only devices driver core: Reject pointless SYNC_STATE_ONLY device links iio: adc: ad7192: Add IRQ flag iio: adc: ad7780: Fix IRQ flag iio: adc: ad7793: Fix IRQ flag iio: adc128s052: Fix the error handling path of 'adc128_probe()' iio: adc: max1027: Fix wrong shift with 12-bit devices iio: mtk-auxadc: fix case IIO_CHAN_INFO_PROCESSED iio: light: opt3001: Fixed timeout error when 0 lux iio: adc: max1027: Fix the number of max1X31 channels iio: ssp_sensors: add more range checking in ssp_parse_dataframe() iio: ssp_sensors: fix error code in ssp_print_mcu_debug() iio: dac: ti-dac5571: fix an error code in probe() tee: optee: Fix missing devices unregister during optee_remove ARM: dts: bcm2711-rpi-4-b: Fix usb's unit address ARM: dts: bcm2711: fix MDIO #address- and #size-cells ARM: dts: bcm2711-rpi-4-b: fix sd_io_1v8_reg regulator states ARM: dts: bcm2711-rpi-4-b: Fix pcie0's unit address formatting nvme-pci: Fix abort command id sctp: account stream padding length for reconf chunk gpio: pca953x: Improve bias setting net: arc: select CRC32 net: korina: select CRC32 net/mlx5e: Fix memory leak in mlx5_core_destroy_cq() error path net/mlx5e: Mutually exclude RX-FCS and RX-port-timestamp net: stmmac: fix get_hw_feature() on old hardware net: dsa: microchip: Added the condition for scheduling ksz_mib_read_work net: encx24j600: check error in devm_regmap_init_encx24j600 ethernet: s2io: fix setting mac address during resume vhost-vdpa: Fix the wrong input in config_cb nfc: fix error handling of nfc_proto_register() NFC: digital: fix possible memory leak in digital_tg_listen_mdaa() NFC: digital: fix possible memory leak in digital_in_send_sdd_req() pata_legacy: fix a couple uninitialized variable bugs ata: ahci_platform: fix null-ptr-deref in ahci_platform_enable_regulators() mlxsw: thermal: Fix out-of-bounds memory accesses platform/mellanox: mlxreg-io: Fix argument base in kstrtou32() call platform/mellanox: mlxreg-io: Fix read access of n-bytes size attributes spi: bcm-qspi: clear MSPI spifie interrupt during probe drm/panel: olimex-lcd-olinuxino: select CRC32 drm/edid: In connector_bad_edid() cap num_of_ext by num_blocks read drm/msm: Fix null pointer dereference on pointer edp drm/msm/mdp5: fix cursor-related warnings drm/msm/a6xx: Track current ctx by seqno drm/msm/dsi: Fix an error code in msm_dsi_modeset_init() drm/msm/dsi: fix off by one in dsi_bus_clk_enable error handling acpi/arm64: fix next_platform_timer() section mismatch error platform/x86: intel_scu_ipc: Fix busy loop expiry time mqprio: Correct stats in mqprio_dump_class_stats(). qed: Fix missing error code in qed_slowpath_start() r8152: select CRC32 and CRYPTO/CRYPTO_HASH/CRYPTO_SHA256 nfp: flow_offload: move flow_indr_dev_register from app init to app start net: mscc: ocelot: warn when a PTP IRQ is raised for an unknown skb ionic: don't remove netdev->dev_addr when syncing uc list net: dsa: mv88e6xxx: don't use PHY_DETECT on internal PHY's Linux 5.10.75 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I0c71baf6e376f0983e4a34d950c2bba7e226b564
This commit is contained in:
2
Makefile
2
Makefile
@@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 5
|
||||
PATCHLEVEL = 10
|
||||
SUBLEVEL = 74
|
||||
SUBLEVEL = 75
|
||||
EXTRAVERSION =
|
||||
NAME = Dare mighty things
|
||||
|
||||
|
||||
@@ -54,8 +54,8 @@
|
||||
regulator-always-on;
|
||||
regulator-settling-time-us = <5000>;
|
||||
gpios = <&expgpio 4 GPIO_ACTIVE_HIGH>;
|
||||
states = <1800000 0x1
|
||||
3300000 0x0>;
|
||||
states = <1800000 0x1>,
|
||||
<3300000 0x0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@@ -255,15 +255,16 @@
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
pci@1,0 {
|
||||
pci@0,0 {
|
||||
device_type = "pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
reg = <0 0 0 0 0>;
|
||||
|
||||
usb@1,0 {
|
||||
reg = <0x10000 0 0 0 0>;
|
||||
usb@0,0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
resets = <&reset RASPBERRYPI_FIRMWARE_RESET_ID_USB>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -514,8 +514,8 @@
|
||||
compatible = "brcm,genet-mdio-v5";
|
||||
reg = <0xe14 0x8>;
|
||||
reg-names = "mdio";
|
||||
#address-cells = <0x0>;
|
||||
#size-cells = <0x1>;
|
||||
#address-cells = <0x1>;
|
||||
#size-cells = <0x0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -43,7 +43,7 @@ void __init arm64_hugetlb_cma_reserve(void)
|
||||
#ifdef CONFIG_ARM64_4K_PAGES
|
||||
order = PUD_SHIFT - PAGE_SHIFT;
|
||||
#else
|
||||
order = CONT_PMD_SHIFT + PMD_SHIFT - PAGE_SHIFT;
|
||||
order = CONT_PMD_SHIFT - PAGE_SHIFT;
|
||||
#endif
|
||||
/*
|
||||
* HugeTLB CMA reservation is required for gigantic
|
||||
|
||||
@@ -98,7 +98,8 @@ static int gpr_set(struct task_struct *target,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
regs.sr = task_pt_regs(target)->sr;
|
||||
/* BIT(0) of regs.sr is Condition Code/Carry bit */
|
||||
regs.sr = (regs.sr & BIT(0)) | (task_pt_regs(target)->sr & ~BIT(0));
|
||||
#ifdef CONFIG_CPU_HAS_HILO
|
||||
regs.dcsr = task_pt_regs(target)->dcsr;
|
||||
#endif
|
||||
|
||||
@@ -52,10 +52,14 @@ static long restore_sigcontext(struct pt_regs *regs,
|
||||
struct sigcontext __user *sc)
|
||||
{
|
||||
int err = 0;
|
||||
unsigned long sr = regs->sr;
|
||||
|
||||
/* sc_pt_regs is structured the same as the start of pt_regs */
|
||||
err |= __copy_from_user(regs, &sc->sc_pt_regs, sizeof(struct pt_regs));
|
||||
|
||||
/* BIT(0) of regs->sr is Condition Code/Carry bit */
|
||||
regs->sr = (sr & ~1) | (regs->sr & 1);
|
||||
|
||||
/* Restore the floating-point state. */
|
||||
err |= restore_fpu_state(sc);
|
||||
|
||||
|
||||
@@ -997,7 +997,8 @@ static int xive_get_irqchip_state(struct irq_data *data,
|
||||
* interrupt to be inactive in that case.
|
||||
*/
|
||||
*state = (pq != XIVE_ESB_INVALID) && !xd->stale_p &&
|
||||
(xd->saved_p || !!(pq & XIVE_ESB_VAL_P));
|
||||
(xd->saved_p || (!!(pq & XIVE_ESB_VAL_P) &&
|
||||
!irqd_irq_disabled(data)));
|
||||
return 0;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
||||
@@ -246,14 +246,13 @@ EXPORT_SYMBOL(strcmp);
|
||||
#ifdef __HAVE_ARCH_STRRCHR
|
||||
char *strrchr(const char *s, int c)
|
||||
{
|
||||
size_t len = __strend(s) - s;
|
||||
ssize_t len = __strend(s) - s;
|
||||
|
||||
if (len)
|
||||
do {
|
||||
if (s[len] == (char) c)
|
||||
return (char *) s + len;
|
||||
} while (--len > 0);
|
||||
return NULL;
|
||||
do {
|
||||
if (s[len] == (char)c)
|
||||
return (char *)s + len;
|
||||
} while (--len >= 0);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(strrchr);
|
||||
#endif
|
||||
|
||||
@@ -1541,7 +1541,6 @@ config AMD_MEM_ENCRYPT
|
||||
|
||||
config AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT
|
||||
bool "Activate AMD Secure Memory Encryption (SME) by default"
|
||||
default y
|
||||
depends on AMD_MEM_ENCRYPT
|
||||
help
|
||||
Say yes to have system memory encrypted by default if running on
|
||||
|
||||
@@ -590,6 +590,8 @@ static void domain_add_cpu(int cpu, struct rdt_resource *r)
|
||||
}
|
||||
|
||||
if (r->mon_capable && domain_setup_mon_state(r, d)) {
|
||||
kfree(d->ctrl_val);
|
||||
kfree(d->mbps_val);
|
||||
kfree(d);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ struct acpi_gtdt_descriptor {
|
||||
|
||||
static struct acpi_gtdt_descriptor acpi_gtdt_desc __initdata;
|
||||
|
||||
static inline void *next_platform_timer(void *platform_timer)
|
||||
static inline __init void *next_platform_timer(void *platform_timer)
|
||||
{
|
||||
struct acpi_gtdt_header *gh = platform_timer;
|
||||
|
||||
|
||||
@@ -440,10 +440,7 @@ struct ahci_host_priv *ahci_platform_get_resources(struct platform_device *pdev,
|
||||
hpriv->phy_regulator = devm_regulator_get(dev, "phy");
|
||||
if (IS_ERR(hpriv->phy_regulator)) {
|
||||
rc = PTR_ERR(hpriv->phy_regulator);
|
||||
if (rc == -EPROBE_DEFER)
|
||||
goto err_out;
|
||||
rc = 0;
|
||||
hpriv->phy_regulator = NULL;
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
if (flags & AHCI_PLATFORM_GET_RESETS) {
|
||||
|
||||
@@ -315,7 +315,8 @@ static unsigned int pdc_data_xfer_vlb(struct ata_queued_cmd *qc,
|
||||
iowrite32_rep(ap->ioaddr.data_addr, buf, buflen >> 2);
|
||||
|
||||
if (unlikely(slop)) {
|
||||
__le32 pad;
|
||||
__le32 pad = 0;
|
||||
|
||||
if (rw == READ) {
|
||||
pad = cpu_to_le32(ioread32(ap->ioaddr.data_addr));
|
||||
memcpy(buf + buflen - slop, &pad, slop);
|
||||
@@ -705,7 +706,8 @@ static unsigned int vlb32_data_xfer(struct ata_queued_cmd *qc,
|
||||
ioread32_rep(ap->ioaddr.data_addr, buf, buflen >> 2);
|
||||
|
||||
if (unlikely(slop)) {
|
||||
__le32 pad;
|
||||
__le32 pad = 0;
|
||||
|
||||
if (rw == WRITE) {
|
||||
memcpy(&pad, buf + buflen - slop, slop);
|
||||
iowrite32(le32_to_cpu(pad), ap->ioaddr.data_addr);
|
||||
|
||||
@@ -672,7 +672,8 @@ struct device_link *device_link_add(struct device *consumer,
|
||||
{
|
||||
struct device_link *link;
|
||||
|
||||
if (!consumer || !supplier || flags & ~DL_ADD_VALID_FLAGS ||
|
||||
if (!consumer || !supplier || consumer == supplier ||
|
||||
flags & ~DL_ADD_VALID_FLAGS ||
|
||||
(flags & DL_FLAG_STATELESS && flags & DL_MANAGED_LINK_FLAGS) ||
|
||||
(flags & DL_FLAG_SYNC_STATE_ONLY &&
|
||||
(flags & ~DL_FLAG_INFERRED) != DL_FLAG_SYNC_STATE_ONLY) ||
|
||||
|
||||
@@ -16,7 +16,33 @@
|
||||
|
||||
static int simple_pm_bus_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device_node *np = pdev->dev.of_node;
|
||||
const struct device *dev = &pdev->dev;
|
||||
struct device_node *np = dev->of_node;
|
||||
const struct of_device_id *match;
|
||||
|
||||
/*
|
||||
* Allow user to use driver_override to bind this driver to a
|
||||
* transparent bus device which has a different compatible string
|
||||
* that's not listed in simple_pm_bus_of_match. We don't want to do any
|
||||
* of the simple-pm-bus tasks for these devices, so return early.
|
||||
*/
|
||||
if (pdev->driver_override)
|
||||
return 0;
|
||||
|
||||
match = of_match_device(dev->driver->of_match_table, dev);
|
||||
/*
|
||||
* These are transparent bus devices (not simple-pm-bus matches) that
|
||||
* have their child nodes populated automatically. So, don't need to
|
||||
* do anything more. We only match with the device if this driver is
|
||||
* the most specific match because we don't want to incorrectly bind to
|
||||
* a device that has a more specific driver.
|
||||
*/
|
||||
if (match && match->data) {
|
||||
if (of_property_match_string(np, "compatible", match->compatible) == 0)
|
||||
return 0;
|
||||
else
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
dev_dbg(&pdev->dev, "%s\n", __func__);
|
||||
|
||||
@@ -30,14 +56,25 @@ static int simple_pm_bus_probe(struct platform_device *pdev)
|
||||
|
||||
static int simple_pm_bus_remove(struct platform_device *pdev)
|
||||
{
|
||||
const void *data = of_device_get_match_data(&pdev->dev);
|
||||
|
||||
if (pdev->driver_override || data)
|
||||
return 0;
|
||||
|
||||
dev_dbg(&pdev->dev, "%s\n", __func__);
|
||||
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define ONLY_BUS ((void *) 1) /* Match if the device is only a bus. */
|
||||
|
||||
static const struct of_device_id simple_pm_bus_of_match[] = {
|
||||
{ .compatible = "simple-pm-bus", },
|
||||
{ .compatible = "simple-bus", .data = ONLY_BUS },
|
||||
{ .compatible = "simple-mfd", .data = ONLY_BUS },
|
||||
{ .compatible = "isa", .data = ONLY_BUS },
|
||||
{ .compatible = "arm,amba-bus", .data = ONLY_BUS },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, simple_pm_bus_of_match);
|
||||
|
||||
@@ -165,13 +165,6 @@ static const struct clk_parent_data mpu_mux[] = {
|
||||
.name = "boot_clk", },
|
||||
};
|
||||
|
||||
static const struct clk_parent_data s2f_usr0_mux[] = {
|
||||
{ .fw_name = "f2s-free-clk",
|
||||
.name = "f2s-free-clk", },
|
||||
{ .fw_name = "boot_clk",
|
||||
.name = "boot_clk", },
|
||||
};
|
||||
|
||||
static const struct clk_parent_data emac_mux[] = {
|
||||
{ .fw_name = "emaca_free_clk",
|
||||
.name = "emaca_free_clk", },
|
||||
@@ -299,8 +292,6 @@ static const struct stratix10_gate_clock agilex_gate_clks[] = {
|
||||
4, 0x44, 28, 1, 0, 0, 0},
|
||||
{ AGILEX_CS_TIMER_CLK, "cs_timer_clk", NULL, noc_mux, ARRAY_SIZE(noc_mux), 0, 0x24,
|
||||
5, 0, 0, 0, 0x30, 1, 0},
|
||||
{ AGILEX_S2F_USER0_CLK, "s2f_user0_clk", NULL, s2f_usr0_mux, ARRAY_SIZE(s2f_usr0_mux), 0, 0x24,
|
||||
6, 0, 0, 0, 0, 0, 0},
|
||||
{ AGILEX_EMAC0_CLK, "emac0_clk", NULL, emac_mux, ARRAY_SIZE(emac_mux), 0, 0x7C,
|
||||
0, 0, 0, 0, 0x94, 26, 0},
|
||||
{ AGILEX_EMAC1_CLK, "emac1_clk", NULL, emac_mux, ARRAY_SIZE(emac_mux), 0, 0x7C,
|
||||
|
||||
@@ -178,7 +178,7 @@ static void axp_mc_check(struct mem_ctl_info *mci)
|
||||
"details unavailable (multiple errors)");
|
||||
if (cnt_dbe)
|
||||
edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci,
|
||||
cnt_sbe, /* error count */
|
||||
cnt_dbe, /* error count */
|
||||
0, 0, 0, /* pfn, offset, syndrome */
|
||||
-1, -1, -1, /* top, mid, low layer */
|
||||
mci->ctl_name,
|
||||
|
||||
@@ -25,8 +25,6 @@
|
||||
#include <acpi/ghes.h>
|
||||
#include <ras/ras_event.h>
|
||||
|
||||
static char rcd_decode_str[CPER_REC_LEN];
|
||||
|
||||
/*
|
||||
* CPER record ID need to be unique even after reboot, because record
|
||||
* ID is used as index for ERST storage, while CPER records from
|
||||
@@ -313,6 +311,7 @@ const char *cper_mem_err_unpack(struct trace_seq *p,
|
||||
struct cper_mem_err_compact *cmem)
|
||||
{
|
||||
const char *ret = trace_seq_buffer_ptr(p);
|
||||
char rcd_decode_str[CPER_REC_LEN];
|
||||
|
||||
if (cper_mem_err_location(cmem, rcd_decode_str))
|
||||
trace_seq_printf(p, "%s", rcd_decode_str);
|
||||
@@ -327,6 +326,7 @@ static void cper_print_mem(const char *pfx, const struct cper_sec_mem_err *mem,
|
||||
int len)
|
||||
{
|
||||
struct cper_mem_err_compact cmem;
|
||||
char rcd_decode_str[CPER_REC_LEN];
|
||||
|
||||
/* Don't trust UEFI 2.1/2.2 structure with bad validation bits */
|
||||
if (len == sizeof(struct cper_sec_mem_err_old) &&
|
||||
|
||||
@@ -414,7 +414,7 @@ static void virt_efi_reset_system(int reset_type,
|
||||
unsigned long data_size,
|
||||
efi_char16_t *data)
|
||||
{
|
||||
if (down_interruptible(&efi_runtime_lock)) {
|
||||
if (down_trylock(&efi_runtime_lock)) {
|
||||
pr_warn("failed to invoke the reset_system() runtime service:\n"
|
||||
"could not get exclusive access to the firmware\n");
|
||||
return;
|
||||
|
||||
@@ -558,21 +558,21 @@ static int pca953x_gpio_set_pull_up_down(struct pca953x_chip *chip,
|
||||
|
||||
mutex_lock(&chip->i2c_lock);
|
||||
|
||||
/* Disable pull-up/pull-down */
|
||||
ret = regmap_write_bits(chip->regmap, pull_en_reg, bit, 0);
|
||||
if (ret)
|
||||
goto exit;
|
||||
|
||||
/* Configure pull-up/pull-down */
|
||||
if (config == PIN_CONFIG_BIAS_PULL_UP)
|
||||
ret = regmap_write_bits(chip->regmap, pull_sel_reg, bit, bit);
|
||||
else if (config == PIN_CONFIG_BIAS_PULL_DOWN)
|
||||
ret = regmap_write_bits(chip->regmap, pull_sel_reg, bit, 0);
|
||||
else
|
||||
ret = 0;
|
||||
if (ret)
|
||||
goto exit;
|
||||
|
||||
/* Enable pull-up/pull-down */
|
||||
ret = regmap_write_bits(chip->regmap, pull_en_reg, bit, bit);
|
||||
/* Disable/Enable pull-up/pull-down */
|
||||
if (config == PIN_CONFIG_BIAS_DISABLE)
|
||||
ret = regmap_write_bits(chip->regmap, pull_en_reg, bit, 0);
|
||||
else
|
||||
ret = regmap_write_bits(chip->regmap, pull_en_reg, bit, bit);
|
||||
|
||||
exit:
|
||||
mutex_unlock(&chip->i2c_lock);
|
||||
@@ -586,7 +586,9 @@ static int pca953x_gpio_set_config(struct gpio_chip *gc, unsigned int offset,
|
||||
|
||||
switch (pinconf_to_config_param(config)) {
|
||||
case PIN_CONFIG_BIAS_PULL_UP:
|
||||
case PIN_CONFIG_BIAS_PULL_PIN_DEFAULT:
|
||||
case PIN_CONFIG_BIAS_PULL_DOWN:
|
||||
case PIN_CONFIG_BIAS_DISABLE:
|
||||
return pca953x_gpio_set_pull_up_down(chip, offset, config);
|
||||
default:
|
||||
return -ENOTSUPP;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user