Merge Official Source

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2024-11-05 16:01:54 +08:00
commit 033f96a851
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
12 changed files with 170 additions and 67 deletions

View File

@ -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

View File

@ -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;

View File

@ -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);

View File

@ -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 },

View File

@ -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>;
};

View File

@ -80,15 +80,13 @@
};
};
gpio_export {
compatible = "gpio-export";
#size-cells = <0>;
power_usb3 {
gpio-export,name = "power_usb3";
gpio-export,output = <1>;
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 = <&reg_power_usb3>;
};
&pcie {
status = "okay";
};

View File

@ -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 = <&reg_power_usb>;
};
&pcie {
status = "okay";
};

View File

@ -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>;
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 = <&reg_usb_power>;
};
&keys {

View File

@ -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,13 +81,11 @@
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 = <&reg_power_usb>;
};
&sdhci {

View File

@ -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,13 +80,11 @@
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 = <&reg_power_usb>;
};
&sdhci {

View File

@ -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 = <&reg_power_usb>;
};
&nand {

View File

@ -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>;
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 = <&reg_usb_power>;
};
&nand {