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:
		 John Audia
					John Audia
				
			
				
					committed by
					
						 Adrian Schmutzler
						Adrian Schmutzler
					
				
			
			
				
	
			
			
			 Adrian Schmutzler
						Adrian Schmutzler
					
				
			
						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); | ||||||
|   |   | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user