rockchip: switch linux-6.6
Signed-off-by: sbwml <admin@cooluc.com>
This commit is contained in:
parent
69350f534b
commit
9a0e9f17d5
2
Makefile
2
Makefile
@ -7,7 +7,7 @@ BOARDNAME:=Rockchip
|
|||||||
FEATURES:=ext4 audio usb usbgadget display gpio fpu pci pcie rootfs-part boot-part squashfs
|
FEATURES:=ext4 audio usb usbgadget display gpio fpu pci pcie rootfs-part boot-part squashfs
|
||||||
SUBTARGETS:=armv8
|
SUBTARGETS:=armv8
|
||||||
|
|
||||||
KERNEL_PATCHVER:=6.1
|
KERNEL_PATCHVER:=6.6
|
||||||
|
|
||||||
define Target/Description
|
define Target/Description
|
||||||
Build firmware image for Rockchip SoC devices.
|
Build firmware image for Rockchip SoC devices.
|
||||||
|
@ -117,6 +117,7 @@ CONFIG_CLK_RK3328=y
|
|||||||
CONFIG_CLK_RK3368=y
|
CONFIG_CLK_RK3368=y
|
||||||
CONFIG_CLK_RK3399=y
|
CONFIG_CLK_RK3399=y
|
||||||
CONFIG_CLK_RK3568=y
|
CONFIG_CLK_RK3568=y
|
||||||
|
# CONFIG_CLK_RK3588 is not set
|
||||||
CONFIG_CLONE_BACKWARDS=y
|
CONFIG_CLONE_BACKWARDS=y
|
||||||
CONFIG_CMA=y
|
CONFIG_CMA=y
|
||||||
CONFIG_CMA_ALIGNMENT=8
|
CONFIG_CMA_ALIGNMENT=8
|
||||||
@ -396,6 +397,8 @@ CONFIG_MEMORY_ISOLATION=y
|
|||||||
CONFIG_MFD_CORE=y
|
CONFIG_MFD_CORE=y
|
||||||
# CONFIG_MFD_KHADAS_MCU is not set
|
# CONFIG_MFD_KHADAS_MCU is not set
|
||||||
CONFIG_MFD_RK808=y
|
CONFIG_MFD_RK808=y
|
||||||
|
CONFIG_MFD_RK8XX_I2C=y
|
||||||
|
CONFIG_MFD_RK8XX_SPI=y
|
||||||
CONFIG_MFD_SYSCON=y
|
CONFIG_MFD_SYSCON=y
|
||||||
CONFIG_MIGRATION=y
|
CONFIG_MIGRATION=y
|
||||||
CONFIG_MMC=y
|
CONFIG_MMC=y
|
@ -1,9 +0,0 @@
|
|||||||
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
|
||||||
@@ -71,4 +71,6 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-ro
|
|
||||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-soquartz-cm4.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-bpi-r2-pro.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-evb1-v10.dtb
|
|
||||||
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5c.dtb
|
|
||||||
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5s.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rock-3a.dtb
|
|
@ -1,59 +0,0 @@
|
|||||||
From 59e0ec5e5916ed4fac238a3da39aa0659831c41c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Heiko Stuebner <heiko@sntech.de>
|
|
||||||
Date: Sun, 30 Oct 2022 20:34:42 +0100
|
|
||||||
Subject: [PATCH 6/7] arm64: dts: rockchip: fix spdif@fe460000 ordering on
|
|
||||||
rk356x
|
|
||||||
|
|
||||||
Move the node to its correct position, based on its
|
|
||||||
mmio-address.
|
|
||||||
|
|
||||||
Link: https://lore.kernel.org/all/20221030193708.1671069-1-heiko@sntech.de
|
|
||||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
|
||||||
---
|
|
||||||
arch/arm64/boot/dts/rockchip/rk356x.dtsi | 28 ++++++++++++------------
|
|
||||||
1 file changed, 14 insertions(+), 14 deletions(-)
|
|
||||||
|
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
|
||||||
@@ -1060,20 +1060,6 @@
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
- spdif: spdif@fe460000 {
|
|
||||||
- compatible = "rockchip,rk3568-spdif";
|
|
||||||
- reg = <0x0 0xfe460000 0x0 0x1000>;
|
|
||||||
- interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
- clock-names = "mclk", "hclk";
|
|
||||||
- clocks = <&cru MCLK_SPDIF_8CH>, <&cru HCLK_SPDIF_8CH>;
|
|
||||||
- dmas = <&dmac1 1>;
|
|
||||||
- dma-names = "tx";
|
|
||||||
- pinctrl-names = "default";
|
|
||||||
- pinctrl-0 = <&spdifm0_tx>;
|
|
||||||
- #sound-dai-cells = <0>;
|
|
||||||
- status = "disabled";
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
i2s0_8ch: i2s@fe400000 {
|
|
||||||
compatible = "rockchip,rk3568-i2s-tdm";
|
|
||||||
reg = <0x0 0xfe400000 0x0 0x1000>;
|
|
||||||
@@ -1152,6 +1138,20 @@
|
|
||||||
#sound-dai-cells = <0>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
+
|
|
||||||
+ spdif: spdif@fe460000 {
|
|
||||||
+ compatible = "rockchip,rk3568-spdif";
|
|
||||||
+ reg = <0x0 0xfe460000 0x0 0x1000>;
|
|
||||||
+ interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
+ clock-names = "mclk", "hclk";
|
|
||||||
+ clocks = <&cru MCLK_SPDIF_8CH>, <&cru HCLK_SPDIF_8CH>;
|
|
||||||
+ dmas = <&dmac1 1>;
|
|
||||||
+ dma-names = "tx";
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&spdifm0_tx>;
|
|
||||||
+ #sound-dai-cells = <0>;
|
|
||||||
+ status = "disabled";
|
|
||||||
+ };
|
|
||||||
|
|
||||||
dmac0: dma-controller@fe530000 {
|
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
|
@ -1,45 +0,0 @@
|
|||||||
From 6c51234cd4e1bfd637c3aab0a94893e832670fe5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Shengyu Qu <wiagn233@outlook.com>
|
|
||||||
Date: Sun, 30 Oct 2022 01:09:04 +0800
|
|
||||||
Subject: [PATCH 7/7] arm64: dts: rockchip: RK356x: Add I2S2 device node
|
|
||||||
|
|
||||||
This patch adds I2S2 device tree node for RK3566/RK3568.
|
|
||||||
|
|
||||||
Signed-off-by: Shengyu Qu <wiagn233@outlook.com>
|
|
||||||
Link: https://lore.kernel.org/r/OS3P286MB259771C12F2B15A4DDF435FE98359@OS3P286MB2597.JPNP286.PROD.OUTLOOK.COM
|
|
||||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
|
||||||
---
|
|
||||||
arch/arm64/boot/dts/rockchip/rk356x.dtsi | 22 ++++++++++++++++++++++
|
|
||||||
1 file changed, 22 insertions(+)
|
|
||||||
|
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
|
||||||
@@ -1102,6 +1102,28 @@
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
+ i2s2_2ch: i2s@fe420000 {
|
|
||||||
+ compatible = "rockchip,rk3568-i2s-tdm";
|
|
||||||
+ reg = <0x0 0xfe420000 0x0 0x1000>;
|
|
||||||
+ interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
+ assigned-clocks = <&cru CLK_I2S2_2CH_SRC>;
|
|
||||||
+ assigned-clock-rates = <1188000000>;
|
|
||||||
+ clocks = <&cru MCLK_I2S2_2CH>, <&cru MCLK_I2S2_2CH>, <&cru HCLK_I2S2_2CH>;
|
|
||||||
+ clock-names = "mclk_tx", "mclk_rx", "hclk";
|
|
||||||
+ dmas = <&dmac1 4>, <&dmac1 5>;
|
|
||||||
+ dma-names = "tx", "rx";
|
|
||||||
+ resets = <&cru SRST_M_I2S2_2CH>;
|
|
||||||
+ reset-names = "m";
|
|
||||||
+ rockchip,grf = <&grf>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&i2s2m0_sclktx
|
|
||||||
+ &i2s2m0_lrcktx
|
|
||||||
+ &i2s2m0_sdi
|
|
||||||
+ &i2s2m0_sdo>;
|
|
||||||
+ #sound-dai-cells = <0>;
|
|
||||||
+ status = "disabled";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
i2s3_2ch: i2s@fe430000 {
|
|
||||||
compatible = "rockchip,rk3568-i2s-tdm";
|
|
||||||
reg = <0x0 0xfe430000 0x0 0x1000>;
|
|
@ -78,7 +78,7 @@ Subject: [PATCH] add hwrng for rk3568
|
|||||||
+...
|
+...
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
--- a/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
+++ b/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
||||||
@@ -1772,6 +1772,16 @@
|
@@ -1806,6 +1806,16 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ Subject: [PATCH] add hwrng for rk3568
|
|||||||
rockchip,grf = <&grf>;
|
rockchip,grf = <&grf>;
|
||||||
--- a/drivers/char/hw_random/Kconfig
|
--- a/drivers/char/hw_random/Kconfig
|
||||||
+++ b/drivers/char/hw_random/Kconfig
|
+++ b/drivers/char/hw_random/Kconfig
|
||||||
@@ -372,6 +372,20 @@ config HW_RANDOM_STM32
|
@@ -383,6 +383,20 @@ config HW_RANDOM_STM32
|
||||||
|
|
||||||
If unsure, say N.
|
If unsure, say N.
|
||||||
|
|
||||||
@ -117,10 +117,10 @@ Subject: [PATCH] add hwrng for rk3568
|
|||||||
+
|
+
|
||||||
config HW_RANDOM_PIC32
|
config HW_RANDOM_PIC32
|
||||||
tristate "Microchip PIC32 Random Number Generator support"
|
tristate "Microchip PIC32 Random Number Generator support"
|
||||||
depends on HW_RANDOM && MACH_PIC32
|
depends on MACH_PIC32 || COMPILE_TEST
|
||||||
--- a/drivers/char/hw_random/Makefile
|
--- a/drivers/char/hw_random/Makefile
|
||||||
+++ b/drivers/char/hw_random/Makefile
|
+++ b/drivers/char/hw_random/Makefile
|
||||||
@@ -34,6 +34,7 @@ obj-$(CONFIG_HW_RANDOM_IPROC_RNG200) +=
|
@@ -35,6 +35,7 @@ obj-$(CONFIG_HW_RANDOM_IPROC_RNG200) +=
|
||||||
obj-$(CONFIG_HW_RANDOM_ST) += st-rng.o
|
obj-$(CONFIG_HW_RANDOM_ST) += st-rng.o
|
||||||
obj-$(CONFIG_HW_RANDOM_XGENE) += xgene-rng.o
|
obj-$(CONFIG_HW_RANDOM_XGENE) += xgene-rng.o
|
||||||
obj-$(CONFIG_HW_RANDOM_STM32) += stm32-rng.o
|
obj-$(CONFIG_HW_RANDOM_STM32) += stm32-rng.o
|
@ -9,9 +9,277 @@
|
|||||||
struct clk_mux *mux = NULL;
|
struct clk_mux *mux = NULL;
|
||||||
struct clk_gate *gate = NULL;
|
struct clk_gate *gate = NULL;
|
||||||
struct clk_divider *div = NULL;
|
struct clk_divider *div = NULL;
|
||||||
|
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||||
|
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||||
|
@@ -92,74 +92,70 @@ static struct rockchip_hdmi *to_rockchip
|
||||||
|
|
||||||
|
static const struct dw_hdmi_mpll_config rockchip_mpll_cfg[] = {
|
||||||
|
{
|
||||||
|
- 27000000, {
|
||||||
|
- { 0x00b3, 0x0000},
|
||||||
|
- { 0x2153, 0x0000},
|
||||||
|
- { 0x40f3, 0x0000}
|
||||||
|
+ 30666000, {
|
||||||
|
+ { 0x00b3, 0x0000 },
|
||||||
|
+ { 0x2153, 0x0000 },
|
||||||
|
+ { 0x40f3, 0x0000 },
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
- 36000000, {
|
||||||
|
- { 0x00b3, 0x0000},
|
||||||
|
- { 0x2153, 0x0000},
|
||||||
|
- { 0x40f3, 0x0000}
|
||||||
|
+ 36800000, {
|
||||||
|
+ { 0x00b3, 0x0000 },
|
||||||
|
+ { 0x2153, 0x0000 },
|
||||||
|
+ { 0x40a2, 0x0001 },
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
- 40000000, {
|
||||||
|
- { 0x00b3, 0x0000},
|
||||||
|
- { 0x2153, 0x0000},
|
||||||
|
- { 0x40f3, 0x0000}
|
||||||
|
+ 46000000, {
|
||||||
|
+ { 0x00b3, 0x0000 },
|
||||||
|
+ { 0x2142, 0x0001 },
|
||||||
|
+ { 0x40a2, 0x0001 },
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
- 54000000, {
|
||||||
|
- { 0x0072, 0x0001},
|
||||||
|
- { 0x2142, 0x0001},
|
||||||
|
- { 0x40a2, 0x0001},
|
||||||
|
+ 61333000, {
|
||||||
|
+ { 0x0072, 0x0001 },
|
||||||
|
+ { 0x2142, 0x0001 },
|
||||||
|
+ { 0x40a2, 0x0001 },
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
- 65000000, {
|
||||||
|
- { 0x0072, 0x0001},
|
||||||
|
- { 0x2142, 0x0001},
|
||||||
|
- { 0x40a2, 0x0001},
|
||||||
|
+ 73600000, {
|
||||||
|
+ { 0x0072, 0x0001 },
|
||||||
|
+ { 0x2142, 0x0001 },
|
||||||
|
+ { 0x4061, 0x0002 },
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
- 66000000, {
|
||||||
|
- { 0x013e, 0x0003},
|
||||||
|
- { 0x217e, 0x0002},
|
||||||
|
- { 0x4061, 0x0002}
|
||||||
|
+ 92000000, {
|
||||||
|
+ { 0x0072, 0x0001 },
|
||||||
|
+ { 0x2145, 0x0002 },
|
||||||
|
+ { 0x4061, 0x0002 },
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
- 74250000, {
|
||||||
|
- { 0x0072, 0x0001},
|
||||||
|
- { 0x2145, 0x0002},
|
||||||
|
- { 0x4061, 0x0002}
|
||||||
|
+ 122666000, {
|
||||||
|
+ { 0x0051, 0x0002 },
|
||||||
|
+ { 0x2145, 0x0002 },
|
||||||
|
+ { 0x4061, 0x0002 },
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
- 83500000, {
|
||||||
|
- { 0x0072, 0x0001},
|
||||||
|
+ 147200000, {
|
||||||
|
+ { 0x0051, 0x0002 },
|
||||||
|
+ { 0x2145, 0x0002 },
|
||||||
|
+ { 0x4064, 0x0003 },
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
- 108000000, {
|
||||||
|
- { 0x0051, 0x0002},
|
||||||
|
- { 0x2145, 0x0002},
|
||||||
|
- { 0x4061, 0x0002}
|
||||||
|
+ 184000000, {
|
||||||
|
+ { 0x0051, 0x0002 },
|
||||||
|
+ { 0x214c, 0x0003 },
|
||||||
|
+ { 0x4064, 0x0003 },
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
- 106500000, {
|
||||||
|
- { 0x0051, 0x0002},
|
||||||
|
- { 0x2145, 0x0002},
|
||||||
|
- { 0x4061, 0x0002}
|
||||||
|
- },
|
||||||
|
- }, {
|
||||||
|
- 146250000, {
|
||||||
|
- { 0x0051, 0x0002},
|
||||||
|
- { 0x2145, 0x0002},
|
||||||
|
- { 0x4061, 0x0002}
|
||||||
|
+ 226666000, {
|
||||||
|
+ { 0x0040, 0x0003 },
|
||||||
|
+ { 0x214c, 0x0003 },
|
||||||
|
+ { 0x4064, 0x0003 },
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
- 148500000, {
|
||||||
|
- { 0x0051, 0x0003},
|
||||||
|
- { 0x214c, 0x0003},
|
||||||
|
- { 0x4064, 0x0003}
|
||||||
|
+ 272000000, {
|
||||||
|
+ { 0x0040, 0x0003 },
|
||||||
|
+ { 0x214c, 0x0003 },
|
||||||
|
+ { 0x5a64, 0x0003 },
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
340000000, {
|
||||||
|
@@ -168,10 +164,16 @@ static const struct dw_hdmi_mpll_config
|
||||||
|
{ 0x5a64, 0x0003 },
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
+ 600000000, {
|
||||||
|
+ { 0x1a40, 0x0003 },
|
||||||
|
+ { 0x3b4c, 0x0003 },
|
||||||
|
+ { 0x5a64, 0x0003 },
|
||||||
|
+ },
|
||||||
|
+ }, {
|
||||||
|
~0UL, {
|
||||||
|
- { 0x00a0, 0x000a },
|
||||||
|
- { 0x2001, 0x000f },
|
||||||
|
- { 0x4002, 0x000f },
|
||||||
|
+ { 0x0000, 0x0000 },
|
||||||
|
+ { 0x0000, 0x0000 },
|
||||||
|
+ { 0x0000, 0x0000 },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
@@ -179,20 +181,6 @@ static const struct dw_hdmi_mpll_config
|
||||||
|
static const struct dw_hdmi_curr_ctrl rockchip_cur_ctr[] = {
|
||||||
|
/* pixelclk bpp8 bpp10 bpp12 */
|
||||||
|
{
|
||||||
|
- 40000000, { 0x0018, 0x0018, 0x0018 },
|
||||||
|
- }, {
|
||||||
|
- 65000000, { 0x0028, 0x0028, 0x0028 },
|
||||||
|
- }, {
|
||||||
|
- 66000000, { 0x0038, 0x0038, 0x0038 },
|
||||||
|
- }, {
|
||||||
|
- 74250000, { 0x0028, 0x0038, 0x0038 },
|
||||||
|
- }, {
|
||||||
|
- 83500000, { 0x0028, 0x0038, 0x0038 },
|
||||||
|
- }, {
|
||||||
|
- 146250000, { 0x0038, 0x0038, 0x0038 },
|
||||||
|
- }, {
|
||||||
|
- 148500000, { 0x0000, 0x0038, 0x0038 },
|
||||||
|
- }, {
|
||||||
|
600000000, { 0x0000, 0x0000, 0x0000 },
|
||||||
|
}, {
|
||||||
|
~0UL, { 0x0000, 0x0000, 0x0000},
|
||||||
|
@@ -204,6 +192,7 @@ static const struct dw_hdmi_phy_config r
|
||||||
|
{ 74250000, 0x8009, 0x0004, 0x0272},
|
||||||
|
{ 148500000, 0x802b, 0x0004, 0x028d},
|
||||||
|
{ 297000000, 0x8039, 0x0005, 0x028d},
|
||||||
|
+ { 594000000, 0x8039, 0x0000, 0x019d},
|
||||||
|
{ ~0UL, 0x0000, 0x0000, 0x0000}
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -249,42 +238,6 @@ static int rockchip_hdmi_parse_dt(struct
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static enum drm_mode_status
|
||||||
|
-dw_hdmi_rockchip_mode_valid(struct dw_hdmi *dw_hdmi, void *data,
|
||||||
|
- const struct drm_display_info *info,
|
||||||
|
- const struct drm_display_mode *mode)
|
||||||
|
-{
|
||||||
|
- struct rockchip_hdmi *hdmi = data;
|
||||||
|
- const struct dw_hdmi_mpll_config *mpll_cfg = rockchip_mpll_cfg;
|
||||||
|
- int pclk = mode->clock * 1000;
|
||||||
|
- bool exact_match = hdmi->plat_data->phy_force_vendor;
|
||||||
|
- int i;
|
||||||
|
-
|
||||||
|
- if (hdmi->ref_clk) {
|
||||||
|
- int rpclk = clk_round_rate(hdmi->ref_clk, pclk);
|
||||||
|
-
|
||||||
|
- if (abs(rpclk - pclk) > pclk / 1000)
|
||||||
|
- return MODE_NOCLOCK;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- for (i = 0; mpll_cfg[i].mpixelclock != (~0UL); i++) {
|
||||||
|
- /*
|
||||||
|
- * For vendor specific phys force an exact match of the pixelclock
|
||||||
|
- * to preserve the original behaviour of the driver.
|
||||||
|
- */
|
||||||
|
- if (exact_match && pclk == mpll_cfg[i].mpixelclock)
|
||||||
|
- return MODE_OK;
|
||||||
|
- /*
|
||||||
|
- * The Synopsys phy can work with pixelclocks up to the value given
|
||||||
|
- * in the corresponding mpll_cfg entry.
|
||||||
|
- */
|
||||||
|
- if (!exact_match && pclk <= mpll_cfg[i].mpixelclock)
|
||||||
|
- return MODE_OK;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- return MODE_BAD;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
static void dw_hdmi_rockchip_encoder_disable(struct drm_encoder *encoder)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
@@ -450,7 +403,6 @@ static struct rockchip_hdmi_chip_data rk
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct dw_hdmi_plat_data rk3228_hdmi_drv_data = {
|
||||||
|
- .mode_valid = dw_hdmi_rockchip_mode_valid,
|
||||||
|
.mpll_cfg = rockchip_mpll_cfg,
|
||||||
|
.cur_ctr = rockchip_cur_ctr,
|
||||||
|
.phy_config = rockchip_phy_config,
|
||||||
|
@@ -467,7 +419,6 @@ static struct rockchip_hdmi_chip_data rk
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct dw_hdmi_plat_data rk3288_hdmi_drv_data = {
|
||||||
|
- .mode_valid = dw_hdmi_rockchip_mode_valid,
|
||||||
|
.mpll_cfg = rockchip_mpll_cfg,
|
||||||
|
.cur_ctr = rockchip_cur_ctr,
|
||||||
|
.phy_config = rockchip_phy_config,
|
||||||
|
@@ -487,7 +438,6 @@ static struct rockchip_hdmi_chip_data rk
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct dw_hdmi_plat_data rk3328_hdmi_drv_data = {
|
||||||
|
- .mode_valid = dw_hdmi_rockchip_mode_valid,
|
||||||
|
.mpll_cfg = rockchip_mpll_cfg,
|
||||||
|
.cur_ctr = rockchip_cur_ctr,
|
||||||
|
.phy_config = rockchip_phy_config,
|
||||||
|
@@ -505,7 +455,6 @@ static struct rockchip_hdmi_chip_data rk
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct dw_hdmi_plat_data rk3399_hdmi_drv_data = {
|
||||||
|
- .mode_valid = dw_hdmi_rockchip_mode_valid,
|
||||||
|
.mpll_cfg = rockchip_mpll_cfg,
|
||||||
|
.cur_ctr = rockchip_cur_ctr,
|
||||||
|
.phy_config = rockchip_phy_config,
|
||||||
|
@@ -518,7 +467,6 @@ static struct rockchip_hdmi_chip_data rk
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct dw_hdmi_plat_data rk3568_hdmi_drv_data = {
|
||||||
|
- .mode_valid = dw_hdmi_rockchip_mode_valid,
|
||||||
|
.mpll_cfg = rockchip_mpll_cfg,
|
||||||
|
.cur_ctr = rockchip_cur_ctr,
|
||||||
|
.phy_config = rockchip_phy_config,
|
||||||
|
@@ -625,6 +573,14 @@ static int dw_hdmi_rockchip_bind(struct
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hdmi->chip_data == &rk3568_chip_data) {
|
||||||
|
+ regmap_write(hdmi->regmap, RK3568_GRF_VO_CON1,
|
||||||
|
+ HIWORD_UPDATE(RK3568_HDMI_SDAIN_MSK |
|
||||||
|
+ RK3568_HDMI_SCLIN_MSK,
|
||||||
|
+ RK3568_HDMI_SDAIN_MSK |
|
||||||
|
+ RK3568_HDMI_SCLIN_MSK));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (hdmi->chip_data == &rk3568_chip_data) {
|
||||||
|
regmap_write(hdmi->regmap, RK3568_GRF_VO_CON1,
|
||||||
|
HIWORD_UPDATE(RK3568_HDMI_SDAIN_MSK |
|
||||||
|
RK3568_HDMI_SCLIN_MSK,
|
||||||
--- a/drivers/usb/dwc3/dwc3-of-simple.c
|
--- a/drivers/usb/dwc3/dwc3-of-simple.c
|
||||||
+++ b/drivers/usb/dwc3/dwc3-of-simple.c
|
+++ b/drivers/usb/dwc3/dwc3-of-simple.c
|
||||||
@@ -30,12 +30,16 @@ struct dwc3_of_simple {
|
@@ -30,12 +30,18 @@ struct dwc3_of_simple {
|
||||||
bool need_reset;
|
bool need_reset;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -24,12 +292,13 @@
|
|||||||
struct dwc3_of_simple *simple;
|
struct dwc3_of_simple *simple;
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
struct device_node *np = dev->of_node;
|
struct device_node *np = dev->of_node;
|
||||||
-
|
|
||||||
+ const struct dwc3_of_simple_data *data = of_device_get_match_data(dev);
|
+ const struct dwc3_of_simple_data *data = of_device_get_match_data(dev);
|
||||||
|
+
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
simple = devm_kzalloc(dev, sizeof(*simple), GFP_KERNEL);
|
simple = devm_kzalloc(dev, sizeof(*simple), GFP_KERNEL);
|
||||||
@@ -49,8 +53,8 @@ static int dwc3_of_simple_probe(struct p
|
@@ -49,8 +55,8 @@ static int dwc3_of_simple_probe(struct p
|
||||||
* Some controllers need to toggle the usb3-otg reset before trying to
|
* Some controllers need to toggle the usb3-otg reset before trying to
|
||||||
* initialize the PHY, otherwise the PHY times out.
|
* initialize the PHY, otherwise the PHY times out.
|
||||||
*/
|
*/
|
||||||
@ -40,7 +309,7 @@
|
|||||||
|
|
||||||
simple->resets = of_reset_control_array_get(np, false, true,
|
simple->resets = of_reset_control_array_get(np, false, true,
|
||||||
true);
|
true);
|
||||||
@@ -170,13 +174,34 @@ static const struct dev_pm_ops dwc3_of_s
|
@@ -168,12 +174,34 @@ static const struct dev_pm_ops dwc3_of_s
|
||||||
dwc3_of_simple_runtime_resume, NULL)
|
dwc3_of_simple_runtime_resume, NULL)
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -50,7 +319,6 @@
|
|||||||
+
|
+
|
||||||
static const struct of_device_id of_dwc3_simple_match[] = {
|
static const struct of_device_id of_dwc3_simple_match[] = {
|
||||||
- { .compatible = "rockchip,rk3399-dwc3" },
|
- { .compatible = "rockchip,rk3399-dwc3" },
|
||||||
- { .compatible = "cavium,octeon-7130-usb-uctl" },
|
|
||||||
- { .compatible = "sprd,sc9860-dwc3" },
|
- { .compatible = "sprd,sc9860-dwc3" },
|
||||||
- { .compatible = "allwinner,sun50i-h6-dwc3" },
|
- { .compatible = "allwinner,sun50i-h6-dwc3" },
|
||||||
- { .compatible = "hisilicon,hi3670-dwc3" },
|
- { .compatible = "hisilicon,hi3670-dwc3" },
|
||||||
@ -83,12 +351,10 @@
|
|||||||
MODULE_DEVICE_TABLE(of, of_dwc3_simple_match);
|
MODULE_DEVICE_TABLE(of, of_dwc3_simple_match);
|
||||||
--- a/kernel/dma/pool.c
|
--- a/kernel/dma/pool.c
|
||||||
+++ b/kernel/dma/pool.c
|
+++ b/kernel/dma/pool.c
|
||||||
@@ -189,13 +189,10 @@ static int __init dma_atomic_pool_init(v
|
@@ -191,11 +191,10 @@ static int __init dma_atomic_pool_init(v
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
- * If coherent_pool was not used on the command line, default the pool
|
* If coherent_pool was not used on the command line, default the pool
|
||||||
- * sizes to 128KB per 1GB of memory, min 128KB, max MAX_ORDER-1.
|
* sizes to 128KB per 1GB of memory, min 128KB, max MAX_ORDER.
|
||||||
+ * Use 2MiB as default pool size.
|
+ * Use 2MiB as default pool size.
|
||||||
*/
|
*/
|
||||||
if (!atomic_pool_size) {
|
if (!atomic_pool_size) {
|
||||||
@ -155,279 +421,3 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __RT5651_H__ */
|
#endif /* __RT5651_H__ */
|
||||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
@@ -91,80 +91,88 @@ static struct rockchip_hdmi *to_rockchip
|
|
||||||
|
|
||||||
static const struct dw_hdmi_mpll_config rockchip_mpll_cfg[] = {
|
|
||||||
{
|
|
||||||
- 27000000, {
|
|
||||||
- { 0x00b3, 0x0000},
|
|
||||||
- { 0x2153, 0x0000},
|
|
||||||
- { 0x40f3, 0x0000}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 36000000, {
|
|
||||||
- { 0x00b3, 0x0000},
|
|
||||||
- { 0x2153, 0x0000},
|
|
||||||
- { 0x40f3, 0x0000}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 40000000, {
|
|
||||||
- { 0x00b3, 0x0000},
|
|
||||||
- { 0x2153, 0x0000},
|
|
||||||
- { 0x40f3, 0x0000}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 54000000, {
|
|
||||||
- { 0x0072, 0x0001},
|
|
||||||
- { 0x2142, 0x0001},
|
|
||||||
- { 0x40a2, 0x0001},
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 65000000, {
|
|
||||||
- { 0x0072, 0x0001},
|
|
||||||
- { 0x2142, 0x0001},
|
|
||||||
- { 0x40a2, 0x0001},
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 66000000, {
|
|
||||||
- { 0x013e, 0x0003},
|
|
||||||
- { 0x217e, 0x0002},
|
|
||||||
- { 0x4061, 0x0002}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 74250000, {
|
|
||||||
- { 0x0072, 0x0001},
|
|
||||||
- { 0x2145, 0x0002},
|
|
||||||
- { 0x4061, 0x0002}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 83500000, {
|
|
||||||
- { 0x0072, 0x0001},
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 108000000, {
|
|
||||||
- { 0x0051, 0x0002},
|
|
||||||
- { 0x2145, 0x0002},
|
|
||||||
- { 0x4061, 0x0002}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 106500000, {
|
|
||||||
- { 0x0051, 0x0002},
|
|
||||||
- { 0x2145, 0x0002},
|
|
||||||
- { 0x4061, 0x0002}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 146250000, {
|
|
||||||
- { 0x0051, 0x0002},
|
|
||||||
- { 0x2145, 0x0002},
|
|
||||||
- { 0x4061, 0x0002}
|
|
||||||
- },
|
|
||||||
- }, {
|
|
||||||
- 148500000, {
|
|
||||||
- { 0x0051, 0x0003},
|
|
||||||
- { 0x214c, 0x0003},
|
|
||||||
- { 0x4064, 0x0003}
|
|
||||||
+ 30666000, {
|
|
||||||
+ { 0x00b3, 0x0000 },
|
|
||||||
+ { 0x2153, 0x0000 },
|
|
||||||
+ { 0x40f3, 0x0000 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 36800000, {
|
|
||||||
+ { 0x00b3, 0x0000 },
|
|
||||||
+ { 0x2153, 0x0000 },
|
|
||||||
+ { 0x40a2, 0x0001 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 46000000, {
|
|
||||||
+ { 0x00b3, 0x0000 },
|
|
||||||
+ { 0x2142, 0x0001 },
|
|
||||||
+ { 0x40a2, 0x0001 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 61333000, {
|
|
||||||
+ { 0x0072, 0x0001 },
|
|
||||||
+ { 0x2142, 0x0001 },
|
|
||||||
+ { 0x40a2, 0x0001 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 73600000, {
|
|
||||||
+ { 0x0072, 0x0001 },
|
|
||||||
+ { 0x2142, 0x0001 },
|
|
||||||
+ { 0x4061, 0x0002 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 92000000, {
|
|
||||||
+ { 0x0072, 0x0001 },
|
|
||||||
+ { 0x2145, 0x0002 },
|
|
||||||
+ { 0x4061, 0x0002 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 122666000, {
|
|
||||||
+ { 0x0051, 0x0002 },
|
|
||||||
+ { 0x2145, 0x0002 },
|
|
||||||
+ { 0x4061, 0x0002 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 147200000, {
|
|
||||||
+ { 0x0051, 0x0002 },
|
|
||||||
+ { 0x2145, 0x0002 },
|
|
||||||
+ { 0x4064, 0x0003 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 184000000, {
|
|
||||||
+ { 0x0051, 0x0002 },
|
|
||||||
+ { 0x214c, 0x0003 },
|
|
||||||
+ { 0x4064, 0x0003 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 226666000, {
|
|
||||||
+ { 0x0040, 0x0003 },
|
|
||||||
+ { 0x214c, 0x0003 },
|
|
||||||
+ { 0x4064, 0x0003 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 272000000, {
|
|
||||||
+ { 0x0040, 0x0003 },
|
|
||||||
+ { 0x214c, 0x0003 },
|
|
||||||
+ { 0x5a64, 0x0003 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 340000000, {
|
|
||||||
+ { 0x0040, 0x0003 },
|
|
||||||
+ { 0x3b4c, 0x0003 },
|
|
||||||
+ { 0x5a64, 0x0003 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 600000000, {
|
|
||||||
+ { 0x1a40, 0x0003 },
|
|
||||||
+ { 0x3b4c, 0x0003 },
|
|
||||||
+ { 0x5a64, 0x0003 },
|
|
||||||
},
|
|
||||||
- }, {
|
|
||||||
+ }, {
|
|
||||||
~0UL, {
|
|
||||||
- { 0x00a0, 0x000a },
|
|
||||||
- { 0x2001, 0x000f },
|
|
||||||
- { 0x4002, 0x000f },
|
|
||||||
+ { 0x0000, 0x0000 },
|
|
||||||
+ { 0x0000, 0x0000 },
|
|
||||||
+ { 0x0000, 0x0000 },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -172,20 +180,8 @@ static const struct dw_hdmi_mpll_config
|
|
||||||
static const struct dw_hdmi_curr_ctrl rockchip_cur_ctr[] = {
|
|
||||||
/* pixelclk bpp8 bpp10 bpp12 */
|
|
||||||
{
|
|
||||||
- 40000000, { 0x0018, 0x0018, 0x0018 },
|
|
||||||
- }, {
|
|
||||||
- 65000000, { 0x0028, 0x0028, 0x0028 },
|
|
||||||
- }, {
|
|
||||||
- 66000000, { 0x0038, 0x0038, 0x0038 },
|
|
||||||
- }, {
|
|
||||||
- 74250000, { 0x0028, 0x0038, 0x0038 },
|
|
||||||
- }, {
|
|
||||||
- 83500000, { 0x0028, 0x0038, 0x0038 },
|
|
||||||
- }, {
|
|
||||||
- 146250000, { 0x0038, 0x0038, 0x0038 },
|
|
||||||
- }, {
|
|
||||||
- 148500000, { 0x0000, 0x0038, 0x0038 },
|
|
||||||
- }, {
|
|
||||||
+ 600000000, { 0x0000, 0x0000, 0x0000 },
|
|
||||||
+ }, {
|
|
||||||
~0UL, { 0x0000, 0x0000, 0x0000},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -195,6 +191,7 @@ static const struct dw_hdmi_phy_config r
|
|
||||||
{ 74250000, 0x8009, 0x0004, 0x0272},
|
|
||||||
{ 148500000, 0x802b, 0x0004, 0x028d},
|
|
||||||
{ 297000000, 0x8039, 0x0005, 0x028d},
|
|
||||||
+ { 594000000, 0x8039, 0x0000, 0x019d},
|
|
||||||
{ ~0UL, 0x0000, 0x0000, 0x0000}
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -240,26 +237,6 @@ static int rockchip_hdmi_parse_dt(struct
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static enum drm_mode_status
|
|
||||||
-dw_hdmi_rockchip_mode_valid(struct dw_hdmi *hdmi, void *data,
|
|
||||||
- const struct drm_display_info *info,
|
|
||||||
- const struct drm_display_mode *mode)
|
|
||||||
-{
|
|
||||||
- const struct dw_hdmi_mpll_config *mpll_cfg = rockchip_mpll_cfg;
|
|
||||||
- int pclk = mode->clock * 1000;
|
|
||||||
- bool valid = false;
|
|
||||||
- int i;
|
|
||||||
-
|
|
||||||
- for (i = 0; mpll_cfg[i].mpixelclock != (~0UL); i++) {
|
|
||||||
- if (pclk == mpll_cfg[i].mpixelclock) {
|
|
||||||
- valid = true;
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- return (valid) ? MODE_OK : MODE_BAD;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static void dw_hdmi_rockchip_encoder_disable(struct drm_encoder *encoder)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@@ -425,7 +402,6 @@ static struct rockchip_hdmi_chip_data rk
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct dw_hdmi_plat_data rk3228_hdmi_drv_data = {
|
|
||||||
- .mode_valid = dw_hdmi_rockchip_mode_valid,
|
|
||||||
.mpll_cfg = rockchip_mpll_cfg,
|
|
||||||
.cur_ctr = rockchip_cur_ctr,
|
|
||||||
.phy_config = rockchip_phy_config,
|
|
||||||
@@ -442,7 +418,6 @@ static struct rockchip_hdmi_chip_data rk
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct dw_hdmi_plat_data rk3288_hdmi_drv_data = {
|
|
||||||
- .mode_valid = dw_hdmi_rockchip_mode_valid,
|
|
||||||
.mpll_cfg = rockchip_mpll_cfg,
|
|
||||||
.cur_ctr = rockchip_cur_ctr,
|
|
||||||
.phy_config = rockchip_phy_config,
|
|
||||||
@@ -462,7 +437,6 @@ static struct rockchip_hdmi_chip_data rk
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct dw_hdmi_plat_data rk3328_hdmi_drv_data = {
|
|
||||||
- .mode_valid = dw_hdmi_rockchip_mode_valid,
|
|
||||||
.mpll_cfg = rockchip_mpll_cfg,
|
|
||||||
.cur_ctr = rockchip_cur_ctr,
|
|
||||||
.phy_config = rockchip_phy_config,
|
|
||||||
@@ -480,7 +454,6 @@ static struct rockchip_hdmi_chip_data rk
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct dw_hdmi_plat_data rk3399_hdmi_drv_data = {
|
|
||||||
- .mode_valid = dw_hdmi_rockchip_mode_valid,
|
|
||||||
.mpll_cfg = rockchip_mpll_cfg,
|
|
||||||
.cur_ctr = rockchip_cur_ctr,
|
|
||||||
.phy_config = rockchip_phy_config,
|
|
||||||
@@ -493,7 +466,6 @@ static struct rockchip_hdmi_chip_data rk
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct dw_hdmi_plat_data rk3568_hdmi_drv_data = {
|
|
||||||
- .mode_valid = dw_hdmi_rockchip_mode_valid,
|
|
||||||
.mpll_cfg = rockchip_mpll_cfg,
|
|
||||||
.cur_ctr = rockchip_cur_ctr,
|
|
||||||
.phy_config = rockchip_phy_config,
|
|
||||||
@@ -598,6 +570,14 @@ static int dw_hdmi_rockchip_bind(struct
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hdmi->chip_data == &rk3568_chip_data) {
|
|
||||||
+ regmap_write(hdmi->regmap, RK3568_GRF_VO_CON1,
|
|
||||||
+ HIWORD_UPDATE(RK3568_HDMI_SDAIN_MSK |
|
|
||||||
+ RK3568_HDMI_SCLIN_MSK,
|
|
||||||
+ RK3568_HDMI_SDAIN_MSK |
|
|
||||||
+ RK3568_HDMI_SCLIN_MSK));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (hdmi->chip_data == &rk3568_chip_data) {
|
|
||||||
regmap_write(hdmi->regmap, RK3568_GRF_VO_CON1,
|
|
||||||
HIWORD_UPDATE(RK3568_HDMI_SDAIN_MSK |
|
|
||||||
RK3568_HDMI_SCLIN_MSK,
|
|
@ -16,7 +16,7 @@ Subject: [PATCH] friendlyelec-nanopi-series
|
|||||||
|
|
||||||
--- a/drivers/soc/Kconfig
|
--- a/drivers/soc/Kconfig
|
||||||
+++ b/drivers/soc/Kconfig
|
+++ b/drivers/soc/Kconfig
|
||||||
@@ -27,5 +27,6 @@ source "drivers/soc/ti/Kconfig"
|
@@ -31,5 +31,6 @@ source "drivers/soc/ti/Kconfig"
|
||||||
source "drivers/soc/ux500/Kconfig"
|
source "drivers/soc/ux500/Kconfig"
|
||||||
source "drivers/soc/versatile/Kconfig"
|
source "drivers/soc/versatile/Kconfig"
|
||||||
source "drivers/soc/xilinx/Kconfig"
|
source "drivers/soc/xilinx/Kconfig"
|
||||||
@ -25,7 +25,7 @@ Subject: [PATCH] friendlyelec-nanopi-series
|
|||||||
endmenu
|
endmenu
|
||||||
--- a/drivers/soc/Makefile
|
--- a/drivers/soc/Makefile
|
||||||
+++ b/drivers/soc/Makefile
|
+++ b/drivers/soc/Makefile
|
||||||
@@ -33,3 +33,4 @@ obj-y += ti/
|
@@ -35,3 +35,4 @@ obj-y += ti/
|
||||||
obj-$(CONFIG_ARCH_U8500) += ux500/
|
obj-$(CONFIG_ARCH_U8500) += ux500/
|
||||||
obj-$(CONFIG_PLAT_VERSATILE) += versatile/
|
obj-$(CONFIG_PLAT_VERSATILE) += versatile/
|
||||||
obj-y += xilinx/
|
obj-y += xilinx/
|
@ -17,7 +17,7 @@ Change-Id: I6624b6af2ede3c2fca61c0f753a08a33ce69a6d2
|
|||||||
|
|
||||||
--- a/drivers/phy/rockchip/phy-rockchip-snps-pcie3.c
|
--- a/drivers/phy/rockchip/phy-rockchip-snps-pcie3.c
|
||||||
+++ b/drivers/phy/rockchip/phy-rockchip-snps-pcie3.c
|
+++ b/drivers/phy/rockchip/phy-rockchip-snps-pcie3.c
|
||||||
@@ -20,6 +20,7 @@
|
@@ -21,6 +21,7 @@
|
||||||
|
|
||||||
/* Register for RK3568 */
|
/* Register for RK3568 */
|
||||||
#define GRF_PCIE30PHY_CON1 0x4
|
#define GRF_PCIE30PHY_CON1 0x4
|
||||||
@ -25,7 +25,7 @@ Change-Id: I6624b6af2ede3c2fca61c0f753a08a33ce69a6d2
|
|||||||
#define GRF_PCIE30PHY_CON6 0x18
|
#define GRF_PCIE30PHY_CON6 0x18
|
||||||
#define GRF_PCIE30PHY_CON9 0x24
|
#define GRF_PCIE30PHY_CON9 0x24
|
||||||
#define GRF_PCIE30PHY_DA_OCM (BIT(15) | BIT(31))
|
#define GRF_PCIE30PHY_DA_OCM (BIT(15) | BIT(31))
|
||||||
@@ -63,6 +64,10 @@ struct rockchip_p3phy_ops {
|
@@ -64,6 +65,10 @@ struct rockchip_p3phy_ops {
|
||||||
int (*phy_init)(struct rockchip_p3phy_priv *priv);
|
int (*phy_init)(struct rockchip_p3phy_priv *priv);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -36,7 +36,7 @@ Change-Id: I6624b6af2ede3c2fca61c0f753a08a33ce69a6d2
|
|||||||
static int rockchip_p3phy_set_mode(struct phy *phy, enum phy_mode mode, int submode)
|
static int rockchip_p3phy_set_mode(struct phy *phy, enum phy_mode mode, int submode)
|
||||||
{
|
{
|
||||||
struct rockchip_p3phy_priv *priv = phy_get_drvdata(phy);
|
struct rockchip_p3phy_priv *priv = phy_get_drvdata(phy);
|
||||||
@@ -87,13 +92,14 @@ static int rockchip_p3phy_rk3568_init(st
|
@@ -88,13 +93,14 @@ static int rockchip_p3phy_rk3568_init(st
|
||||||
{
|
{
|
||||||
struct phy *phy = priv->phy;
|
struct phy *phy = priv->phy;
|
||||||
bool bifurcation = false;
|
bool bifurcation = false;
|
||||||
@ -52,7 +52,7 @@ Change-Id: I6624b6af2ede3c2fca61c0f753a08a33ce69a6d2
|
|||||||
dev_info(&phy->dev, "lane number %d, val %d\n", i, priv->lanes[i]);
|
dev_info(&phy->dev, "lane number %d, val %d\n", i, priv->lanes[i]);
|
||||||
if (priv->lanes[i] > 1)
|
if (priv->lanes[i] > 1)
|
||||||
bifurcation = true;
|
bifurcation = true;
|
||||||
@@ -112,16 +118,35 @@ static int rockchip_p3phy_rk3568_init(st
|
@@ -113,16 +119,35 @@ static int rockchip_p3phy_rk3568_init(st
|
||||||
GRF_PCIE30PHY_WR_EN & ~RK3568_BIFURCATION_LANE_0_1);
|
GRF_PCIE30PHY_WR_EN & ~RK3568_BIFURCATION_LANE_0_1);
|
||||||
}
|
}
|
||||||
|
|
@ -4,7 +4,7 @@
|
|||||||
power-domains = <&power RK3568_PD_PIPE>;
|
power-domains = <&power RK3568_PD_PIPE>;
|
||||||
resets = <&cru SRST_USB3OTG0>;
|
resets = <&cru SRST_USB3OTG0>;
|
||||||
snps,dis_u2_susphy_quirk;
|
snps,dis_u2_susphy_quirk;
|
||||||
+ snps,xhci-trb-ent-quirk;
|
+ snps,xhci-trb-ent-quirk;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -12,13 +12,13 @@
|
|||||||
power-domains = <&power RK3568_PD_PIPE>;
|
power-domains = <&power RK3568_PD_PIPE>;
|
||||||
resets = <&cru SRST_USB3OTG1>;
|
resets = <&cru SRST_USB3OTG1>;
|
||||||
snps,dis_u2_susphy_quirk;
|
snps,dis_u2_susphy_quirk;
|
||||||
+ snps,xhci-trb-ent-quirk;
|
+ snps,xhci-trb-ent-quirk;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
--- a/drivers/usb/dwc3/core.c
|
--- a/drivers/usb/dwc3/core.c
|
||||||
+++ b/drivers/usb/dwc3/core.c
|
+++ b/drivers/usb/dwc3/core.c
|
||||||
@@ -1654,6 +1654,8 @@ static void dwc3_get_properties(struct d
|
@@ -1609,6 +1609,8 @@ static void dwc3_get_properties(struct d
|
||||||
"snps,dis-del-phy-power-chg-quirk");
|
"snps,dis-del-phy-power-chg-quirk");
|
||||||
dwc->dis_tx_ipgap_linecheck_quirk = device_property_read_bool(dev,
|
dwc->dis_tx_ipgap_linecheck_quirk = device_property_read_bool(dev,
|
||||||
"snps,dis-tx-ipgap-linecheck-quirk");
|
"snps,dis-tx-ipgap-linecheck-quirk");
|
||||||
@ -26,30 +26,30 @@
|
|||||||
+ "snps,xhci-trb-ent-quirk");
|
+ "snps,xhci-trb-ent-quirk");
|
||||||
dwc->resume_hs_terminations = device_property_read_bool(dev,
|
dwc->resume_hs_terminations = device_property_read_bool(dev,
|
||||||
"snps,resume-hs-terminations");
|
"snps,resume-hs-terminations");
|
||||||
dwc->parkmode_disable_ss_quirk = device_property_read_bool(dev,
|
dwc->ulpi_ext_vbus_drv = device_property_read_bool(dev,
|
||||||
--- a/drivers/usb/dwc3/core.h
|
--- a/drivers/usb/dwc3/core.h
|
||||||
+++ b/drivers/usb/dwc3/core.h
|
+++ b/drivers/usb/dwc3/core.h
|
||||||
@@ -1104,6 +1104,9 @@ struct dwc3_scratchpad_array {
|
@@ -1107,6 +1107,9 @@ struct dwc3_scratchpad_array {
|
||||||
* change quirk.
|
* change quirk.
|
||||||
* @dis_tx_ipgap_linecheck_quirk: set if we disable u2mac linestate
|
* @dis_tx_ipgap_linecheck_quirk: set if we disable u2mac linestate
|
||||||
* check during HS transmit.
|
* check during HS transmit.
|
||||||
+ * @xhci_trb_ent_quirk: set if need to enable the Evaluate Next TRB(ENT)
|
+ * @xhci_trb_ent_quirk: set if need to enable the Evaluate Next TRB(ENT)
|
||||||
+ * flag in the TRB data structure to force xHC to
|
+ * flag in the TRB data structure to force xHC to
|
||||||
+ * pre-fetch the next TRB of a TD.
|
+ * pre-fetch the next TRB of a TD.
|
||||||
* @resume-hs-terminations: Set if we enable quirk for fixing improper crc
|
* @resume_hs_terminations: Set if we enable quirk for fixing improper crc
|
||||||
* generation after resume from suspend.
|
* generation after resume from suspend.
|
||||||
* @parkmode_disable_ss_quirk: set if we need to disable all SuperSpeed
|
* @ulpi_ext_vbus_drv: Set to confiure the upli chip to drives CPEN pin
|
||||||
@@ -1327,6 +1330,7 @@ struct dwc3 {
|
@@ -1331,6 +1334,7 @@ struct dwc3 {
|
||||||
unsigned dis_u2_freeclk_exists_quirk:1;
|
unsigned dis_u2_freeclk_exists_quirk:1;
|
||||||
unsigned dis_del_phy_power_chg_quirk:1;
|
unsigned dis_del_phy_power_chg_quirk:1;
|
||||||
unsigned dis_tx_ipgap_linecheck_quirk:1;
|
unsigned dis_tx_ipgap_linecheck_quirk:1;
|
||||||
+ unsigned xhci_trb_ent_quirk:1;
|
+ unsigned xhci_trb_ent_quirk:1;
|
||||||
unsigned resume_hs_terminations:1;
|
unsigned resume_hs_terminations:1;
|
||||||
|
unsigned ulpi_ext_vbus_drv:1;
|
||||||
unsigned parkmode_disable_ss_quirk:1;
|
unsigned parkmode_disable_ss_quirk:1;
|
||||||
unsigned gfladj_refclk_lpm_sel:1;
|
|
||||||
--- a/drivers/usb/dwc3/host.c
|
--- a/drivers/usb/dwc3/host.c
|
||||||
+++ b/drivers/usb/dwc3/host.c
|
+++ b/drivers/usb/dwc3/host.c
|
||||||
@@ -66,7 +66,7 @@ out:
|
@@ -61,7 +61,7 @@ out:
|
||||||
|
|
||||||
int dwc3_host_init(struct dwc3 *dwc)
|
int dwc3_host_init(struct dwc3 *dwc)
|
||||||
{
|
{
|
||||||
@ -58,7 +58,7 @@
|
|||||||
struct platform_device *xhci;
|
struct platform_device *xhci;
|
||||||
int ret, irq;
|
int ret, irq;
|
||||||
int prop_idx = 0;
|
int prop_idx = 0;
|
||||||
@@ -97,6 +97,9 @@ int dwc3_host_init(struct dwc3 *dwc)
|
@@ -92,6 +92,9 @@ int dwc3_host_init(struct dwc3 *dwc)
|
||||||
if (dwc->usb3_lpm_capable)
|
if (dwc->usb3_lpm_capable)
|
||||||
props[prop_idx++] = PROPERTY_ENTRY_BOOL("usb3-lpm-capable");
|
props[prop_idx++] = PROPERTY_ENTRY_BOOL("usb3-lpm-capable");
|
||||||
|
|
||||||
@ -70,7 +70,7 @@
|
|||||||
|
|
||||||
--- a/drivers/usb/host/xhci-plat.c
|
--- a/drivers/usb/host/xhci-plat.c
|
||||||
+++ b/drivers/usb/host/xhci-plat.c
|
+++ b/drivers/usb/host/xhci-plat.c
|
||||||
@@ -301,6 +301,9 @@ static int xhci_plat_probe(struct platfo
|
@@ -250,6 +250,9 @@ int xhci_plat_probe(struct platform_devi
|
||||||
if (device_property_read_bool(tmpdev, "quirk-broken-port-ped"))
|
if (device_property_read_bool(tmpdev, "quirk-broken-port-ped"))
|
||||||
xhci->quirks |= XHCI_BROKEN_PORT_PED;
|
xhci->quirks |= XHCI_BROKEN_PORT_PED;
|
||||||
|
|
||||||
@ -82,7 +82,7 @@
|
|||||||
}
|
}
|
||||||
--- a/drivers/usb/host/xhci-ring.c
|
--- a/drivers/usb/host/xhci-ring.c
|
||||||
+++ b/drivers/usb/host/xhci-ring.c
|
+++ b/drivers/usb/host/xhci-ring.c
|
||||||
@@ -3533,6 +3533,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3549,6 +3549,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
bool more_trbs_coming = true;
|
bool more_trbs_coming = true;
|
||||||
bool need_zero_pkt = false;
|
bool need_zero_pkt = false;
|
||||||
bool first_trb = true;
|
bool first_trb = true;
|
||||||
@ -90,7 +90,7 @@
|
|||||||
unsigned int num_trbs;
|
unsigned int num_trbs;
|
||||||
unsigned int start_cycle, num_sgs = 0;
|
unsigned int start_cycle, num_sgs = 0;
|
||||||
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
unsigned int enqd_len, block_len, trb_buff_len, full_len;
|
||||||
@@ -3569,6 +3570,13 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3585,6 +3586,13 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
if (urb->transfer_flags & URB_ZERO_PACKET && urb_priv->num_tds > 1)
|
if (urb->transfer_flags & URB_ZERO_PACKET && urb_priv->num_tds > 1)
|
||||||
need_zero_pkt = true;
|
need_zero_pkt = true;
|
||||||
|
|
||||||
@ -104,7 +104,7 @@
|
|||||||
td = &urb_priv->td[0];
|
td = &urb_priv->td[0];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -3597,6 +3605,13 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3613,6 +3621,13 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
first_trb = false;
|
first_trb = false;
|
||||||
if (start_cycle == 0)
|
if (start_cycle == 0)
|
||||||
field |= TRB_CYCLE;
|
field |= TRB_CYCLE;
|
||||||
@ -118,7 +118,7 @@
|
|||||||
} else
|
} else
|
||||||
field |= ring->cycle_state;
|
field |= ring->cycle_state;
|
||||||
|
|
||||||
@@ -3605,6 +3620,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
@@ -3621,6 +3636,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||||
*/
|
*/
|
||||||
if (enqd_len + trb_buff_len < full_len) {
|
if (enqd_len + trb_buff_len < full_len) {
|
||||||
field |= TRB_CHAIN;
|
field |= TRB_CHAIN;
|
||||||
@ -129,7 +129,7 @@
|
|||||||
&trb_buff_len,
|
&trb_buff_len,
|
||||||
--- a/drivers/usb/host/xhci.h
|
--- a/drivers/usb/host/xhci.h
|
||||||
+++ b/drivers/usb/host/xhci.h
|
+++ b/drivers/usb/host/xhci.h
|
||||||
@@ -1525,7 +1525,11 @@ static inline const char *xhci_trb_type_
|
@@ -1528,7 +1528,11 @@ static inline const char *xhci_trb_type_
|
||||||
#define TRB_SEGMENT_SIZE (TRBS_PER_SEGMENT*16)
|
#define TRB_SEGMENT_SIZE (TRBS_PER_SEGMENT*16)
|
||||||
#define TRB_SEGMENT_SHIFT (ilog2(TRB_SEGMENT_SIZE))
|
#define TRB_SEGMENT_SHIFT (ilog2(TRB_SEGMENT_SIZE))
|
||||||
/* TRB buffer pointers can't cross 64KB boundaries */
|
/* TRB buffer pointers can't cross 64KB boundaries */
|
||||||
@ -141,7 +141,7 @@
|
|||||||
#define TRB_MAX_BUFF_SIZE (1 << TRB_MAX_BUFF_SHIFT)
|
#define TRB_MAX_BUFF_SIZE (1 << TRB_MAX_BUFF_SHIFT)
|
||||||
/* How much data is left before the 64KB boundary? */
|
/* How much data is left before the 64KB boundary? */
|
||||||
#define TRB_BUFF_LEN_UP_TO_BOUNDARY(addr) (TRB_MAX_BUFF_SIZE - \
|
#define TRB_BUFF_LEN_UP_TO_BOUNDARY(addr) (TRB_MAX_BUFF_SIZE - \
|
||||||
@@ -1843,6 +1847,7 @@ struct xhci_hcd {
|
@@ -1848,6 +1852,7 @@ struct xhci_hcd {
|
||||||
#define XHCI_STATE_HALTED (1 << 1)
|
#define XHCI_STATE_HALTED (1 << 1)
|
||||||
#define XHCI_STATE_REMOVING (1 << 2)
|
#define XHCI_STATE_REMOVING (1 << 2)
|
||||||
unsigned long long quirks;
|
unsigned long long quirks;
|
@ -1,6 +1,6 @@
|
|||||||
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
||||||
@@ -459,6 +459,7 @@
|
@@ -486,6 +486,7 @@
|
||||||
snps,dis_enblslpm_quirk;
|
snps,dis_enblslpm_quirk;
|
||||||
snps,dis-u2-freeclk-exists-quirk;
|
snps,dis-u2-freeclk-exists-quirk;
|
||||||
snps,dis_u2_susphy_quirk;
|
snps,dis_u2_susphy_quirk;
|
||||||
@ -8,7 +8,7 @@
|
|||||||
snps,dis-del-phy-power-chg-quirk;
|
snps,dis-del-phy-power-chg-quirk;
|
||||||
snps,dis-tx-ipgap-linecheck-quirk;
|
snps,dis-tx-ipgap-linecheck-quirk;
|
||||||
power-domains = <&power RK3399_PD_USB3>;
|
power-domains = <&power RK3399_PD_USB3>;
|
||||||
@@ -495,6 +496,7 @@
|
@@ -522,6 +523,7 @@
|
||||||
snps,dis_enblslpm_quirk;
|
snps,dis_enblslpm_quirk;
|
||||||
snps,dis-u2-freeclk-exists-quirk;
|
snps,dis-u2-freeclk-exists-quirk;
|
||||||
snps,dis_u2_susphy_quirk;
|
snps,dis_u2_susphy_quirk;
|
@ -9,7 +9,7 @@ Subject: [PATCH] net: phy: realtek: add LED configuration from OF for 8211f
|
|||||||
|
|
||||||
--- a/drivers/net/phy/realtek.c
|
--- a/drivers/net/phy/realtek.c
|
||||||
+++ b/drivers/net/phy/realtek.c
|
+++ b/drivers/net/phy/realtek.c
|
||||||
@@ -27,6 +27,8 @@
|
@@ -28,6 +28,8 @@
|
||||||
#define RTL821x_EXT_PAGE_SELECT 0x1e
|
#define RTL821x_EXT_PAGE_SELECT 0x1e
|
||||||
#define RTL821x_PAGE_SELECT 0x1f
|
#define RTL821x_PAGE_SELECT 0x1f
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ Subject: [PATCH] net: phy: realtek: add LED configuration from OF for 8211f
|
|||||||
#define RTL8211F_PHYCR1 0x18
|
#define RTL8211F_PHYCR1 0x18
|
||||||
#define RTL8211F_PHYCR2 0x19
|
#define RTL8211F_PHYCR2 0x19
|
||||||
#define RTL8211F_INSR 0x1d
|
#define RTL8211F_INSR 0x1d
|
||||||
@@ -349,6 +351,7 @@ static int rtl8211f_config_init(struct p
|
@@ -356,6 +358,7 @@ static int rtl8211f_config_init(struct p
|
||||||
struct rtl821x_priv *priv = phydev->priv;
|
struct rtl821x_priv *priv = phydev->priv;
|
||||||
struct device *dev = &phydev->mdio.dev;
|
struct device *dev = &phydev->mdio.dev;
|
||||||
u16 val_txdly, val_rxdly;
|
u16 val_txdly, val_rxdly;
|
||||||
@ -26,7 +26,7 @@ Subject: [PATCH] net: phy: realtek: add LED configuration from OF for 8211f
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = phy_modify_paged_changed(phydev, 0xa43, RTL8211F_PHYCR1,
|
ret = phy_modify_paged_changed(phydev, 0xa43, RTL8211F_PHYCR1,
|
||||||
@@ -425,6 +428,15 @@ static int rtl8211f_config_init(struct p
|
@@ -432,6 +435,15 @@ static int rtl8211f_config_init(struct p
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -24,7 +24,7 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|||||||
|
|
||||||
--- a/drivers/mmc/core/core.c
|
--- a/drivers/mmc/core/core.c
|
||||||
+++ b/drivers/mmc/core/core.c
|
+++ b/drivers/mmc/core/core.c
|
||||||
@@ -1371,6 +1371,8 @@ void mmc_power_off(struct mmc_host *host
|
@@ -1370,6 +1370,8 @@ void mmc_power_off(struct mmc_host *host
|
||||||
|
|
||||||
mmc_pwrseq_power_off(host);
|
mmc_pwrseq_power_off(host);
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
--- a/arch/arm64/Kconfig
|
--- a/arch/arm64/Kconfig
|
||||||
+++ b/arch/arm64/Kconfig
|
+++ b/arch/arm64/Kconfig
|
||||||
@@ -1165,6 +1165,14 @@ config SOCIONEXT_SYNQUACER_PREITS
|
@@ -1229,6 +1229,14 @@ config SOCIONEXT_SYNQUACER_PREITS
|
||||||
|
|
||||||
If unsure, say Y.
|
If unsure, say Y.
|
||||||
|
|
||||||
@ -83,7 +83,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
usb_host0_ehci: usb@fd800000 {
|
usb_host0_ehci: usb@fd800000 {
|
||||||
@@ -978,7 +985,7 @@
|
@@ -990,7 +997,7 @@
|
||||||
num-ib-windows = <6>;
|
num-ib-windows = <6>;
|
||||||
num-ob-windows = <2>;
|
num-ob-windows = <2>;
|
||||||
max-link-speed = <2>;
|
max-link-speed = <2>;
|
@ -9,19 +9,19 @@ Subject: [PATCH] irqchip: gic-v3: add hackaround for rk3568 its
|
|||||||
|
|
||||||
--- a/drivers/irqchip/irq-gic-v3-its.c
|
--- a/drivers/irqchip/irq-gic-v3-its.c
|
||||||
+++ b/drivers/irqchip/irq-gic-v3-its.c
|
+++ b/drivers/irqchip/irq-gic-v3-its.c
|
||||||
@@ -45,6 +45,7 @@
|
@@ -42,6 +42,7 @@
|
||||||
|
#define ITS_FLAGS_CMDQ_NEEDS_FLUSHING (1ULL << 0)
|
||||||
#define RDIST_FLAGS_PROPBASE_NEEDS_FLUSHING (1 << 0)
|
#define ITS_FLAGS_WORKAROUND_CAVIUM_22375 (1ULL << 1)
|
||||||
#define RDIST_FLAGS_RD_TABLES_PREALLOCATED (1 << 1)
|
#define ITS_FLAGS_WORKAROUND_CAVIUM_23144 (1ULL << 2)
|
||||||
+#define RDIST_FLAGS_FORCE_NO_LOCAL_CACHE (1 << 2)
|
+#define ITS_FLAGS_FORCE_NO_LOCAL_CACHE (1ULL << 2)
|
||||||
|
#define ITS_FLAGS_FORCE_NON_SHAREABLE (1ULL << 3)
|
||||||
|
|
||||||
#define RD_LOCAL_LPI_ENABLED BIT(0)
|
#define RD_LOCAL_LPI_ENABLED BIT(0)
|
||||||
#define RD_LOCAL_PENDTABLE_PREALLOCATED BIT(1)
|
@@ -2201,6 +2202,11 @@ static struct page *its_allocate_prop_ta
|
||||||
@@ -2203,6 +2204,11 @@ static struct page *its_allocate_prop_ta
|
|
||||||
{
|
{
|
||||||
struct page *prop_page;
|
struct page *prop_page;
|
||||||
|
|
||||||
+ if (gic_rdists->flags & RDIST_FLAGS_FORCE_NO_LOCAL_CACHE) {
|
+ if (gic_rdists->flags & ITS_FLAGS_FORCE_NO_LOCAL_CACHE) {
|
||||||
+ pr_err("ITS ALLOCATE PROP WORKAROUND\n");
|
+ pr_err("ITS ALLOCATE PROP WORKAROUND\n");
|
||||||
+ gfp_flags |= GFP_DMA;
|
+ gfp_flags |= GFP_DMA;
|
||||||
+ }
|
+ }
|
||||||
@ -29,7 +29,7 @@ Subject: [PATCH] irqchip: gic-v3: add hackaround for rk3568 its
|
|||||||
prop_page = alloc_pages(gfp_flags, get_order(LPI_PROPBASE_SZ));
|
prop_page = alloc_pages(gfp_flags, get_order(LPI_PROPBASE_SZ));
|
||||||
if (!prop_page)
|
if (!prop_page)
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -2326,6 +2332,7 @@ static int its_setup_baser(struct its_no
|
@@ -2324,6 +2330,7 @@ static int its_setup_baser(struct its_no
|
||||||
u32 alloc_pages, psz;
|
u32 alloc_pages, psz;
|
||||||
struct page *page;
|
struct page *page;
|
||||||
void *base;
|
void *base;
|
||||||
@ -37,23 +37,23 @@ Subject: [PATCH] irqchip: gic-v3: add hackaround for rk3568 its
|
|||||||
|
|
||||||
psz = baser->psz;
|
psz = baser->psz;
|
||||||
alloc_pages = (PAGE_ORDER_TO_SIZE(order) / psz);
|
alloc_pages = (PAGE_ORDER_TO_SIZE(order) / psz);
|
||||||
@@ -2337,7 +2344,10 @@ static int its_setup_baser(struct its_no
|
@@ -2335,7 +2342,10 @@ static int its_setup_baser(struct its_no
|
||||||
order = get_order(GITS_BASER_PAGES_MAX * psz);
|
order = get_order(GITS_BASER_PAGES_MAX * psz);
|
||||||
}
|
}
|
||||||
|
|
||||||
- page = alloc_pages_node(its->numa_node, GFP_KERNEL | __GFP_ZERO, order);
|
- page = alloc_pages_node(its->numa_node, GFP_KERNEL | __GFP_ZERO, order);
|
||||||
+ gfp_flags = GFP_KERNEL | __GFP_ZERO;
|
+ gfp_flags = GFP_KERNEL | __GFP_ZERO;
|
||||||
+ if (gic_rdists->flags & RDIST_FLAGS_FORCE_NO_LOCAL_CACHE)
|
+ if (gic_rdists->flags & ITS_FLAGS_FORCE_NO_LOCAL_CACHE)
|
||||||
+ gfp_flags |= GFP_DMA;
|
+ gfp_flags |= GFP_DMA;
|
||||||
+ page = alloc_pages_node(its->numa_node, gfp_flags, order);
|
+ page = alloc_pages_node(its->numa_node, gfp_flags, order);
|
||||||
if (!page)
|
if (!page)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
@@ -2384,6 +2394,13 @@ retry_baser:
|
@@ -2385,6 +2395,13 @@ retry_baser:
|
||||||
its_write_baser(its, baser, val);
|
its_write_baser(its, baser, val);
|
||||||
tmp = baser->val;
|
tmp = baser->val;
|
||||||
|
|
||||||
+ if (gic_rdists->flags & RDIST_FLAGS_FORCE_NO_LOCAL_CACHE) {
|
+ if (gic_rdists->flags & ITS_FLAGS_FORCE_NO_LOCAL_CACHE) {
|
||||||
+ if (tmp & GITS_BASER_SHAREABILITY_MASK)
|
+ if (tmp & GITS_BASER_SHAREABILITY_MASK)
|
||||||
+ tmp &= ~GITS_BASER_SHAREABILITY_MASK;
|
+ tmp &= ~GITS_BASER_SHAREABILITY_MASK;
|
||||||
+ else
|
+ else
|
||||||
@ -63,44 +63,44 @@ Subject: [PATCH] irqchip: gic-v3: add hackaround for rk3568 its
|
|||||||
if ((val ^ tmp) & GITS_BASER_SHAREABILITY_MASK) {
|
if ((val ^ tmp) & GITS_BASER_SHAREABILITY_MASK) {
|
||||||
/*
|
/*
|
||||||
* Shareability didn't stick. Just use
|
* Shareability didn't stick. Just use
|
||||||
@@ -2966,6 +2983,10 @@ static struct page *its_allocate_pending
|
@@ -2971,6 +2988,10 @@ static struct page *its_allocate_pending
|
||||||
{
|
{
|
||||||
struct page *pend_page;
|
struct page *pend_page;
|
||||||
|
|
||||||
+ if (gic_rdists->flags & RDIST_FLAGS_FORCE_NO_LOCAL_CACHE) {
|
+ if (gic_rdists->flags & ITS_FLAGS_FORCE_NO_LOCAL_CACHE) {
|
||||||
+ gfp_flags |= GFP_DMA;
|
+ gfp_flags |= GFP_DMA;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
pend_page = alloc_pages(gfp_flags | __GFP_ZERO,
|
pend_page = alloc_pages(gfp_flags | __GFP_ZERO,
|
||||||
get_order(LPI_PENDBASE_SZ));
|
get_order(LPI_PENDBASE_SZ));
|
||||||
if (!pend_page)
|
if (!pend_page)
|
||||||
@@ -3121,6 +3142,9 @@ static void its_cpu_init_lpis(void)
|
@@ -3126,6 +3147,9 @@ static void its_cpu_init_lpis(void)
|
||||||
gicr_write_propbaser(val, rbase + GICR_PROPBASER);
|
gicr_write_propbaser(val, rbase + GICR_PROPBASER);
|
||||||
tmp = gicr_read_propbaser(rbase + GICR_PROPBASER);
|
tmp = gicr_read_propbaser(rbase + GICR_PROPBASER);
|
||||||
|
|
||||||
+ if (gic_rdists->flags & RDIST_FLAGS_FORCE_NO_LOCAL_CACHE)
|
+ if (gic_rdists->flags & ITS_FLAGS_FORCE_NO_LOCAL_CACHE)
|
||||||
+ tmp &= ~GICR_PROPBASER_SHAREABILITY_MASK;
|
+ tmp &= ~GICR_PROPBASER_SHAREABILITY_MASK;
|
||||||
+
|
+
|
||||||
if ((tmp ^ val) & GICR_PROPBASER_SHAREABILITY_MASK) {
|
if (gic_rdists->flags & RDIST_FLAGS_FORCE_NON_SHAREABLE)
|
||||||
if (!(tmp & GICR_PROPBASER_SHAREABILITY_MASK)) {
|
tmp &= ~GICR_PROPBASER_SHAREABILITY_MASK;
|
||||||
/*
|
|
||||||
@@ -3145,6 +3169,9 @@ static void its_cpu_init_lpis(void)
|
@@ -3153,6 +3177,9 @@ static void its_cpu_init_lpis(void)
|
||||||
gicr_write_pendbaser(val, rbase + GICR_PENDBASER);
|
gicr_write_pendbaser(val, rbase + GICR_PENDBASER);
|
||||||
tmp = gicr_read_pendbaser(rbase + GICR_PENDBASER);
|
tmp = gicr_read_pendbaser(rbase + GICR_PENDBASER);
|
||||||
|
|
||||||
+ if (gic_rdists->flags & RDIST_FLAGS_FORCE_NO_LOCAL_CACHE)
|
+ if (gic_rdists->flags & ITS_FLAGS_FORCE_NO_LOCAL_CACHE)
|
||||||
+ tmp &= ~GICR_PENDBASER_SHAREABILITY_MASK;
|
+ tmp &= ~GICR_PENDBASER_SHAREABILITY_MASK;
|
||||||
+
|
+
|
||||||
if (!(tmp & GICR_PENDBASER_SHAREABILITY_MASK)) {
|
if (gic_rdists->flags & RDIST_FLAGS_FORCE_NON_SHAREABLE)
|
||||||
/*
|
tmp &= ~GICR_PENDBASER_SHAREABILITY_MASK;
|
||||||
* The HW reports non-shareable, we must remove the
|
|
||||||
@@ -3308,7 +3335,12 @@ static bool its_alloc_table_entry(struct
|
@@ -3319,7 +3346,12 @@ static bool its_alloc_table_entry(struct
|
||||||
|
|
||||||
/* Allocate memory for 2nd level table */
|
/* Allocate memory for 2nd level table */
|
||||||
if (!table[idx]) {
|
if (!table[idx]) {
|
||||||
- page = alloc_pages_node(its->numa_node, GFP_KERNEL | __GFP_ZERO,
|
- page = alloc_pages_node(its->numa_node, GFP_KERNEL | __GFP_ZERO,
|
||||||
+ gfp_t gfp_flags = GFP_KERNEL | __GFP_ZERO;
|
+ gfp_t gfp_flags = GFP_KERNEL | __GFP_ZERO;
|
||||||
+ if (gic_rdists->flags & RDIST_FLAGS_FORCE_NO_LOCAL_CACHE) {
|
+ if (gic_rdists->flags & ITS_FLAGS_FORCE_NO_LOCAL_CACHE) {
|
||||||
+ gfp_flags |= GFP_DMA;
|
+ gfp_flags |= GFP_DMA;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@ -108,7 +108,7 @@ Subject: [PATCH] irqchip: gic-v3: add hackaround for rk3568 its
|
|||||||
get_order(baser->psz));
|
get_order(baser->psz));
|
||||||
if (!page)
|
if (!page)
|
||||||
return false;
|
return false;
|
||||||
@@ -3397,6 +3429,7 @@ static struct its_device *its_create_dev
|
@@ -3408,6 +3440,7 @@ static struct its_device *its_create_dev
|
||||||
int nr_lpis;
|
int nr_lpis;
|
||||||
int nr_ites;
|
int nr_ites;
|
||||||
int sz;
|
int sz;
|
||||||
@ -116,20 +116,20 @@ Subject: [PATCH] irqchip: gic-v3: add hackaround for rk3568 its
|
|||||||
|
|
||||||
if (!its_alloc_device_table(its, dev_id))
|
if (!its_alloc_device_table(its, dev_id))
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -3404,7 +3437,11 @@ static struct its_device *its_create_dev
|
@@ -3415,7 +3448,11 @@ static struct its_device *its_create_dev
|
||||||
if (WARN_ON(!is_power_of_2(nvecs)))
|
if (WARN_ON(!is_power_of_2(nvecs)))
|
||||||
nvecs = roundup_pow_of_two(nvecs);
|
nvecs = roundup_pow_of_two(nvecs);
|
||||||
|
|
||||||
- dev = kzalloc(sizeof(*dev), GFP_KERNEL);
|
- dev = kzalloc(sizeof(*dev), GFP_KERNEL);
|
||||||
+ gfp_flags = GFP_KERNEL;
|
+ gfp_flags = GFP_KERNEL;
|
||||||
+ if (gic_rdists->flags & RDIST_FLAGS_FORCE_NO_LOCAL_CACHE)
|
+ if (gic_rdists->flags & ITS_FLAGS_FORCE_NO_LOCAL_CACHE)
|
||||||
+ gfp_flags |= GFP_DMA;
|
+ gfp_flags |= GFP_DMA;
|
||||||
+
|
+
|
||||||
+ dev = kzalloc(sizeof(*dev), gfp_flags);
|
+ dev = kzalloc(sizeof(*dev), gfp_flags);
|
||||||
/*
|
/*
|
||||||
* Even if the device wants a single LPI, the ITT must be
|
* Even if the device wants a single LPI, the ITT must be
|
||||||
* sized as a power of two (and you need at least one bit...).
|
* sized as a power of two (and you need at least one bit...).
|
||||||
@@ -3412,7 +3449,7 @@ static struct its_device *its_create_dev
|
@@ -3423,7 +3460,7 @@ static struct its_device *its_create_dev
|
||||||
nr_ites = max(2, nvecs);
|
nr_ites = max(2, nvecs);
|
||||||
sz = nr_ites * (FIELD_GET(GITS_TYPER_ITT_ENTRY_SIZE, its->typer) + 1);
|
sz = nr_ites * (FIELD_GET(GITS_TYPER_ITT_ENTRY_SIZE, its->typer) + 1);
|
||||||
sz = max(sz, ITS_ITT_ALIGN) + ITS_ITT_ALIGN - 1;
|
sz = max(sz, ITS_ITT_ALIGN) + ITS_ITT_ALIGN - 1;
|
||||||
@ -138,13 +138,13 @@ Subject: [PATCH] irqchip: gic-v3: add hackaround for rk3568 its
|
|||||||
if (alloc_lpis) {
|
if (alloc_lpis) {
|
||||||
lpi_map = its_lpi_alloc(nvecs, &lpi_base, &nr_lpis);
|
lpi_map = its_lpi_alloc(nvecs, &lpi_base, &nr_lpis);
|
||||||
if (lpi_map)
|
if (lpi_map)
|
||||||
@@ -4727,6 +4764,13 @@ static bool __maybe_unused its_enable_qu
|
@@ -4762,6 +4799,13 @@ static bool its_set_non_coherent(void *d
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
+static bool __maybe_unused its_enable_quirk_rk3568(void *data)
|
+static bool __maybe_unused its_enable_quirk_rk3568(void *data)
|
||||||
+{
|
+{
|
||||||
+ gic_rdists->flags |= RDIST_FLAGS_FORCE_NO_LOCAL_CACHE;
|
+ gic_rdists->flags |= ITS_FLAGS_FORCE_NO_LOCAL_CACHE;
|
||||||
+
|
+
|
||||||
+ return true;
|
+ return true;
|
||||||
+}
|
+}
|
||||||
@ -152,8 +152,8 @@ Subject: [PATCH] irqchip: gic-v3: add hackaround for rk3568 its
|
|||||||
static const struct gic_quirk its_quirks[] = {
|
static const struct gic_quirk its_quirks[] = {
|
||||||
#ifdef CONFIG_CAVIUM_ERRATUM_22375
|
#ifdef CONFIG_CAVIUM_ERRATUM_22375
|
||||||
{
|
{
|
||||||
@@ -4773,6 +4817,14 @@ static const struct gic_quirk its_quirks
|
@@ -4816,6 +4860,14 @@ static const struct gic_quirk its_quirks
|
||||||
.init = its_enable_quirk_hip07_161600802,
|
.init = its_enable_rk3588001,
|
||||||
},
|
},
|
||||||
#endif
|
#endif
|
||||||
+#ifdef CONFIG_ROCKCHIP_ERRATUM_114514
|
+#ifdef CONFIG_ROCKCHIP_ERRATUM_114514
|
||||||
@ -165,19 +165,19 @@ Subject: [PATCH] irqchip: gic-v3: add hackaround for rk3568 its
|
|||||||
+ },
|
+ },
|
||||||
+#endif
|
+#endif
|
||||||
{
|
{
|
||||||
}
|
.desc = "ITS: non-coherent attribute",
|
||||||
};
|
.property = "dma-noncoherent",
|
||||||
@@ -5028,6 +5080,7 @@ static int __init its_probe_one(struct r
|
@@ -5077,6 +5129,7 @@ static int __init its_probe_one(struct i
|
||||||
struct page *page;
|
struct page *page;
|
||||||
u32 ctlr;
|
u32 ctlr;
|
||||||
int err;
|
int err;
|
||||||
+ gfp_t gfp_flags;
|
+ gfp_t gfp_flags;
|
||||||
|
|
||||||
its_base = its_map_one(res, &err);
|
if (is_v4(its)) {
|
||||||
if (!its_base)
|
if (!(its->typer & GITS_TYPER_VMOVP)) {
|
||||||
@@ -5081,7 +5134,9 @@ static int __init its_probe_one(struct r
|
@@ -5108,7 +5161,9 @@ static int __init its_probe_one(struct i
|
||||||
|
}
|
||||||
its->numa_node = numa_node;
|
}
|
||||||
|
|
||||||
- page = alloc_pages_node(its->numa_node, GFP_KERNEL | __GFP_ZERO,
|
- page = alloc_pages_node(its->numa_node, GFP_KERNEL | __GFP_ZERO,
|
||||||
+ gfp_flags = GFP_KERNEL | __GFP_ZERO | GFP_DMA;
|
+ gfp_flags = GFP_KERNEL | __GFP_ZERO | GFP_DMA;
|
||||||
@ -186,13 +186,13 @@ Subject: [PATCH] irqchip: gic-v3: add hackaround for rk3568 its
|
|||||||
get_order(ITS_CMD_QUEUE_SZ));
|
get_order(ITS_CMD_QUEUE_SZ));
|
||||||
if (!page) {
|
if (!page) {
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
@@ -5112,6 +5167,9 @@ static int __init its_probe_one(struct r
|
@@ -5134,6 +5189,9 @@ static int __init its_probe_one(struct i
|
||||||
gits_write_cbaser(baser, its->base + GITS_CBASER);
|
gits_write_cbaser(baser, its->base + GITS_CBASER);
|
||||||
tmp = gits_read_cbaser(its->base + GITS_CBASER);
|
tmp = gits_read_cbaser(its->base + GITS_CBASER);
|
||||||
|
|
||||||
+ if (gic_rdists->flags & RDIST_FLAGS_FORCE_NO_LOCAL_CACHE)
|
+ if (gic_rdists->flags & ITS_FLAGS_FORCE_NO_LOCAL_CACHE)
|
||||||
+ tmp &= ~GITS_CBASER_SHAREABILITY_MASK;
|
+ tmp &= ~GITS_CBASER_SHAREABILITY_MASK;
|
||||||
+
|
+
|
||||||
if ((tmp ^ baser) & GITS_CBASER_SHAREABILITY_MASK) {
|
if (its->flags & ITS_FLAGS_FORCE_NON_SHAREABLE)
|
||||||
if (!(tmp & GITS_CBASER_SHAREABILITY_MASK)) {
|
tmp &= ~GITS_CBASER_SHAREABILITY_MASK;
|
||||||
/*
|
|
@ -16,7 +16,7 @@ Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
|
|||||||
|
|
||||||
--- a/drivers/pci/pcie/Kconfig
|
--- a/drivers/pci/pcie/Kconfig
|
||||||
+++ b/drivers/pci/pcie/Kconfig
|
+++ b/drivers/pci/pcie/Kconfig
|
||||||
@@ -110,6 +110,12 @@ config PCIEASPM_PERFORMANCE
|
@@ -114,6 +114,12 @@ config PCIEASPM_PERFORMANCE
|
||||||
Disable PCI Express ASPM L0s and L1, even if the BIOS enabled them.
|
Disable PCI Express ASPM L0s and L1, even if the BIOS enabled them.
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
|
|||||||
depends on PCIEPORTBUS && PM
|
depends on PCIEPORTBUS && PM
|
||||||
--- a/drivers/pci/pcie/Makefile
|
--- a/drivers/pci/pcie/Makefile
|
||||||
+++ b/drivers/pci/pcie/Makefile
|
+++ b/drivers/pci/pcie/Makefile
|
||||||
@@ -7,6 +7,7 @@ pcieportdrv-y := portdrv_core.o portdr
|
@@ -7,6 +7,7 @@ pcieportdrv-y := portdrv.o rcec.o
|
||||||
obj-$(CONFIG_PCIEPORTBUS) += pcieportdrv.o
|
obj-$(CONFIG_PCIEPORTBUS) += pcieportdrv.o
|
||||||
|
|
||||||
obj-$(CONFIG_PCIEASPM) += aspm.o
|
obj-$(CONFIG_PCIEASPM) += aspm.o
|
@ -14,7 +14,7 @@ Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
|
|||||||
|
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
|
||||||
@@ -1315,7 +1315,6 @@
|
@@ -1362,7 +1362,6 @@
|
||||||
interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH 0>;
|
interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||||
clocks = <&cru PCLK_DDR_MON>;
|
clocks = <&cru PCLK_DDR_MON>;
|
||||||
clock-names = "pclk_ddr_mon";
|
clock-names = "pclk_ddr_mon";
|
@ -13,7 +13,7 @@ Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
|
|||||||
|
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
--- a/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
+++ b/arch/arm64/boot/dts/rockchip/rk356x.dtsi
|
||||||
@@ -956,6 +956,13 @@
|
@@ -968,6 +968,13 @@
|
||||||
reg = <0x0 0xfe1a8100 0x0 0x20>;
|
reg = <0x0 0xfe1a8100 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user