Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
033f96a851
@ -245,6 +245,25 @@ endef
|
||||
$(eval $(call KernelPackage,can-usb-esd))
|
||||
|
||||
|
||||
define KernelPackage/can-usb-gs
|
||||
TITLE:=Geschwister Schneider UG interfaces
|
||||
KCONFIG:=CONFIG_CAN_GS_USB
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/drivers/net/can/usb/gs_usb.ko
|
||||
AUTOLOAD:=$(call AutoProbe,gs_usb)
|
||||
$(call AddDepends/can,+kmod-usb-core)
|
||||
endef
|
||||
|
||||
define KernelPackage/can-usb-gsr/description
|
||||
This driver supports the Geschwister Schneider and
|
||||
bytewerk.org candleLight compatible
|
||||
(https://github.com/candle-usb/candleLight_fw) USB/CAN
|
||||
interfaces.
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,can-usb-gs))
|
||||
|
||||
|
||||
define KernelPackage/can-usb-kvaser
|
||||
TITLE:=Kvaser CAN/USB interface
|
||||
KCONFIG:=CONFIG_CAN_KVASER_USB
|
||||
|
@ -28,11 +28,6 @@ struct gpio_latch_chip {
|
||||
struct gpio_desc *gpios[GPIO_LATCH_LINES];
|
||||
};
|
||||
|
||||
static inline struct gpio_latch_chip *to_gpio_latch_chip(struct gpio_chip *gc)
|
||||
{
|
||||
return container_of(gc, struct gpio_latch_chip, gc);
|
||||
}
|
||||
|
||||
static void gpio_latch_lock(struct gpio_latch_chip *glc, bool enable)
|
||||
{
|
||||
mutex_lock(&glc->mutex);
|
||||
@ -58,7 +53,7 @@ static void gpio_latch_unlock(struct gpio_latch_chip *glc, bool disable)
|
||||
static int
|
||||
gpio_latch_get(struct gpio_chip *gc, unsigned offset)
|
||||
{
|
||||
struct gpio_latch_chip *glc = to_gpio_latch_chip(gc);
|
||||
struct gpio_latch_chip *glc = gpiochip_get_data(gc);
|
||||
int ret;
|
||||
|
||||
gpio_latch_lock(glc, false);
|
||||
@ -71,7 +66,7 @@ gpio_latch_get(struct gpio_chip *gc, unsigned offset)
|
||||
static void
|
||||
gpio_latch_set(struct gpio_chip *gc, unsigned offset, int value)
|
||||
{
|
||||
struct gpio_latch_chip *glc = to_gpio_latch_chip(gc);
|
||||
struct gpio_latch_chip *glc = gpiochip_get_data(gc);
|
||||
bool enable_latch = false;
|
||||
bool disable_latch = false;
|
||||
|
||||
@ -88,7 +83,7 @@ gpio_latch_set(struct gpio_chip *gc, unsigned offset, int value)
|
||||
static int
|
||||
gpio_latch_direction_output(struct gpio_chip *gc, unsigned offset, int value)
|
||||
{
|
||||
struct gpio_latch_chip *glc = to_gpio_latch_chip(gc);
|
||||
struct gpio_latch_chip *glc = gpiochip_get_data(gc);
|
||||
bool enable_latch = false;
|
||||
bool disable_latch = false;
|
||||
int ret;
|
||||
|
@ -41,14 +41,9 @@ struct gpio_rb91x_key {
|
||||
struct gpio_desc *gpio;
|
||||
};
|
||||
|
||||
static inline struct gpio_rb91x_key *to_gpio_rb91x_key(struct gpio_chip *gc)
|
||||
{
|
||||
return container_of(gc, struct gpio_rb91x_key, gc);
|
||||
}
|
||||
|
||||
static int gpio_rb91x_key_get(struct gpio_chip *gc, unsigned offset)
|
||||
{
|
||||
struct gpio_rb91x_key *drvdata = to_gpio_rb91x_key(gc);
|
||||
struct gpio_rb91x_key *drvdata = gpiochip_get_data(gc);
|
||||
struct gpio_desc *gpio = drvdata->gpio;
|
||||
int val, bak_val;
|
||||
|
||||
@ -97,7 +92,7 @@ static int gpio_rb91x_key_direction_input(struct gpio_chip *gc, unsigned offset)
|
||||
|
||||
static void gpio_rb91x_key_set(struct gpio_chip *gc, unsigned offset, int value)
|
||||
{
|
||||
struct gpio_rb91x_key *drvdata = to_gpio_rb91x_key(gc);
|
||||
struct gpio_rb91x_key *drvdata = gpiochip_get_data(gc);
|
||||
struct gpio_desc *gpio = drvdata->gpio;
|
||||
|
||||
mutex_lock(&drvdata->mutex);
|
||||
|
@ -0,0 +1,59 @@
|
||||
From 342672bbdf713654316a0ff73c7f2ecf7ea6693d Mon Sep 17 00:00:00 2001
|
||||
From: Michael Walle <mwalle@kernel.org>
|
||||
Date: Fri, 21 Jun 2024 14:09:29 +0200
|
||||
Subject: [PATCH] mtd: spi-nor: winbond: fix w25q128 regression
|
||||
|
||||
Upstream commit d35df77707bf5ae1221b5ba1c8a88cf4fcdd4901
|
||||
|
||||
("mtd: spi-nor: winbond: fix w25q128 regression")
|
||||
however the code has changed a lot after v6.6 so the patch did
|
||||
not apply to v6.6 or v6.1 which still has the problem.
|
||||
|
||||
This patch fixes the issue in the way of the old API and has
|
||||
been tested on hardware. Please apply it for v6.1 and v6.6.
|
||||
|
||||
Commit 83e824a4a595 ("mtd: spi-nor: Correct flags for Winbond w25q128")
|
||||
removed the flags for non-SFDP devices. It was assumed that it wasn't in
|
||||
use anymore. This wasn't true. Add the no_sfdp_flags as well as the size
|
||||
again.
|
||||
|
||||
We add the additional flags for dual and quad read because they have
|
||||
been reported to work properly by Hartmut using both older and newer
|
||||
versions of this flash, the similar flashes with 64Mbit and 256Mbit
|
||||
already have these flags and because it will (luckily) trigger our
|
||||
legacy SFDP parsing, so newer versions with SFDP support will still get
|
||||
the parameters from the SFDP tables.
|
||||
|
||||
Reported-by: Hartmut Birr <e9hack@gmail.com>
|
||||
Closes: https://lore.kernel.org/r/CALxbwRo_-9CaJmt7r7ELgu+vOcgk=xZcGHobnKf=oT2=u4d4aA@mail.gmail.com/
|
||||
Fixes: 83e824a4a595 ("mtd: spi-nor: Correct flags for Winbond w25q128")
|
||||
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
Signed-off-by: Michael Walle <mwalle@kernel.org>
|
||||
Acked-by: Tudor Ambarus <tudor.ambarus@linaro.org>
|
||||
Reviewed-by: Esben Haabendal <esben@geanix.com>
|
||||
Reviewed-by: Pratyush Yadav <pratyush@kernel.org>
|
||||
Signed-off-by: Pratyush Yadav <pratyush@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20240621120929.2670185-1-mwalle@kernel.org
|
||||
[Backported to v6.6 - vastly different due to upstream changes]
|
||||
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
|
||||
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
---
|
||||
drivers/mtd/spi-nor/winbond.c | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/mtd/spi-nor/winbond.c
|
||||
+++ b/drivers/mtd/spi-nor/winbond.c
|
||||
@@ -120,9 +120,10 @@ static const struct flash_info winbond_n
|
||||
NO_SFDP_FLAGS(SECT_4K) },
|
||||
{ "w25q80bl", INFO(0xef4014, 0, 64 * 1024, 16)
|
||||
NO_SFDP_FLAGS(SECT_4K) },
|
||||
- { "w25q128", INFO(0xef4018, 0, 0, 0)
|
||||
- PARSE_SFDP
|
||||
- FLAGS(SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) },
|
||||
+ { "w25q128", INFO(0xef4018, 0, 64 * 1024, 256)
|
||||
+ FLAGS(SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
|
||||
+ NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ |
|
||||
+ SPI_NOR_QUAD_READ) },
|
||||
{ "w25q256", INFO(0xef4019, 0, 64 * 1024, 512)
|
||||
NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ)
|
||||
.fixups = &w25q256_fixups },
|
@ -35,6 +35,7 @@
|
||||
regulator-name = "led_vbus";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
enable-active-high;
|
||||
regulator-always-on;
|
||||
gpios = <&pio 5 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
@ -80,15 +80,13 @@
|
||||
};
|
||||
};
|
||||
|
||||
gpio_export {
|
||||
compatible = "gpio-export";
|
||||
#size-cells = <0>;
|
||||
|
||||
power_usb3 {
|
||||
gpio-export,name = "power_usb3";
|
||||
gpio-export,output = <1>;
|
||||
gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
reg_power_usb3: regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "power_usb3";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
||||
|
||||
@ -155,6 +153,10 @@
|
||||
};
|
||||
};
|
||||
|
||||
&xhci {
|
||||
vbus-supply = <®_power_usb3>;
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
};
|
||||
|
@ -19,16 +19,6 @@
|
||||
label-mac-device = &gmac1;
|
||||
};
|
||||
|
||||
gpio-export {
|
||||
compatible = "gpio-export";
|
||||
|
||||
gpio-usb-power {
|
||||
gpio-export,name = "power:usb";
|
||||
gpio-export,output = <1>;
|
||||
gpios = <&gpio 8 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
@ -65,6 +55,15 @@
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
};
|
||||
|
||||
reg_power_usb: regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "power:usb";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpios = <&gpio 8 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
@ -131,6 +130,10 @@
|
||||
};
|
||||
};
|
||||
|
||||
&xhci {
|
||||
vbus-supply = <®_power_usb>;
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
};
|
||||
|
@ -13,13 +13,20 @@
|
||||
gpio-export,output = <0>;
|
||||
gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
usb_power {
|
||||
gpio-export,name = "usb_power";
|
||||
gpio-export,output = <1>;
|
||||
gpios = <&gpio 12 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
reg_usb_power: regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "usb_power";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpios = <&gpio 12 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
||||
|
||||
&xhci {
|
||||
vbus-supply = <®_usb_power>;
|
||||
};
|
||||
|
||||
&keys {
|
||||
|
@ -48,6 +48,15 @@
|
||||
};
|
||||
};
|
||||
|
||||
reg_power_usb: regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "power_usb";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpios = <&gpio 6 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
watchdog {
|
||||
compatible = "linux,wdt-gpio";
|
||||
gpios = <&gpio 3 GPIO_ACTIVE_HIGH>;
|
||||
@ -72,15 +81,13 @@
|
||||
gpio-export,output = <1>;
|
||||
gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
ext-usb {
|
||||
gpio-export,name = "ext-usb";
|
||||
gpio-export,output = <1>;
|
||||
gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&xhci {
|
||||
vbus-supply = <®_power_usb>;
|
||||
};
|
||||
|
||||
&sdhci {
|
||||
status = "okay";
|
||||
};
|
||||
|
@ -47,6 +47,15 @@
|
||||
};
|
||||
};
|
||||
|
||||
reg_power_usb: regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "power_usb";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpios = <&gpio 6 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
watchdog {
|
||||
compatible = "linux,wdt-gpio";
|
||||
gpios = <&gpio 3 GPIO_ACTIVE_HIGH>;
|
||||
@ -71,15 +80,13 @@
|
||||
gpio-export,output = <1>;
|
||||
gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
ext-usb {
|
||||
gpio-export,name = "ext-usb";
|
||||
gpio-export,output = <1>;
|
||||
gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&xhci {
|
||||
vbus-supply = <®_power_usb>;
|
||||
};
|
||||
|
||||
&sdhci {
|
||||
status = "okay";
|
||||
};
|
||||
|
@ -96,17 +96,18 @@
|
||||
|
||||
};
|
||||
|
||||
reg_power_usb: regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "power_usb";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
||||
|
||||
&gpio {
|
||||
status = "okay";
|
||||
|
||||
enable_usb_power {
|
||||
gpio-hog;
|
||||
line-name = "enable USB power";
|
||||
gpios = <7 GPIO_ACTIVE_HIGH>;
|
||||
output-high;
|
||||
};
|
||||
&xhci {
|
||||
vbus-supply = <®_power_usb>;
|
||||
};
|
||||
|
||||
&nand {
|
||||
|
@ -92,13 +92,20 @@
|
||||
gpio-export,output = <0>;
|
||||
gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
usb_power {
|
||||
gpio-export,name = "usb_power";
|
||||
gpio-export,output = <1>;
|
||||
gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
reg_usb_power: regulator {
|
||||
compatible = "regulator-fixed";
|
||||
reglator-name = "usb_power";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
||||
|
||||
&xhci {
|
||||
vbus-supply = <®_usb_power>;
|
||||
};
|
||||
|
||||
&nand {
|
||||
|
Loading…
x
Reference in New Issue
Block a user