mirror of
https://github.com/hanwckf/immortalwrt-mt798x.git
synced 2025-01-09 02:43:53 +08:00
kernel: bump 5.4 to 5.4.77
Manually rebased patches: bcm27xx/patches-5.4/950-0135-spi-spi-bcm2835-Disable-forced-software-CS.patch generic-backport/744-v5.5-net-sfp-soft-status-and-control-support.patch layerscape/patches-5.4/819-uart-0005-tty-serial-fsl_lpuart-enable-dma-mode-for-imx8qxp.patch mvebu/patches-5.4/521-arm64-dts-marvell-espressobin-Add-ethernet-switch-al.patch Removed: layerscape/patches-5.4/819-uart-0012-tty-serial-lpuart-add-LS1028A-support.patch All modifications made by update_kernel.sh Build system: x86_64 Build-tested: ipq806x/R7800, ath79/generic, bcm27xx/bcm2711, lantiq/Easybox 904 xDSL, x86_64 Run-tested: ipq806x/R7800, lantiq/Easybox 904 xDSL, x86_64 No dmesg regressions, everything functional Signed-off-by: John Audia <graysky@archlinux.us> Co-developed-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
This commit is contained in:
parent
79f3f1358b
commit
667f6c7f49
@ -6,9 +6,9 @@ ifdef CONFIG_TESTING_KERNEL
|
|||||||
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
|
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
LINUX_VERSION-5.4 = .75
|
LINUX_VERSION-5.4 = .77
|
||||||
|
|
||||||
LINUX_KERNEL_HASH-5.4.75 = d2466fd6eb5433e7bf287b617b11b2640c65a7ea93a57eb7a80d7f537cbc1470
|
LINUX_KERNEL_HASH-5.4.77 = a3e03e6970240dddc8174bf9f49b56d774c40125eabe1582d2ebe85b01addbf7
|
||||||
|
|
||||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||||
|
@ -70,7 +70,7 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
|
|||||||
|
|
||||||
--- a/drivers/gpu/drm/vc4/vc4_drv.c
|
--- a/drivers/gpu/drm/vc4/vc4_drv.c
|
||||||
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
|
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
|
||||||
@@ -345,6 +345,7 @@ static struct platform_driver *const com
|
@@ -346,6 +346,7 @@ static struct platform_driver *const com
|
||||||
&vc4_txp_driver,
|
&vc4_txp_driver,
|
||||||
&vc4_hvs_driver,
|
&vc4_hvs_driver,
|
||||||
&vc4_crtc_driver,
|
&vc4_crtc_driver,
|
||||||
|
@ -70,7 +70,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int bcm2835_spi_setup(struct spi_device *spi)
|
static int bcm2835_spi_setup(struct spi_device *spi)
|
||||||
@@ -1289,6 +1337,7 @@ static int bcm2835_spi_probe(struct plat
|
@@ -1277,6 +1325,7 @@ static int bcm2835_spi_probe(struct plat
|
||||||
ctlr->bits_per_word_mask = SPI_BPW_MASK(8);
|
ctlr->bits_per_word_mask = SPI_BPW_MASK(8);
|
||||||
ctlr->num_chipselect = BCM2835_SPI_NUM_CS;
|
ctlr->num_chipselect = BCM2835_SPI_NUM_CS;
|
||||||
ctlr->setup = bcm2835_spi_setup;
|
ctlr->setup = bcm2835_spi_setup;
|
||||||
|
@ -13,7 +13,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
|
|
||||||
--- a/drivers/spi/spi-bcm2835.c
|
--- a/drivers/spi/spi-bcm2835.c
|
||||||
+++ b/drivers/spi/spi-bcm2835.c
|
+++ b/drivers/spi/spi-bcm2835.c
|
||||||
@@ -1279,43 +1279,6 @@ static int bcm2835_spi_setup(struct spi_
|
@@ -1279,31 +1279,6 @@ static int bcm2835_spi_setup(struct spi_
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,18 +31,6 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
|||||||
- if (!chip)
|
- if (!chip)
|
||||||
- return 0;
|
- return 0;
|
||||||
-
|
-
|
||||||
- /*
|
|
||||||
- * Retrieve the corresponding GPIO line used for CS.
|
|
||||||
- * The inversion semantics will be handled by the GPIO core
|
|
||||||
- * code, so we pass GPIOS_OUT_LOW for "unasserted" and
|
|
||||||
- * the correct flag for inversion semantics. The SPI_CS_HIGH
|
|
||||||
- * on spi->mode cannot be checked for polarity in this case
|
|
||||||
- * as the flag use_gpio_descriptors enforces SPI_CS_HIGH.
|
|
||||||
- */
|
|
||||||
- if (of_property_read_bool(spi->dev.of_node, "spi-cs-high"))
|
|
||||||
- lflags = GPIO_ACTIVE_HIGH;
|
|
||||||
- else
|
|
||||||
- lflags = GPIO_ACTIVE_LOW;
|
|
||||||
- spi->cs_gpiod = gpiochip_request_own_desc(chip, 8 - spi->chip_select,
|
- spi->cs_gpiod = gpiochip_request_own_desc(chip, 8 - spi->chip_select,
|
||||||
- DRV_NAME,
|
- DRV_NAME,
|
||||||
- lflags,
|
- lflags,
|
||||||
|
@ -17,7 +17,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
|||||||
|
|
||||||
--- a/drivers/gpu/drm/vc4/vc4_drv.c
|
--- a/drivers/gpu/drm/vc4/vc4_drv.c
|
||||||
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
|
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
|
||||||
@@ -368,6 +368,7 @@ static int vc4_platform_drm_remove(struc
|
@@ -369,6 +369,7 @@ static int vc4_platform_drm_remove(struc
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct of_device_id vc4_of_match[] = {
|
static const struct of_device_id vc4_of_match[] = {
|
||||||
|
@ -187,16 +187,16 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||||||
int err, i;
|
int err, i;
|
||||||
|
|
||||||
sfp = sfp_alloc(&pdev->dev);
|
sfp = sfp_alloc(&pdev->dev);
|
||||||
@@ -2183,7 +2253,7 @@ static int sfp_probe(struct platform_dev
|
@@ -2184,7 +2254,7 @@ static int sfp_probe(struct platform_dev
|
||||||
|
|
||||||
sfp->gpio_irq[i] = gpiod_to_irq(sfp->gpio[i]);
|
sfp->gpio_irq[i] = gpiod_to_irq(sfp->gpio[i]);
|
||||||
if (!sfp->gpio_irq[i]) {
|
if (sfp->gpio_irq[i] < 0) {
|
||||||
|
sfp->gpio_irq[i] = 0;
|
||||||
- poll = true;
|
- poll = true;
|
||||||
+ sfp->need_poll = true;
|
+ sfp->need_poll = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2195,11 +2265,11 @@ static int sfp_probe(struct platform_dev
|
@@ -2196,11 +2266,11 @@ static int sfp_probe(struct platform_dev
|
||||||
dev_name(sfp->dev), sfp);
|
dev_name(sfp->dev), sfp);
|
||||||
if (err) {
|
if (err) {
|
||||||
sfp->gpio_irq[i] = 0;
|
sfp->gpio_irq[i] = 0;
|
||||||
|
@ -8,7 +8,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||||
@@ -4884,6 +4884,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
@@ -4883,6 +4883,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||||
*/
|
*/
|
||||||
if (JEDEC_MFR(nor->info) == SNOR_MFR_ATMEL ||
|
if (JEDEC_MFR(nor->info) == SNOR_MFR_ATMEL ||
|
||||||
JEDEC_MFR(nor->info) == SNOR_MFR_INTEL ||
|
JEDEC_MFR(nor->info) == SNOR_MFR_INTEL ||
|
||||||
|
@ -25,7 +25,7 @@ Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
|
|||||||
nor->params.set_4byte = winbond_set_4byte;
|
nor->params.set_4byte = winbond_set_4byte;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4886,6 +4887,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
@@ -4885,6 +4886,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||||
JEDEC_MFR(nor->info) == SNOR_MFR_INTEL ||
|
JEDEC_MFR(nor->info) == SNOR_MFR_INTEL ||
|
||||||
JEDEC_MFR(nor->info) == SNOR_MFR_MACRONIX ||
|
JEDEC_MFR(nor->info) == SNOR_MFR_MACRONIX ||
|
||||||
JEDEC_MFR(nor->info) == SNOR_MFR_SST ||
|
JEDEC_MFR(nor->info) == SNOR_MFR_SST ||
|
||||||
|
@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
depends on OF && (ARM || ARM64 || COMPILE_TEST)
|
depends on OF && (ARM || ARM64 || COMPILE_TEST)
|
||||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||||
@@ -4464,6 +4464,7 @@ static void spi_nor_info_init_params(str
|
@@ -4463,6 +4463,7 @@ static void spi_nor_info_init_params(str
|
||||||
struct spi_nor_erase_map *map = ¶ms->erase_map;
|
struct spi_nor_erase_map *map = ¶ms->erase_map;
|
||||||
const struct flash_info *info = nor->info;
|
const struct flash_info *info = nor->info;
|
||||||
struct device_node *np = spi_nor_get_flash_node(nor);
|
struct device_node *np = spi_nor_get_flash_node(nor);
|
||||||
@ -47,7 +47,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
u8 i, erase_mask;
|
u8 i, erase_mask;
|
||||||
|
|
||||||
/* Initialize legacy flash parameters and settings. */
|
/* Initialize legacy flash parameters and settings. */
|
||||||
@@ -4527,6 +4528,21 @@ static void spi_nor_info_init_params(str
|
@@ -4526,6 +4527,21 @@ static void spi_nor_info_init_params(str
|
||||||
*/
|
*/
|
||||||
erase_mask = 0;
|
erase_mask = 0;
|
||||||
i = 0;
|
i = 0;
|
||||||
@ -69,7 +69,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
if (info->flags & SECT_4K_PMC) {
|
if (info->flags & SECT_4K_PMC) {
|
||||||
erase_mask |= BIT(i);
|
erase_mask |= BIT(i);
|
||||||
spi_nor_set_erase_type(&map->erase_type[i], 4096u,
|
spi_nor_set_erase_type(&map->erase_type[i], 4096u,
|
||||||
@@ -4538,6 +4554,7 @@ static void spi_nor_info_init_params(str
|
@@ -4537,6 +4553,7 @@ static void spi_nor_info_init_params(str
|
||||||
SPINOR_OP_BE_4K);
|
SPINOR_OP_BE_4K);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,7 @@ Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
|
|||||||
spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_WRITE);
|
spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_WRITE);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -4726,9 +4768,13 @@ static int spi_nor_init(struct spi_nor *
|
@@ -4725,9 +4767,13 @@ static int spi_nor_init(struct spi_nor *
|
||||||
* reboots (e.g., crashes). Warn the user (or hopefully, system
|
* reboots (e.g., crashes). Warn the user (or hopefully, system
|
||||||
* designer) that this is bad.
|
* designer) that this is bad.
|
||||||
*/
|
*/
|
||||||
|
@ -15,7 +15,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||||||
|
|
||||||
--- a/drivers/net/phy/sfp.c
|
--- a/drivers/net/phy/sfp.c
|
||||||
+++ b/drivers/net/phy/sfp.c
|
+++ b/drivers/net/phy/sfp.c
|
||||||
@@ -2343,6 +2343,10 @@ static int sfp_remove(struct platform_de
|
@@ -2344,6 +2344,10 @@ static int sfp_remove(struct platform_de
|
||||||
|
|
||||||
sfp_unregister_socket(sfp->sfp_bus);
|
sfp_unregister_socket(sfp->sfp_bus);
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ Signed-off-by: Shawn Guo <shawnguo@kernel.org>
|
|||||||
|
|
||||||
--- a/arch/arm/boot/dts/imx6qdl-gw5910.dtsi
|
--- a/arch/arm/boot/dts/imx6qdl-gw5910.dtsi
|
||||||
+++ b/arch/arm/boot/dts/imx6qdl-gw5910.dtsi
|
+++ b/arch/arm/boot/dts/imx6qdl-gw5910.dtsi
|
||||||
@@ -220,6 +220,14 @@
|
@@ -218,6 +218,14 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ Signed-off-by: Shawn Guo <shawnguo@kernel.org>
|
|||||||
/* Sterling-LWB Bluetooth */
|
/* Sterling-LWB Bluetooth */
|
||||||
&uart4 {
|
&uart4 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
@@ -411,6 +419,23 @@
|
@@ -409,6 +417,23 @@
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ Signed-off-by: Shawn Guo <shawnguo@kernel.org>
|
|||||||
|
|
||||||
--- a/arch/arm/boot/dts/imx6qdl-gw5910.dtsi
|
--- a/arch/arm/boot/dts/imx6qdl-gw5910.dtsi
|
||||||
+++ b/arch/arm/boot/dts/imx6qdl-gw5910.dtsi
|
+++ b/arch/arm/boot/dts/imx6qdl-gw5910.dtsi
|
||||||
@@ -83,19 +83,6 @@
|
@@ -81,19 +81,6 @@
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
@ -38,7 +38,7 @@ Signed-off-by: Shawn Guo <shawnguo@kernel.org>
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -231,9 +218,14 @@
|
@@ -229,9 +216,14 @@
|
||||||
/* Sterling-LWB Bluetooth */
|
/* Sterling-LWB Bluetooth */
|
||||||
&uart4 {
|
&uart4 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
@ -54,7 +54,7 @@ Signed-off-by: Shawn Guo <shawnguo@kernel.org>
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* GPS */
|
/* GPS */
|
||||||
@@ -288,6 +280,12 @@
|
@@ -286,6 +278,12 @@
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ Signed-off-by: Shawn Guo <shawnguo@kernel.org>
|
|||||||
pinctrl_ecspi3: escpi3grp {
|
pinctrl_ecspi3: escpi3grp {
|
||||||
fsl,pins = <
|
fsl,pins = <
|
||||||
MX6QDL_PAD_DISP0_DAT0__ECSPI3_SCLK 0x100b1
|
MX6QDL_PAD_DISP0_DAT0__ECSPI3_SCLK 0x100b1
|
||||||
@@ -393,12 +391,6 @@
|
@@ -391,12 +389,6 @@
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: Shawn Guo <shawnguo@kernel.org>
|
|||||||
|
|
||||||
--- a/arch/arm/boot/dts/imx6qdl-gw5910.dtsi
|
--- a/arch/arm/boot/dts/imx6qdl-gw5910.dtsi
|
||||||
+++ b/arch/arm/boot/dts/imx6qdl-gw5910.dtsi
|
+++ b/arch/arm/boot/dts/imx6qdl-gw5910.dtsi
|
||||||
@@ -81,7 +81,6 @@
|
@@ -79,7 +79,6 @@
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@ -22,7 +22,7 @@ Signed-off-by: Shawn Guo <shawnguo@kernel.org>
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -251,7 +250,7 @@
|
@@ -249,7 +248,7 @@
|
||||||
&usdhc2 {
|
&usdhc2 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usdhc2>;
|
pinctrl-0 = <&pinctrl_usdhc2>;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/drivers/net/phy/Kconfig
|
+++ b/drivers/net/phy/Kconfig
|
||||||
@@ -581,6 +581,13 @@ config XILINX_GMII2RGMII
|
@@ -577,6 +577,13 @@ config XILINX_GMII2RGMII
|
||||||
the Reduced Gigabit Media Independent Interface(RGMII) between
|
the Reduced Gigabit Media Independent Interface(RGMII) between
|
||||||
Ethernet physical media devices and the Gigabit Ethernet controller.
|
Ethernet physical media devices and the Gigabit Ethernet controller.
|
||||||
|
|
||||||
@ -16,7 +16,7 @@
|
|||||||
config MICREL_KS8995MA
|
config MICREL_KS8995MA
|
||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/drivers/net/phy/Makefile
|
+++ b/drivers/net/phy/Makefile
|
||||||
@@ -51,6 +51,7 @@ obj-$(CONFIG_MDIO_CAVIUM) += mdio-cavium
|
@@ -50,6 +50,7 @@ obj-$(CONFIG_MDIO_CAVIUM) += mdio-cavium
|
||||||
obj-$(CONFIG_MDIO_GPIO) += mdio-gpio.o
|
obj-$(CONFIG_MDIO_GPIO) += mdio-gpio.o
|
||||||
obj-$(CONFIG_MDIO_HISI_FEMAC) += mdio-hisi-femac.o
|
obj-$(CONFIG_MDIO_HISI_FEMAC) += mdio-hisi-femac.o
|
||||||
obj-$(CONFIG_MDIO_I2C) += mdio-i2c.o
|
obj-$(CONFIG_MDIO_I2C) += mdio-i2c.o
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/drivers/net/phy/Kconfig
|
+++ b/drivers/net/phy/Kconfig
|
||||||
@@ -588,6 +588,13 @@ config MDIO_IPQ40XX
|
@@ -584,6 +584,13 @@ config MDIO_IPQ40XX
|
||||||
This driver supports the MDIO interface found in Qualcomm
|
This driver supports the MDIO interface found in Qualcomm
|
||||||
Atheros ipq40xx Soc chip.
|
Atheros ipq40xx Soc chip.
|
||||||
|
|
||||||
@ -16,7 +16,7 @@
|
|||||||
config MICREL_KS8995MA
|
config MICREL_KS8995MA
|
||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/drivers/net/phy/Makefile
|
+++ b/drivers/net/phy/Makefile
|
||||||
@@ -70,6 +70,7 @@ ifdef CONFIG_HWMON
|
@@ -69,6 +69,7 @@ ifdef CONFIG_HWMON
|
||||||
aquantia-objs += aquantia_hwmon.o
|
aquantia-objs += aquantia_hwmon.o
|
||||||
endif
|
endif
|
||||||
obj-$(CONFIG_AQUANTIA_PHY) += aquantia.o
|
obj-$(CONFIG_AQUANTIA_PHY) += aquantia.o
|
||||||
|
@ -32,7 +32,7 @@ Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
|||||||
+ a specific device.
|
+ a specific device.
|
||||||
--- a/drivers/base/core.c
|
--- a/drivers/base/core.c
|
||||||
+++ b/drivers/base/core.c
|
+++ b/drivers/base/core.c
|
||||||
@@ -1320,6 +1320,34 @@ static ssize_t online_store(struct devic
|
@@ -1318,6 +1318,34 @@ static ssize_t online_store(struct devic
|
||||||
}
|
}
|
||||||
static DEVICE_ATTR_RW(online);
|
static DEVICE_ATTR_RW(online);
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
|||||||
int device_add_groups(struct device *dev, const struct attribute_group **groups)
|
int device_add_groups(struct device *dev, const struct attribute_group **groups)
|
||||||
{
|
{
|
||||||
return sysfs_create_groups(&dev->kobj, groups);
|
return sysfs_create_groups(&dev->kobj, groups);
|
||||||
@@ -1491,8 +1519,20 @@ static int device_add_attrs(struct devic
|
@@ -1489,8 +1517,20 @@ static int device_add_attrs(struct devic
|
||||||
goto err_remove_dev_groups;
|
goto err_remove_dev_groups;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,7 +88,7 @@ Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
|
|||||||
err_remove_dev_groups:
|
err_remove_dev_groups:
|
||||||
device_remove_groups(dev, dev->groups);
|
device_remove_groups(dev, dev->groups);
|
||||||
err_remove_type_groups:
|
err_remove_type_groups:
|
||||||
@@ -1510,6 +1550,8 @@ static void device_remove_attrs(struct d
|
@@ -1508,6 +1548,8 @@ static void device_remove_attrs(struct d
|
||||||
struct class *class = dev->class;
|
struct class *class = dev->class;
|
||||||
const struct device_type *type = dev->type;
|
const struct device_type *type = dev->type;
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
#include <linux/serial_core.h>
|
#include <linux/serial_core.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/tty_flip.h>
|
#include <linux/tty_flip.h>
|
||||||
@@ -2367,6 +2369,54 @@ static struct uart_driver lpuart_reg = {
|
@@ -2391,6 +2393,54 @@ static struct uart_driver lpuart_reg = {
|
||||||
.cons = LPUART_CONSOLE,
|
.cons = LPUART_CONSOLE,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
static int lpuart_probe(struct platform_device *pdev)
|
static int lpuart_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
const struct of_device_id *of_id = of_match_device(lpuart_dt_ids,
|
const struct of_device_id *of_id = of_match_device(lpuart_dt_ids,
|
||||||
@@ -2404,6 +2454,10 @@ static int lpuart_probe(struct platform_
|
@@ -2428,6 +2478,10 @@ static int lpuart_probe(struct platform_
|
||||||
|
|
||||||
sport->port.rs485_config = lpuart_config_rs485;
|
sport->port.rs485_config = lpuart_config_rs485;
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
#include <linux/serial_core.h>
|
#include <linux/serial_core.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/tty_flip.h>
|
#include <linux/tty_flip.h>
|
||||||
@@ -1542,8 +1543,17 @@ static void lpuart32_configure(struct lp
|
@@ -1555,8 +1556,17 @@ static void lpuart32_configure(struct lp
|
||||||
static int lpuart32_startup(struct uart_port *port)
|
static int lpuart32_startup(struct uart_port *port)
|
||||||
{
|
{
|
||||||
struct lpuart_port *sport = container_of(port, struct lpuart_port, port);
|
struct lpuart_port *sport = container_of(port, struct lpuart_port, port);
|
||||||
|
@ -12,7 +12,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
|
|
||||||
--- a/drivers/tty/serial/fsl_lpuart.c
|
--- a/drivers/tty/serial/fsl_lpuart.c
|
||||||
+++ b/drivers/tty/serial/fsl_lpuart.c
|
+++ b/drivers/tty/serial/fsl_lpuart.c
|
||||||
@@ -918,7 +918,12 @@ static void lpuart32_rxint(struct lpuart
|
@@ -931,7 +931,12 @@ static void lpuart32_rxint(struct lpuart
|
||||||
*/
|
*/
|
||||||
sr = lpuart32_read(&sport->port, UARTSTAT);
|
sr = lpuart32_read(&sport->port, UARTSTAT);
|
||||||
rx = lpuart32_read(&sport->port, UARTDATA);
|
rx = lpuart32_read(&sport->port, UARTDATA);
|
||||||
|
@ -17,7 +17,7 @@ Signed-off-by: Adriana Reus <adriana.reus@nxp.com>
|
|||||||
|
|
||||||
--- a/drivers/tty/serial/fsl_lpuart.c
|
--- a/drivers/tty/serial/fsl_lpuart.c
|
||||||
+++ b/drivers/tty/serial/fsl_lpuart.c
|
+++ b/drivers/tty/serial/fsl_lpuart.c
|
||||||
@@ -2452,7 +2452,7 @@ static int lpuart_probe(struct platform_
|
@@ -2476,7 +2476,7 @@ static int lpuart_probe(struct platform_
|
||||||
return PTR_ERR(sport->port.membase);
|
return PTR_ERR(sport->port.membase);
|
||||||
|
|
||||||
sport->port.membase += sdata->reg_off;
|
sport->port.membase += sdata->reg_off;
|
||||||
|
@ -60,7 +60,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
/* Rx DMA timeout in ms, which is used to calculate Rx ring buffer size */
|
/* Rx DMA timeout in ms, which is used to calculate Rx ring buffer size */
|
||||||
#define DMA_RX_TIMEOUT (10)
|
#define DMA_RX_TIMEOUT (10)
|
||||||
|
|
||||||
@@ -253,6 +260,9 @@ struct lpuart_port {
|
@@ -254,6 +261,9 @@ struct lpuart_port {
|
||||||
unsigned int txfifo_size;
|
unsigned int txfifo_size;
|
||||||
unsigned int rxfifo_size;
|
unsigned int rxfifo_size;
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
bool lpuart_dma_tx_use;
|
bool lpuart_dma_tx_use;
|
||||||
bool lpuart_dma_rx_use;
|
bool lpuart_dma_rx_use;
|
||||||
struct dma_chan *dma_tx_chan;
|
struct dma_chan *dma_tx_chan;
|
||||||
@@ -278,28 +288,38 @@ struct lpuart_soc_data {
|
@@ -279,33 +289,45 @@ struct lpuart_soc_data {
|
||||||
enum lpuart_type devtype;
|
enum lpuart_type devtype;
|
||||||
char iotype;
|
char iotype;
|
||||||
u8 reg_off;
|
u8 reg_off;
|
||||||
@ -85,13 +85,20 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
+ .rx_dma_cyclic = true,
|
+ .rx_dma_cyclic = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct lpuart_soc_data ls_data = {
|
static const struct lpuart_soc_data ls1021a_data = {
|
||||||
.devtype = LS1021A_LPUART,
|
.devtype = LS1021A_LPUART,
|
||||||
.iotype = UPIO_MEM32BE,
|
.iotype = UPIO_MEM32BE,
|
||||||
+ .rx_watermark = 0,
|
+ .rx_watermark = 0,
|
||||||
+ .rx_dma_cyclic = true,
|
+ .rx_dma_cyclic = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct lpuart_soc_data ls1028a_data = {
|
||||||
|
.devtype = LS1028A_LPUART,
|
||||||
|
.iotype = UPIO_MEM32,
|
||||||
|
+ .rx_watermark = 0,
|
||||||
|
+ .rx_dma_cyclic = true,
|
||||||
|
};
|
||||||
|
|
||||||
static struct lpuart_soc_data imx7ulp_data = {
|
static struct lpuart_soc_data imx7ulp_data = {
|
||||||
.devtype = IMX7ULP_LPUART,
|
.devtype = IMX7ULP_LPUART,
|
||||||
.iotype = UPIO_MEM32,
|
.iotype = UPIO_MEM32,
|
||||||
@ -109,15 +116,15 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct of_device_id lpuart_dt_ids[] = {
|
static const struct of_device_id lpuart_dt_ids[] = {
|
||||||
@@ -313,6 +333,7 @@ MODULE_DEVICE_TABLE(of, lpuart_dt_ids);
|
@@ -320,6 +342,7 @@ MODULE_DEVICE_TABLE(of, lpuart_dt_ids);
|
||||||
|
|
||||||
/* Forward declare this for the dma callbacks*/
|
/* Forward declare this for the dma callbacks*/
|
||||||
static void lpuart_dma_tx_complete(void *arg);
|
static void lpuart_dma_tx_complete(void *arg);
|
||||||
+static int lpuart_sched_rx_dma(struct lpuart_port *sport);
|
+static int lpuart_sched_rx_dma(struct lpuart_port *sport);
|
||||||
|
|
||||||
static inline bool is_imx8qxp_lpuart(struct lpuart_port *sport)
|
static inline bool is_layerscape_lpuart(struct lpuart_port *sport)
|
||||||
{
|
{
|
||||||
@@ -998,19 +1019,15 @@ static irqreturn_t lpuart32_int(int irq,
|
@@ -1011,19 +1034,15 @@ static irqreturn_t lpuart32_int(int irq,
|
||||||
if ((sts & UARTSTAT_TDRE) && !sport->lpuart_dma_tx_use)
|
if ((sts & UARTSTAT_TDRE) && !sport->lpuart_dma_tx_use)
|
||||||
lpuart32_txint(sport);
|
lpuart32_txint(sport);
|
||||||
|
|
||||||
@ -141,7 +148,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
if (lpuart_is_32(sport)) {
|
if (lpuart_is_32(sport)) {
|
||||||
unsigned long sr = lpuart32_read(&sport->port, UARTSTAT);
|
unsigned long sr = lpuart32_read(&sport->port, UARTSTAT);
|
||||||
|
|
||||||
@@ -1062,8 +1079,21 @@ static void lpuart_copy_rx_to_tty(struct
|
@@ -1075,8 +1094,21 @@ static void lpuart_copy_rx_to_tty(struct
|
||||||
writeb(cr2, sport->port.membase + UARTCR2);
|
writeb(cr2, sport->port.membase + UARTCR2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -164,7 +171,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
|
|
||||||
spin_lock_irqsave(&sport->port.lock, flags);
|
spin_lock_irqsave(&sport->port.lock, flags);
|
||||||
|
|
||||||
@@ -1126,7 +1156,33 @@ static void lpuart_copy_rx_to_tty(struct
|
@@ -1139,7 +1171,33 @@ static void lpuart_copy_rx_to_tty(struct
|
||||||
spin_unlock_irqrestore(&sport->port.lock, flags);
|
spin_unlock_irqrestore(&sport->port.lock, flags);
|
||||||
|
|
||||||
tty_flip_buffer_push(port);
|
tty_flip_buffer_push(port);
|
||||||
@ -199,7 +206,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void lpuart_dma_rx_complete(void *arg)
|
static void lpuart_dma_rx_complete(void *arg)
|
||||||
@@ -1134,6 +1190,8 @@ static void lpuart_dma_rx_complete(void
|
@@ -1147,6 +1205,8 @@ static void lpuart_dma_rx_complete(void
|
||||||
struct lpuart_port *sport = arg;
|
struct lpuart_port *sport = arg;
|
||||||
|
|
||||||
lpuart_copy_rx_to_tty(sport);
|
lpuart_copy_rx_to_tty(sport);
|
||||||
@ -208,7 +215,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void lpuart_timer_func(struct timer_list *t)
|
static void lpuart_timer_func(struct timer_list *t)
|
||||||
@@ -1141,13 +1199,78 @@ static void lpuart_timer_func(struct tim
|
@@ -1154,13 +1214,78 @@ static void lpuart_timer_func(struct tim
|
||||||
struct lpuart_port *sport = from_timer(sport, t, lpuart_timer);
|
struct lpuart_port *sport = from_timer(sport, t, lpuart_timer);
|
||||||
|
|
||||||
lpuart_copy_rx_to_tty(sport);
|
lpuart_copy_rx_to_tty(sport);
|
||||||
@ -291,7 +298,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
int bits, baud;
|
int bits, baud;
|
||||||
struct tty_port *port = &sport->port.state->port;
|
struct tty_port *port = &sport->port.state->port;
|
||||||
struct tty_struct *tty = port->tty;
|
struct tty_struct *tty = port->tty;
|
||||||
@@ -1167,6 +1290,18 @@ static inline int lpuart_start_rx_dma(st
|
@@ -1180,6 +1305,18 @@ static inline int lpuart_start_rx_dma(st
|
||||||
sport->rx_dma_rng_buf_len = (1 << (fls(sport->rx_dma_rng_buf_len) - 1));
|
sport->rx_dma_rng_buf_len = (1 << (fls(sport->rx_dma_rng_buf_len) - 1));
|
||||||
if (sport->rx_dma_rng_buf_len < 16)
|
if (sport->rx_dma_rng_buf_len < 16)
|
||||||
sport->rx_dma_rng_buf_len = 16;
|
sport->rx_dma_rng_buf_len = 16;
|
||||||
@ -310,7 +317,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
|
|
||||||
ring->buf = kzalloc(sport->rx_dma_rng_buf_len, GFP_ATOMIC);
|
ring->buf = kzalloc(sport->rx_dma_rng_buf_len, GFP_ATOMIC);
|
||||||
if (!ring->buf)
|
if (!ring->buf)
|
||||||
@@ -1192,32 +1327,7 @@ static inline int lpuart_start_rx_dma(st
|
@@ -1205,32 +1342,7 @@ static inline int lpuart_start_rx_dma(st
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -344,7 +351,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void lpuart_dma_rx_free(struct uart_port *port)
|
static void lpuart_dma_rx_free(struct uart_port *port)
|
||||||
@@ -1403,8 +1513,10 @@ static void lpuart_setup_watermark(struc
|
@@ -1416,8 +1528,10 @@ static void lpuart_setup_watermark(struc
|
||||||
writeb(UARTSFIFO_RXUF, sport->port.membase + UARTSFIFO);
|
writeb(UARTSFIFO_RXUF, sport->port.membase + UARTSFIFO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -356,7 +363,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
|
|
||||||
/* Restore cr2 */
|
/* Restore cr2 */
|
||||||
writeb(cr2_saved, sport->port.membase + UARTCR2);
|
writeb(cr2_saved, sport->port.membase + UARTCR2);
|
||||||
@@ -1425,6 +1537,7 @@ static void lpuart32_setup_watermark(str
|
@@ -1438,6 +1552,7 @@ static void lpuart32_setup_watermark(str
|
||||||
{
|
{
|
||||||
unsigned long val, ctrl;
|
unsigned long val, ctrl;
|
||||||
unsigned long ctrl_saved;
|
unsigned long ctrl_saved;
|
||||||
@ -364,7 +371,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
|
|
||||||
ctrl = lpuart32_read(&sport->port, UARTCTRL);
|
ctrl = lpuart32_read(&sport->port, UARTCTRL);
|
||||||
ctrl_saved = ctrl;
|
ctrl_saved = ctrl;
|
||||||
@@ -1436,12 +1549,26 @@ static void lpuart32_setup_watermark(str
|
@@ -1449,12 +1564,26 @@ static void lpuart32_setup_watermark(str
|
||||||
val = lpuart32_read(&sport->port, UARTFIFO);
|
val = lpuart32_read(&sport->port, UARTFIFO);
|
||||||
val |= UARTFIFO_TXFE | UARTFIFO_RXFE;
|
val |= UARTFIFO_TXFE | UARTFIFO_RXFE;
|
||||||
val |= UARTFIFO_TXFLUSH | UARTFIFO_RXFLUSH;
|
val |= UARTFIFO_TXFLUSH | UARTFIFO_RXFLUSH;
|
||||||
@ -392,7 +399,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
/* Restore cr2 */
|
/* Restore cr2 */
|
||||||
lpuart32_write(&sport->port, ctrl_saved, UARTCTRL);
|
lpuart32_write(&sport->port, ctrl_saved, UARTCTRL);
|
||||||
}
|
}
|
||||||
@@ -1453,17 +1580,29 @@ static void lpuart32_setup_watermark_ena
|
@@ -1466,17 +1595,29 @@ static void lpuart32_setup_watermark_ena
|
||||||
lpuart32_setup_watermark(sport);
|
lpuart32_setup_watermark(sport);
|
||||||
|
|
||||||
temp = lpuart32_read(&sport->port, UARTCTRL);
|
temp = lpuart32_read(&sport->port, UARTCTRL);
|
||||||
@ -423,7 +430,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
static void lpuart_tx_dma_startup(struct lpuart_port *sport)
|
static void lpuart_tx_dma_startup(struct lpuart_port *sport)
|
||||||
{
|
{
|
||||||
u32 uartbaud;
|
u32 uartbaud;
|
||||||
@@ -1527,19 +1666,23 @@ static int lpuart_startup(struct uart_po
|
@@ -1540,19 +1681,23 @@ static int lpuart_startup(struct uart_po
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -454,7 +461,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
if (!sport->lpuart_dma_tx_use)
|
if (!sport->lpuart_dma_tx_use)
|
||||||
temp |= UARTCTRL_TIE;
|
temp |= UARTCTRL_TIE;
|
||||||
lpuart32_write(&sport->port, temp, UARTCTRL);
|
lpuart32_write(&sport->port, temp, UARTCTRL);
|
||||||
@@ -1572,12 +1715,12 @@ static int lpuart32_startup(struct uart_
|
@@ -1596,12 +1741,12 @@ static int lpuart32_startup(struct uart_
|
||||||
|
|
||||||
spin_lock_irqsave(&sport->port.lock, flags);
|
spin_lock_irqsave(&sport->port.lock, flags);
|
||||||
|
|
||||||
@ -469,7 +476,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
lpuart32_configure(sport);
|
lpuart32_configure(sport);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&sport->port.lock, flags);
|
spin_unlock_irqrestore(&sport->port.lock, flags);
|
||||||
@@ -1587,7 +1730,7 @@ static int lpuart32_startup(struct uart_
|
@@ -1611,7 +1756,7 @@ static int lpuart32_startup(struct uart_
|
||||||
static void lpuart_dma_shutdown(struct lpuart_port *sport)
|
static void lpuart_dma_shutdown(struct lpuart_port *sport)
|
||||||
{
|
{
|
||||||
if (sport->lpuart_dma_rx_use) {
|
if (sport->lpuart_dma_rx_use) {
|
||||||
@ -478,7 +485,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
lpuart_dma_rx_free(&sport->port);
|
lpuart_dma_rx_free(&sport->port);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1628,11 +1771,22 @@ static void lpuart32_shutdown(struct uar
|
@@ -1652,11 +1797,22 @@ static void lpuart32_shutdown(struct uar
|
||||||
|
|
||||||
spin_lock_irqsave(&port->lock, flags);
|
spin_lock_irqsave(&port->lock, flags);
|
||||||
|
|
||||||
@ -503,7 +510,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
|
|
||||||
spin_unlock_irqrestore(&port->lock, flags);
|
spin_unlock_irqrestore(&port->lock, flags);
|
||||||
|
|
||||||
@@ -1729,10 +1883,10 @@ lpuart_set_termios(struct uart_port *por
|
@@ -1753,10 +1909,10 @@ lpuart_set_termios(struct uart_port *por
|
||||||
* baud rate and restart Rx DMA path.
|
* baud rate and restart Rx DMA path.
|
||||||
*
|
*
|
||||||
* Since timer function acqures sport->port.lock, need to stop before
|
* Since timer function acqures sport->port.lock, need to stop before
|
||||||
@ -516,7 +523,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
lpuart_dma_rx_free(&sport->port);
|
lpuart_dma_rx_free(&sport->port);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1944,10 +2098,10 @@ lpuart32_set_termios(struct uart_port *p
|
@@ -1968,10 +2124,10 @@ lpuart32_set_termios(struct uart_port *p
|
||||||
* baud rate and restart Rx DMA path.
|
* baud rate and restart Rx DMA path.
|
||||||
*
|
*
|
||||||
* Since timer function acqures sport->port.lock, need to stop before
|
* Since timer function acqures sport->port.lock, need to stop before
|
||||||
@ -529,7 +536,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
lpuart_dma_rx_free(&sport->port);
|
lpuart_dma_rx_free(&sport->port);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2456,6 +2610,10 @@ static int lpuart_probe(struct platform_
|
@@ -2480,6 +2636,10 @@ static int lpuart_probe(struct platform_
|
||||||
sport->port.dev = &pdev->dev;
|
sport->port.dev = &pdev->dev;
|
||||||
sport->port.type = PORT_LPUART;
|
sport->port.type = PORT_LPUART;
|
||||||
sport->devtype = sdata->devtype;
|
sport->devtype = sdata->devtype;
|
||||||
@ -540,7 +547,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
ret = platform_get_irq(pdev, 0);
|
ret = platform_get_irq(pdev, 0);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
@@ -2618,7 +2776,7 @@ static int lpuart_suspend(struct device
|
@@ -2642,7 +2802,7 @@ static int lpuart_suspend(struct device
|
||||||
* Rx DMA path before suspend and start Rx DMA path on resume.
|
* Rx DMA path before suspend and start Rx DMA path on resume.
|
||||||
*/
|
*/
|
||||||
if (irq_wake) {
|
if (irq_wake) {
|
||||||
|
@ -12,7 +12,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
|
|
||||||
--- a/drivers/tty/serial/fsl_lpuart.c
|
--- a/drivers/tty/serial/fsl_lpuart.c
|
||||||
+++ b/drivers/tty/serial/fsl_lpuart.c
|
+++ b/drivers/tty/serial/fsl_lpuart.c
|
||||||
@@ -1462,6 +1462,14 @@ static void lpuart32_set_mctrl(struct ua
|
@@ -1477,6 +1477,14 @@ static void lpuart32_set_mctrl(struct ua
|
||||||
temp |= UARTMODIR_TXCTSE;
|
temp |= UARTMODIR_TXCTSE;
|
||||||
|
|
||||||
lpuart32_write(port, temp, UARTMODIR);
|
lpuart32_write(port, temp, UARTMODIR);
|
||||||
|
@ -16,7 +16,7 @@ Signed-off-by: Vipul Kumar <vipul_kumar@mentor.com>
|
|||||||
|
|
||||||
--- a/drivers/tty/serial/fsl_lpuart.c
|
--- a/drivers/tty/serial/fsl_lpuart.c
|
||||||
+++ b/drivers/tty/serial/fsl_lpuart.c
|
+++ b/drivers/tty/serial/fsl_lpuart.c
|
||||||
@@ -490,6 +490,10 @@ static void lpuart_dma_tx_complete(void
|
@@ -505,6 +505,10 @@ static void lpuart_dma_tx_complete(void
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
spin_lock_irqsave(&sport->port.lock, flags);
|
spin_lock_irqsave(&sport->port.lock, flags);
|
||||||
|
@ -59,9 +59,9 @@ Signed-off-by: Shrikant Bobade <Shrikant_Bobade@mentor.com>
|
|||||||
#define UARTFIFO_RXIDEN_RDRF 0x3
|
#define UARTFIFO_RXIDEN_RDRF 0x3
|
||||||
#define UARTCTRL_IDLECFG 0x7
|
#define UARTCTRL_IDLECFG 0x7
|
||||||
|
|
||||||
@@ -335,6 +345,11 @@ MODULE_DEVICE_TABLE(of, lpuart_dt_ids);
|
@@ -350,6 +360,11 @@ static inline bool is_layerscape_lpuart(
|
||||||
static void lpuart_dma_tx_complete(void *arg);
|
sport->devtype == LS1028A_LPUART);
|
||||||
static int lpuart_sched_rx_dma(struct lpuart_port *sport);
|
}
|
||||||
|
|
||||||
+static inline bool is_imx7ulp_lpuart(struct lpuart_port *sport)
|
+static inline bool is_imx7ulp_lpuart(struct lpuart_port *sport)
|
||||||
+{
|
+{
|
||||||
@ -71,7 +71,7 @@ Signed-off-by: Shrikant Bobade <Shrikant_Bobade@mentor.com>
|
|||||||
static inline bool is_imx8qxp_lpuart(struct lpuart_port *sport)
|
static inline bool is_imx8qxp_lpuart(struct lpuart_port *sport)
|
||||||
{
|
{
|
||||||
return sport->devtype == IMX8QXP_LPUART;
|
return sport->devtype == IMX8QXP_LPUART;
|
||||||
@@ -398,6 +413,33 @@ static unsigned int lpuart_get_baud_clk_
|
@@ -413,6 +428,33 @@ static unsigned int lpuart_get_baud_clk_
|
||||||
#define lpuart_enable_clks(x) __lpuart_enable_clks(x, true)
|
#define lpuart_enable_clks(x) __lpuart_enable_clks(x, true)
|
||||||
#define lpuart_disable_clks(x) __lpuart_enable_clks(x, false)
|
#define lpuart_disable_clks(x) __lpuart_enable_clks(x, false)
|
||||||
|
|
||||||
@ -105,7 +105,7 @@ Signed-off-by: Shrikant Bobade <Shrikant_Bobade@mentor.com>
|
|||||||
static void lpuart_stop_tx(struct uart_port *port)
|
static void lpuart_stop_tx(struct uart_port *port)
|
||||||
{
|
{
|
||||||
unsigned char temp;
|
unsigned char temp;
|
||||||
@@ -2702,6 +2744,10 @@ static int lpuart_probe(struct platform_
|
@@ -2728,6 +2770,10 @@ static int lpuart_probe(struct platform_
|
||||||
if (ret)
|
if (ret)
|
||||||
goto failed_attach_port;
|
goto failed_attach_port;
|
||||||
|
|
||||||
@ -116,7 +116,7 @@ Signed-off-by: Shrikant Bobade <Shrikant_Bobade@mentor.com>
|
|||||||
uart_get_rs485_mode(&pdev->dev, &sport->port.rs485);
|
uart_get_rs485_mode(&pdev->dev, &sport->port.rs485);
|
||||||
|
|
||||||
if (sport->port.rs485.flags & SER_RS485_RX_DURING_TX)
|
if (sport->port.rs485.flags & SER_RS485_RX_DURING_TX)
|
||||||
@@ -2725,6 +2771,8 @@ static int lpuart_probe(struct platform_
|
@@ -2751,6 +2797,8 @@ static int lpuart_probe(struct platform_
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
|||||||
|
|
||||||
#define DRIVER_NAME "fsl-lpuart"
|
#define DRIVER_NAME "fsl-lpuart"
|
||||||
#define DEV_NAME "ttyLP"
|
#define DEV_NAME "ttyLP"
|
||||||
@@ -844,6 +845,20 @@ static void lpuart32_start_tx(struct uar
|
@@ -859,6 +860,20 @@ static void lpuart32_start_tx(struct uar
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
|||||||
/* return TIOCSER_TEMT when transmitter is not busy */
|
/* return TIOCSER_TEMT when transmitter is not busy */
|
||||||
static unsigned int lpuart_tx_empty(struct uart_port *port)
|
static unsigned int lpuart_tx_empty(struct uart_port *port)
|
||||||
{
|
{
|
||||||
@@ -2257,6 +2272,7 @@ static const struct uart_ops lpuart_pops
|
@@ -2283,6 +2298,7 @@ static const struct uart_ops lpuart_pops
|
||||||
.break_ctl = lpuart_break_ctl,
|
.break_ctl = lpuart_break_ctl,
|
||||||
.startup = lpuart_startup,
|
.startup = lpuart_startup,
|
||||||
.shutdown = lpuart_shutdown,
|
.shutdown = lpuart_shutdown,
|
||||||
@ -51,7 +51,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
|||||||
.set_termios = lpuart_set_termios,
|
.set_termios = lpuart_set_termios,
|
||||||
.type = lpuart_type,
|
.type = lpuart_type,
|
||||||
.request_port = lpuart_request_port,
|
.request_port = lpuart_request_port,
|
||||||
@@ -2281,6 +2297,7 @@ static const struct uart_ops lpuart32_po
|
@@ -2307,6 +2323,7 @@ static const struct uart_ops lpuart32_po
|
||||||
.break_ctl = lpuart32_break_ctl,
|
.break_ctl = lpuart32_break_ctl,
|
||||||
.startup = lpuart32_startup,
|
.startup = lpuart32_startup,
|
||||||
.shutdown = lpuart32_shutdown,
|
.shutdown = lpuart32_shutdown,
|
||||||
@ -59,7 +59,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
|||||||
.set_termios = lpuart32_set_termios,
|
.set_termios = lpuart32_set_termios,
|
||||||
.type = lpuart_type,
|
.type = lpuart_type,
|
||||||
.request_port = lpuart_request_port,
|
.request_port = lpuart_request_port,
|
||||||
@@ -2740,6 +2757,11 @@ static int lpuart_probe(struct platform_
|
@@ -2766,6 +2783,11 @@ static int lpuart_probe(struct platform_
|
||||||
if (ret)
|
if (ret)
|
||||||
goto failed_irq_request;
|
goto failed_irq_request;
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
|||||||
ret = uart_add_one_port(&lpuart_reg, &sport->port);
|
ret = uart_add_one_port(&lpuart_reg, &sport->port);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto failed_attach_port;
|
goto failed_attach_port;
|
||||||
@@ -2774,6 +2796,9 @@ static int lpuart_probe(struct platform_
|
@@ -2800,6 +2822,9 @@ static int lpuart_probe(struct platform_
|
||||||
failed_reset:
|
failed_reset:
|
||||||
uart_remove_one_port(&lpuart_reg, &sport->port);
|
uart_remove_one_port(&lpuart_reg, &sport->port);
|
||||||
failed_attach_port:
|
failed_attach_port:
|
||||||
@ -81,7 +81,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
|||||||
failed_irq_request:
|
failed_irq_request:
|
||||||
lpuart_disable_clks(sport);
|
lpuart_disable_clks(sport);
|
||||||
failed_clock_enable:
|
failed_clock_enable:
|
||||||
@@ -2800,15 +2825,41 @@ static int lpuart_remove(struct platform
|
@@ -2826,15 +2851,41 @@ static int lpuart_remove(struct platform
|
||||||
if (sport->dma_rx_chan)
|
if (sport->dma_rx_chan)
|
||||||
dma_release_channel(sport->dma_rx_chan);
|
dma_release_channel(sport->dma_rx_chan);
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
|||||||
|
|
||||||
if (lpuart_is_32(sport)) {
|
if (lpuart_is_32(sport)) {
|
||||||
/* disable Rx/Tx and interrupts */
|
/* disable Rx/Tx and interrupts */
|
||||||
@@ -2822,10 +2873,14 @@ static int lpuart_suspend(struct device
|
@@ -2848,10 +2899,14 @@ static int lpuart_suspend(struct device
|
||||||
writeb(temp, sport->port.membase + UARTCR2);
|
writeb(temp, sport->port.membase + UARTCR2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
|||||||
|
|
||||||
if (sport->lpuart_dma_rx_use) {
|
if (sport->lpuart_dma_rx_use) {
|
||||||
/*
|
/*
|
||||||
@@ -2856,9 +2911,6 @@ static int lpuart_suspend(struct device
|
@@ -2882,9 +2937,6 @@ static int lpuart_suspend(struct device
|
||||||
dmaengine_terminate_all(sport->dma_tx_chan);
|
dmaengine_terminate_all(sport->dma_tx_chan);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,7 +148,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2866,9 +2918,11 @@ static int lpuart_resume(struct device *
|
@@ -2892,9 +2944,11 @@ static int lpuart_resume(struct device *
|
||||||
{
|
{
|
||||||
struct lpuart_port *sport = dev_get_drvdata(dev);
|
struct lpuart_port *sport = dev_get_drvdata(dev);
|
||||||
bool irq_wake = irqd_is_wakeup_set(irq_get_irq_data(sport->port.irq));
|
bool irq_wake = irqd_is_wakeup_set(irq_get_irq_data(sport->port.irq));
|
||||||
@ -162,7 +162,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
|||||||
|
|
||||||
if (lpuart_is_32(sport))
|
if (lpuart_is_32(sport))
|
||||||
lpuart32_setup_watermark_enable(sport);
|
lpuart32_setup_watermark_enable(sport);
|
||||||
@@ -2889,13 +2943,23 @@ static int lpuart_resume(struct device *
|
@@ -2915,13 +2969,23 @@ static int lpuart_resume(struct device *
|
||||||
if (lpuart_is_32(sport))
|
if (lpuart_is_32(sport))
|
||||||
lpuart32_configure(sport);
|
lpuart32_configure(sport);
|
||||||
|
|
||||||
@ -188,7 +188,7 @@ Reviewed-by: Robin Gong <yibin.gong@nxp.com>
|
|||||||
|
|
||||||
static struct platform_driver lpuart_driver = {
|
static struct platform_driver lpuart_driver = {
|
||||||
.probe = lpuart_probe,
|
.probe = lpuart_probe,
|
||||||
@@ -2903,7 +2967,7 @@ static struct platform_driver lpuart_dri
|
@@ -2929,7 +2993,7 @@ static struct platform_driver lpuart_dri
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "fsl-lpuart",
|
.name = "fsl-lpuart",
|
||||||
.of_match_table = lpuart_dt_ids,
|
.of_match_table = lpuart_dt_ids,
|
||||||
|
@ -28,7 +28,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
#include <linux/pm_domain.h>
|
#include <linux/pm_domain.h>
|
||||||
#include <linux/pm_runtime.h>
|
#include <linux/pm_runtime.h>
|
||||||
#include <linux/reset.h>
|
#include <linux/reset.h>
|
||||||
@@ -1707,10 +1708,23 @@ static void lpuart_rx_dma_startup(struct
|
@@ -1722,10 +1723,23 @@ static void lpuart_rx_dma_startup(struct
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
unsigned char temp;
|
unsigned char temp;
|
||||||
|
|
||||||
/* determine FIFO size and enable FIFO mode */
|
/* determine FIFO size and enable FIFO mode */
|
||||||
@@ -1723,14 +1737,7 @@ static int lpuart_startup(struct uart_po
|
@@ -1738,14 +1752,7 @@ static int lpuart_startup(struct uart_po
|
||||||
sport->rxfifo_size = UARTFIFO_DEPTH((temp >> UARTPFIFO_RXSIZE_OFF) &
|
sport->rxfifo_size = UARTFIFO_DEPTH((temp >> UARTPFIFO_RXSIZE_OFF) &
|
||||||
UARTPFIFO_FIFOSIZE_MASK);
|
UARTPFIFO_FIFOSIZE_MASK);
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -1757,11 +1764,27 @@ static void lpuart32_configure(struct lp
|
@@ -1772,11 +1779,27 @@ static void lpuart32_configure(struct lp
|
||||||
lpuart32_write(&sport->port, temp, UARTCTRL);
|
lpuart32_write(&sport->port, temp, UARTCTRL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,9 +98,9 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
unsigned long temp;
|
unsigned long temp;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@@ -1782,17 +1805,8 @@ static int lpuart32_startup(struct uart_
|
@@ -1808,17 +1831,8 @@ static int lpuart32_startup(struct uart_
|
||||||
sport->rxfifo_size = UARTFIFO_DEPTH((temp >> UARTFIFO_RXSIZE_OFF) &
|
sport->port.fifosize = sport->txfifo_size;
|
||||||
UARTFIFO_FIFOSIZE_MASK);
|
}
|
||||||
|
|
||||||
- spin_lock_irqsave(&sport->port.lock, flags);
|
- spin_lock_irqsave(&sport->port.lock, flags);
|
||||||
-
|
-
|
||||||
@ -117,7 +117,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2850,108 +2864,205 @@ static int lpuart_runtime_resume(struct
|
@@ -2876,108 +2890,205 @@ static int lpuart_runtime_resume(struct
|
||||||
return lpuart_enable_clks(sport);
|
return lpuart_enable_clks(sport);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
|
|
||||||
--- a/drivers/tty/serial/fsl_lpuart.c
|
--- a/drivers/tty/serial/fsl_lpuart.c
|
||||||
+++ b/drivers/tty/serial/fsl_lpuart.c
|
+++ b/drivers/tty/serial/fsl_lpuart.c
|
||||||
@@ -2109,11 +2109,12 @@ lpuart32_set_termios(struct uart_port *p
|
@@ -2135,11 +2135,12 @@ lpuart32_set_termios(struct uart_port *p
|
||||||
{
|
{
|
||||||
struct lpuart_port *sport = container_of(port, struct lpuart_port, port);
|
struct lpuart_port *sport = container_of(port, struct lpuart_port, port);
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
@ -28,7 +28,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
modem = lpuart32_read(&sport->port, UARTMODIR);
|
modem = lpuart32_read(&sport->port, UARTMODIR);
|
||||||
/*
|
/*
|
||||||
* only support CS8 and CS7, and for CS7 must enable PE.
|
* only support CS8 and CS7, and for CS7 must enable PE.
|
||||||
@@ -2150,7 +2151,9 @@ lpuart32_set_termios(struct uart_port *p
|
@@ -2176,7 +2177,9 @@ lpuart32_set_termios(struct uart_port *p
|
||||||
}
|
}
|
||||||
|
|
||||||
if (termios->c_cflag & CSTOPB)
|
if (termios->c_cflag & CSTOPB)
|
||||||
@ -39,7 +39,7 @@ Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|||||||
|
|
||||||
/* parity must be enabled when CS7 to match 8-bits format */
|
/* parity must be enabled when CS7 to match 8-bits format */
|
||||||
if ((termios->c_cflag & CSIZE) == CS7)
|
if ((termios->c_cflag & CSIZE) == CS7)
|
||||||
@@ -2220,6 +2223,7 @@ lpuart32_set_termios(struct uart_port *p
|
@@ -2246,6 +2249,7 @@ lpuart32_set_termios(struct uart_port *p
|
||||||
lpuart32_write(&sport->port, old_ctrl & ~(UARTCTRL_TE | UARTCTRL_RE),
|
lpuart32_write(&sport->port, old_ctrl & ~(UARTCTRL_TE | UARTCTRL_RE),
|
||||||
UARTCTRL);
|
UARTCTRL);
|
||||||
|
|
||||||
|
@ -1,68 +0,0 @@
|
|||||||
From 932dac0380bbf7276d4111c35674679bc9ad6384 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Vabhav Sharma <vabhav.sharma@nxp.com>
|
|
||||||
Date: Thu, 31 Oct 2019 19:20:47 +0530
|
|
||||||
Subject: [PATCH] tty: serial: lpuart: add LS1028A support
|
|
||||||
|
|
||||||
NXP LS1028A lpuart is the same IP as LS1021A, but it is
|
|
||||||
little endian for register accessing instead of big endian
|
|
||||||
on LS1021A.
|
|
||||||
|
|
||||||
So add LS1028A matching data to distiguish the chips.
|
|
||||||
|
|
||||||
Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
|
|
||||||
Signed-off-by: Vabhav Sharma <vabhav.sharma@nxp.com>
|
|
||||||
Acked-by: Fugang Duan <fugang.duan@nxp.com>
|
|
||||||
---
|
|
||||||
drivers/tty/serial/fsl_lpuart.c | 14 ++++++++++++--
|
|
||||||
1 file changed, 12 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/tty/serial/fsl_lpuart.c
|
|
||||||
+++ b/drivers/tty/serial/fsl_lpuart.c
|
|
||||||
@@ -3,6 +3,7 @@
|
|
||||||
* Freescale lpuart serial port driver
|
|
||||||
*
|
|
||||||
* Copyright 2012-2014 Freescale Semiconductor, Inc.
|
|
||||||
+ * Copyright 2019 NXP
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if defined(CONFIG_SERIAL_FSL_LPUART_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
|
|
||||||
@@ -260,6 +261,7 @@ static DEFINE_IDA(fsl_lpuart_ida);
|
|
||||||
enum lpuart_type {
|
|
||||||
VF610_LPUART,
|
|
||||||
LS1021A_LPUART,
|
|
||||||
+ LS1028A_LPUART,
|
|
||||||
IMX7ULP_LPUART,
|
|
||||||
IMX8QXP_LPUART,
|
|
||||||
};
|
|
||||||
@@ -311,13 +313,20 @@ static const struct lpuart_soc_data vf_d
|
|
||||||
.rx_dma_cyclic = true,
|
|
||||||
};
|
|
||||||
|
|
||||||
-static const struct lpuart_soc_data ls_data = {
|
|
||||||
+static const struct lpuart_soc_data ls1021a_data = {
|
|
||||||
.devtype = LS1021A_LPUART,
|
|
||||||
.iotype = UPIO_MEM32BE,
|
|
||||||
.rx_watermark = 0,
|
|
||||||
.rx_dma_cyclic = true,
|
|
||||||
};
|
|
||||||
|
|
||||||
+static const struct lpuart_soc_data ls1028a_data = {
|
|
||||||
+ .devtype = LS1028A_LPUART,
|
|
||||||
+ .iotype = UPIO_MEM32,
|
|
||||||
+ .rx_watermark = 0,
|
|
||||||
+ .rx_dma_cyclic = true,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
static struct lpuart_soc_data imx7ulp_data = {
|
|
||||||
.devtype = IMX7ULP_LPUART,
|
|
||||||
.iotype = UPIO_MEM32,
|
|
||||||
@@ -336,7 +345,8 @@ static struct lpuart_soc_data imx8qxp_da
|
|
||||||
|
|
||||||
static const struct of_device_id lpuart_dt_ids[] = {
|
|
||||||
{ .compatible = "fsl,vf610-lpuart", .data = &vf_data, },
|
|
||||||
- { .compatible = "fsl,ls1021a-lpuart", .data = &ls_data, },
|
|
||||||
+ { .compatible = "fsl,ls1021a-lpuart", .data = &ls1021a_data, },
|
|
||||||
+ { .compatible = "fsl,ls1028a-lpuart", .data = &ls1028a_data, },
|
|
||||||
{ .compatible = "fsl,imx7ulp-lpuart", .data = &imx7ulp_data, },
|
|
||||||
{ .compatible = "fsl,imx8qxp-lpuart", .data = &imx8qxp_data, },
|
|
||||||
{ /* sentinel */ }
|
|
@ -24,7 +24,7 @@ Signed-off-by: Peng Fan <peng.fan@nxp.com>
|
|||||||
|
|
||||||
--- a/drivers/tty/serial/fsl_lpuart.c
|
--- a/drivers/tty/serial/fsl_lpuart.c
|
||||||
+++ b/drivers/tty/serial/fsl_lpuart.c
|
+++ b/drivers/tty/serial/fsl_lpuart.c
|
||||||
@@ -2598,7 +2598,9 @@ static int __init lpuart32_early_console
|
@@ -2614,7 +2614,9 @@ static int __init lpuart32_early_console
|
||||||
if (!device->port.membase)
|
if (!device->port.membase)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/drivers/net/phy/Kconfig
|
+++ b/drivers/net/phy/Kconfig
|
||||||
@@ -333,6 +333,8 @@ config RTL8367B_PHY
|
@@ -329,6 +329,8 @@ config RTL8367B_PHY
|
||||||
|
|
||||||
endif # RTL8366_SMI
|
endif # RTL8366_SMI
|
||||||
|
|
||||||
@ -11,7 +11,7 @@
|
|||||||
config SFP
|
config SFP
|
||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/drivers/net/phy/Makefile
|
+++ b/drivers/net/phy/Makefile
|
||||||
@@ -110,3 +110,5 @@ obj-$(CONFIG_STE10XP) += ste10Xp.o
|
@@ -109,3 +109,5 @@ obj-$(CONFIG_STE10XP) += ste10Xp.o
|
||||||
obj-$(CONFIG_TERANETICS_PHY) += teranetics.o
|
obj-$(CONFIG_TERANETICS_PHY) += teranetics.o
|
||||||
obj-$(CONFIG_VITESSE_PHY) += vitesse.o
|
obj-$(CONFIG_VITESSE_PHY) += vitesse.o
|
||||||
obj-$(CONFIG_XILINX_GMII2RGMII) += xilinx_gmii2rgmii.o
|
obj-$(CONFIG_XILINX_GMII2RGMII) += xilinx_gmii2rgmii.o
|
||||||
|
@ -122,7 +122,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
reg_1p8v: regulator-1p8v {
|
reg_1p8v: regulator-1p8v {
|
||||||
@@ -101,23 +115,82 @@
|
@@ -101,23 +113,82 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
ð {
|
ð {
|
||||||
@ -212,7 +212,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -185,15 +258,28 @@
|
@@ -185,15 +256,28 @@
|
||||||
|
|
||||||
&pcie {
|
&pcie {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
@ -242,7 +242,7 @@
|
|||||||
/* eMMC is shared pin with parallel NAND */
|
/* eMMC is shared pin with parallel NAND */
|
||||||
emmc_pins_default: emmc-pins-default {
|
emmc_pins_default: emmc-pins-default {
|
||||||
mux {
|
mux {
|
||||||
@@ -460,11 +546,11 @@
|
@@ -460,11 +544,11 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&sata {
|
&sata {
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
"mediatek,mt8173-nor";
|
"mediatek,mt8173-nor";
|
||||||
--- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
--- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
||||||
+++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
+++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
||||||
@@ -101,7 +101,7 @@
|
@@ -99,7 +99,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&bch {
|
&bch {
|
||||||
@ -31,7 +31,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&btif {
|
&btif {
|
||||||
@@ -553,6 +553,62 @@
|
@@ -551,6 +551,62 @@
|
||||||
status = "disable";
|
status = "disable";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
"syscon";
|
"syscon";
|
||||||
--- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
--- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
||||||
+++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
+++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
||||||
@@ -591,7 +591,7 @@
|
@@ -589,7 +589,7 @@
|
||||||
reg = <0x140000 0x0080000>;
|
reg = <0x140000 0x0080000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -29,7 +29,7 @@
|
|||||||
label = "Factory";
|
label = "Factory";
|
||||||
reg = <0x1c0000 0x0040000>;
|
reg = <0x1c0000 0x0040000>;
|
||||||
};
|
};
|
||||||
@@ -648,3 +648,8 @@
|
@@ -646,3 +646,8 @@
|
||||||
pinctrl-0 = <&watchdog_pins>;
|
pinctrl-0 = <&watchdog_pins>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
depends on HAS_IOMEM
|
depends on HAS_IOMEM
|
||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/drivers/net/phy/Makefile
|
+++ b/drivers/net/phy/Makefile
|
||||||
@@ -111,4 +111,5 @@ obj-$(CONFIG_TERANETICS_PHY) += teraneti
|
@@ -110,4 +110,5 @@ obj-$(CONFIG_TERANETICS_PHY) += teraneti
|
||||||
obj-$(CONFIG_VITESSE_PHY) += vitesse.o
|
obj-$(CONFIG_VITESSE_PHY) += vitesse.o
|
||||||
obj-$(CONFIG_XILINX_GMII2RGMII) += xilinx_gmii2rgmii.o
|
obj-$(CONFIG_XILINX_GMII2RGMII) += xilinx_gmii2rgmii.o
|
||||||
obj-$(CONFIG_MT753X_GSW) += mtk/mt753x/
|
obj-$(CONFIG_MT753X_GSW) += mtk/mt753x/
|
||||||
|
@ -389,7 +389,7 @@ Signed-off-by: chuanjia.liu <Chuanjia.Liu@mediatek.com>
|
|||||||
<0 0 0 2 &pcie_intc1 1>,
|
<0 0 0 2 &pcie_intc1 1>,
|
||||||
--- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
--- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
||||||
+++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
+++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
||||||
@@ -256,18 +256,16 @@
|
@@ -254,18 +254,16 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
--- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
||||||
+++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
+++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
|
||||||
@@ -591,17 +591,17 @@
|
@@ -589,17 +589,17 @@
|
||||||
|
|
||||||
factory: partition@1c0000 {
|
factory: partition@1c0000 {
|
||||||
label = "Factory";
|
label = "Factory";
|
||||||
|
@ -30,7 +30,6 @@ Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
|
|||||||
---
|
---
|
||||||
.../dts/marvell/armada-3720-espressobin-v7-emmc.dts | 10 ++++++++--
|
.../dts/marvell/armada-3720-espressobin-v7-emmc.dts | 10 ++++++++--
|
||||||
.../boot/dts/marvell/armada-3720-espressobin-v7.dts | 10 ++++++++--
|
.../boot/dts/marvell/armada-3720-espressobin-v7.dts | 10 ++++++++--
|
||||||
.../boot/dts/marvell/armada-3720-espressobin.dtsi | 12 ++++++++----
|
|
||||||
3 files changed, 24 insertions(+), 8 deletions(-)
|
3 files changed, 24 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
--- a/arch/arm64/boot/dts/marvell/armada-3720-espressobin-v7-emmc.dts
|
--- a/arch/arm64/boot/dts/marvell/armada-3720-espressobin-v7-emmc.dts
|
||||||
@ -87,48 +86,3 @@ Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
|
|||||||
reg = <3>;
|
reg = <3>;
|
||||||
label = "wan";
|
label = "wan";
|
||||||
phy-handle = <&switch0phy2>;
|
phy-handle = <&switch0phy2>;
|
||||||
--- a/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts
|
|
||||||
@@ -21,6 +21,10 @@
|
|
||||||
|
|
||||||
aliases {
|
|
||||||
ethernet0 = ð0;
|
|
||||||
+ /* for dsa slave device */
|
|
||||||
+ ethernet1 = &switch0port1;
|
|
||||||
+ ethernet2 = &switch0port2;
|
|
||||||
+ ethernet3 = &switch0port3;
|
|
||||||
serial0 = &uart0;
|
|
||||||
serial1 = &uart1;
|
|
||||||
};
|
|
||||||
@@ -147,7 +151,7 @@
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
- port@0 {
|
|
||||||
+ switch0port0: port@0 {
|
|
||||||
reg = <0>;
|
|
||||||
label = "cpu";
|
|
||||||
ethernet = <ð0>;
|
|
||||||
@@ -158,19 +162,19 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
- port@1 {
|
|
||||||
+ switch0port1: port@1 {
|
|
||||||
reg = <1>;
|
|
||||||
label = "wan";
|
|
||||||
phy-handle = <&switch0phy0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
- port@2 {
|
|
||||||
+ switch0port2: port@2 {
|
|
||||||
reg = <2>;
|
|
||||||
label = "lan0";
|
|
||||||
phy-handle = <&switch0phy1>;
|
|
||||||
};
|
|
||||||
|
|
||||||
- port@3 {
|
|
||||||
+ switch0port3: port@3 {
|
|
||||||
reg = <3>;
|
|
||||||
label = "lan1";
|
|
||||||
phy-handle = <&switch0phy2>;
|
|
||||||
|
@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
|||||||
|
|
||||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||||
@@ -4931,6 +4931,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
@@ -4930,6 +4930,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||||
struct mtd_info *mtd = &nor->mtd;
|
struct mtd_info *mtd = &nor->mtd;
|
||||||
struct device_node *np = spi_nor_get_flash_node(nor);
|
struct device_node *np = spi_nor_get_flash_node(nor);
|
||||||
struct spi_nor_flash_parameter *params = &nor->params;
|
struct spi_nor_flash_parameter *params = &nor->params;
|
||||||
@ -18,7 +18,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
|||||||
int ret;
|
int ret;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -4993,7 +4994,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
@@ -4992,7 +4993,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||||
/* Init flash parameters based on flash_info struct and SFDP */
|
/* Init flash parameters based on flash_info struct and SFDP */
|
||||||
spi_nor_init_params(nor);
|
spi_nor_init_params(nor);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user