mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-10-31 02:17:58 +00:00 
			
		
		
		
	ipq807x: backport pstore support
v4.4 was missing OF support for this feature. Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
		| @@ -1,4 +1,4 @@ | |||||||
| From 969714cb5e188d3d7a4391425c2a55354da13855 Mon Sep 17 00:00:00 2001 | From ed0c6c49e0033c30207b1e4c925f19d67d087cfe Mon Sep 17 00:00:00 2001 | ||||||
| From: John Crispin <john@phrozen.org> | From: John Crispin <john@phrozen.org> | ||||||
| Date: Sat, 18 Jul 2020 08:53:44 +0200 | Date: Sat, 18 Jul 2020 08:53:44 +0200 | ||||||
| Subject: [PATCH 01/30] ipq807x: add the Qualcomm AX target support | Subject: [PATCH 01/30] ipq807x: add the Qualcomm AX target support | ||||||
| @@ -20,7 +20,7 @@ Signed-off-by: John Crispin <john@phrozen.org> | |||||||
|  .../linux/ipq807x/base-files/etc/init.d/wdt   |   14 + |  .../linux/ipq807x/base-files/etc/init.d/wdt   |   14 + | ||||||
|  ...G4_v5.4.B-AQR_CIG_WIFI_ID44715_VER1673.cld |  Bin 0 -> 391170 bytes |  ...G4_v5.4.B-AQR_CIG_WIFI_ID44715_VER1673.cld |  Bin 0 -> 391170 bytes | ||||||
|  .../base-files/lib/upgrade/platform.sh        |   66 + |  .../base-files/lib/upgrade/platform.sh        |   66 + | ||||||
|  target/linux/ipq807x/config-4.4               |  824 +++++++++ |  target/linux/ipq807x/config-4.4               |  828 +++++++++ | ||||||
|  .../arm/boot/dts/qcom-ipq6018-cig-wf188.dts   |   18 + |  .../arm/boot/dts/qcom-ipq6018-cig-wf188.dts   |   18 + | ||||||
|  .../arm/boot/dts/qcom-ipq6018-cig-wf188n.dts  |   18 + |  .../arm/boot/dts/qcom-ipq6018-cig-wf188n.dts  |   18 + | ||||||
|  .../boot/dts/qcom-ipq6018-edgecore-eap101.dts |   18 + |  .../boot/dts/qcom-ipq6018-edgecore-eap101.dts |   18 + | ||||||
| @@ -54,7 +54,8 @@ Signed-off-by: John Crispin <john@phrozen.org> | |||||||
|  target/linux/ipq807x/patches/109-tplink.patch | 1518 +++++++++++++++++ |  target/linux/ipq807x/patches/109-tplink.patch | 1518 +++++++++++++++++ | ||||||
|  .../ipq807x/patches/110-add-esmt-nand.patch   |   37 + |  .../ipq807x/patches/110-add-esmt-nand.patch   |   37 + | ||||||
|  target/linux/ipq807x/patches/111-eap106.patch |  765 +++++++++ |  target/linux/ipq807x/patches/111-eap106.patch |  765 +++++++++ | ||||||
|  49 files changed, 10107 insertions(+), 2 deletions(-) |  target/linux/ipq807x/patches/112-pstore.patch |  190 +++ | ||||||
|  |  50 files changed, 10301 insertions(+), 2 deletions(-) | ||||||
|  create mode 100644 package/boot/uboot-envtools/files/ipq807x |  create mode 100644 package/boot/uboot-envtools/files/ipq807x | ||||||
|  create mode 100644 target/linux/ipq807x/109-logspam.patch |  create mode 100644 target/linux/ipq807x/109-logspam.patch | ||||||
|  create mode 100644 target/linux/ipq807x/Makefile |  create mode 100644 target/linux/ipq807x/Makefile | ||||||
| @@ -100,6 +101,7 @@ Signed-off-by: John Crispin <john@phrozen.org> | |||||||
|  create mode 100644 target/linux/ipq807x/patches/109-tplink.patch |  create mode 100644 target/linux/ipq807x/patches/109-tplink.patch | ||||||
|  create mode 100644 target/linux/ipq807x/patches/110-add-esmt-nand.patch |  create mode 100644 target/linux/ipq807x/patches/110-add-esmt-nand.patch | ||||||
|  create mode 100644 target/linux/ipq807x/patches/111-eap106.patch |  create mode 100644 target/linux/ipq807x/patches/111-eap106.patch | ||||||
|  |  create mode 100644 target/linux/ipq807x/patches/112-pstore.patch | ||||||
|  |  | ||||||
| diff --git a/config/Config-kernel.in b/config/Config-kernel.in | diff --git a/config/Config-kernel.in b/config/Config-kernel.in | ||||||
| index f71114b5da..4a85d83118 100644 | index f71114b5da..4a85d83118 100644 | ||||||
| @@ -4811,10 +4813,10 @@ index 0000000000..4943b6c406 | |||||||
| +} | +} | ||||||
| diff --git a/target/linux/ipq807x/config-4.4 b/target/linux/ipq807x/config-4.4 | diff --git a/target/linux/ipq807x/config-4.4 b/target/linux/ipq807x/config-4.4 | ||||||
| new file mode 100644 | new file mode 100644 | ||||||
| index 0000000000..eeb1fec76c | index 0000000000..1b4b95b968 | ||||||
| --- /dev/null | --- /dev/null | ||||||
| +++ b/target/linux/ipq807x/config-4.4 | +++ b/target/linux/ipq807x/config-4.4 | ||||||
| @@ -0,0 +1,824 @@ | @@ -0,0 +1,828 @@ | ||||||
| +# CONFIG_AHCI_IPQ is not set | +# CONFIG_AHCI_IPQ is not set | ||||||
| +CONFIG_ALIGNMENT_TRAP=y | +CONFIG_ALIGNMENT_TRAP=y | ||||||
| +# CONFIG_ALLOW_DEV_COREDUMP is not set | +# CONFIG_ALLOW_DEV_COREDUMP is not set | ||||||
| @@ -5361,6 +5363,10 @@ index 0000000000..eeb1fec76c | |||||||
| +CONFIG_PRINTK_TIME=y | +CONFIG_PRINTK_TIME=y | ||||||
| +CONFIG_PROC_PAGE_MONITOR=y | +CONFIG_PROC_PAGE_MONITOR=y | ||||||
| +# CONFIG_PROC_STRIPPED is not set | +# CONFIG_PROC_STRIPPED is not set | ||||||
|  | +CONFIG_PSTORE=y | ||||||
|  | +CONFIG_PSTORE_RAM=y | ||||||
|  | +# CONFIG_PSTORE_CONSOLE is not set | ||||||
|  | +# CONFIG_PSTORE_PMSG is not set | ||||||
| +CONFIG_PWM=y | +CONFIG_PWM=y | ||||||
| +# CONFIG_PWM_IPQ4019 is not set | +# CONFIG_PWM_IPQ4019 is not set | ||||||
| +# CONFIG_PWM_PCA9685 is not set | +# CONFIG_PWM_PCA9685 is not set | ||||||
| @@ -14704,6 +14710,202 @@ index 0000000000..497742193e | |||||||
| + 	{ PHY_ID_AQR112, 0xfffffff0 }, | + 	{ PHY_ID_AQR112, 0xfffffff0 }, | ||||||
| + 	{ PHY_ID_AQR113C, 0xfffffff0 }, | + 	{ PHY_ID_AQR113C, 0xfffffff0 }, | ||||||
| + 	{ PHY_ID_AQR112C, 0xfffffff0 }, | + 	{ PHY_ID_AQR112C, 0xfffffff0 }, | ||||||
|  | diff --git a/target/linux/ipq807x/patches/112-pstore.patch b/target/linux/ipq807x/patches/112-pstore.patch | ||||||
|  | new file mode 100644 | ||||||
|  | index 0000000000..ed97c34241 | ||||||
|  | --- /dev/null | ||||||
|  | +++ b/target/linux/ipq807x/patches/112-pstore.patch | ||||||
|  | @@ -0,0 +1,190 @@ | ||||||
|  | +Index: linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/arch/arm64/boot/dts/qcom/qcom-ipq6018-memory.dtsi | ||||||
|  | +=================================================================== | ||||||
|  | +--- linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016.orig/arch/arm64/boot/dts/qcom/qcom-ipq6018-memory.dtsi | ||||||
|  | ++++ linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/arch/arm64/boot/dts/qcom/qcom-ipq6018-memory.dtsi | ||||||
|  | +@@ -92,6 +92,12 @@ | ||||||
|  | + 			reg = <0x0 0x40000000 0x0 0x00800000>; | ||||||
|  | + 		}; | ||||||
|  | +  | ||||||
|  | ++		ramoops@4A0f0000 { | ||||||
|  | ++			compatible = "ramoops"; | ||||||
|  | ++			reg = <0 0x4A0f0000 0 0x10000>; | ||||||
|  | ++			record-size = <0x1000>; | ||||||
|  | ++		}; | ||||||
|  | ++ | ||||||
|  | + 		uboot@4A100000 { | ||||||
|  | + 			no-map; | ||||||
|  | + 			reg = <0x0 0x4A100000 0x0 0x00400000>; | ||||||
|  | +@@ -211,6 +217,12 @@ | ||||||
|  | + 			reg = <0x0 0x40000000 0x0 0x01000000>; | ||||||
|  | + 		}; | ||||||
|  | +  | ||||||
|  | ++		ramoops@4A0f0000 { | ||||||
|  | ++			compatible = "ramoops"; | ||||||
|  | ++			reg = <0 0x4A0f0000 0 0x10000>; | ||||||
|  | ++			record-size = <0x1000>; | ||||||
|  | ++		}; | ||||||
|  | ++ | ||||||
|  | + 		uboot@4A100000 { | ||||||
|  | + 			no-map; | ||||||
|  | + 			reg = <0x0 0x4A100000 0x0 0x00400000>; | ||||||
|  | +@@ -330,6 +342,12 @@ | ||||||
|  | + 			reg = <0x0 0x40000000 0x0 0x01000000>; | ||||||
|  | + 		}; | ||||||
|  | +  | ||||||
|  | ++		ramoops@4A0f0000 { | ||||||
|  | ++			compatible = "ramoops"; | ||||||
|  | ++			reg = <0 0x4A0f0000 0 0x10000>; | ||||||
|  | ++			record-size = <0x1000>; | ||||||
|  | ++		}; | ||||||
|  | ++ | ||||||
|  | + 		uboot@4A100000 { | ||||||
|  | + 			no-map; | ||||||
|  | + 			reg = <0x0 0x4A100000 0x0 0x00400000>; | ||||||
|  | +Index: linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/arch/arm64/boot/dts/qcom/qcom-ipq807x-memory.dtsi | ||||||
|  | +=================================================================== | ||||||
|  | +--- linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016.orig/arch/arm64/boot/dts/qcom/qcom-ipq807x-memory.dtsi | ||||||
|  | ++++ linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/arch/arm64/boot/dts/qcom/qcom-ipq807x-memory.dtsi | ||||||
|  | +@@ -94,6 +94,12 @@ | ||||||
|  | + 			no-map; | ||||||
|  | + 			reg = <0x0 0x4a600000 0x0 0x00400000>; | ||||||
|  | + 		}; | ||||||
|  | ++		ramoops@4a3f0000 { | ||||||
|  | ++			compatible = "ramoops"; | ||||||
|  | ++			reg = <0 0x4a3f0000 0 0x10000>; | ||||||
|  | ++			record-size = <0x1000>; | ||||||
|  | ++		}; | ||||||
|  | ++ | ||||||
|  | + 		tzapp:tzapp@4a400000 {	/* TZAPPS */ | ||||||
|  | + 			no-map; | ||||||
|  | + 			reg = <0x0 0x4a400000 0x0 0x00100000>; | ||||||
|  | +@@ -214,6 +220,12 @@ | ||||||
|  | + 			no-map; | ||||||
|  | + 			reg = <0x0 0x4a600000 0x0 0x00400000>; | ||||||
|  | + 		}; | ||||||
|  | ++		ramoops@4a3f0000 { | ||||||
|  | ++			compatible = "ramoops"; | ||||||
|  | ++			reg = <0 0x4a3f0000 0 0x10000>; | ||||||
|  | ++			record-size = <0x1000>; | ||||||
|  | ++		}; | ||||||
|  | ++ | ||||||
|  | + 		tzapp:tzapp@4a400000 {	/* TZAPPS */ | ||||||
|  | + 			no-map; | ||||||
|  | + 			reg = <0x0 0x4a400000 0x0 0x00100000>; | ||||||
|  | +@@ -334,6 +346,12 @@ | ||||||
|  | + 			reg = <0x0 0x40000000 0x0 0x01000000>; | ||||||
|  | + 		}; | ||||||
|  | +  | ||||||
|  | ++		ramoops@4a3f0000 { | ||||||
|  | ++			compatible = "ramoops"; | ||||||
|  | ++			reg = <0 0x4a3f0000 0 0x10000>; | ||||||
|  | ++			record-size = <0x1000>; | ||||||
|  | ++		}; | ||||||
|  | ++ | ||||||
|  | + 		tzapp:tzapp@4a400000 {	/* TZAPPS */ | ||||||
|  | + 			no-map; | ||||||
|  | + 			reg = <0x0 0x4a400000 0x0 0x00200000>; | ||||||
|  | +Index: linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/fs/pstore/ram.c | ||||||
|  | +=================================================================== | ||||||
|  | +--- linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016.orig/fs/pstore/ram.c | ||||||
|  | ++++ linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/fs/pstore/ram.c | ||||||
|  | +@@ -466,15 +466,46 @@ static int ramoops_init_prz(struct devic | ||||||
|  | + 	return 0; | ||||||
|  | + } | ||||||
|  | +  | ||||||
|  | ++static int ramoops_parse_dt(struct platform_device *pdev, | ||||||
|  | ++                            struct ramoops_platform_data *pdata) | ||||||
|  | ++{ | ||||||
|  | ++	struct resource *res; | ||||||
|  | ++ | ||||||
|  | ++	dev_dbg(&pdev->dev, "using Device Tree\n"); | ||||||
|  | ++ | ||||||
|  | ++	res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||||||
|  | ++	if (!res) { | ||||||
|  | ++		dev_err(&pdev->dev, | ||||||
|  | ++			"failed to locate DT /reserved-memory resource\n"); | ||||||
|  | ++		return -EINVAL; | ||||||
|  | ++	} | ||||||
|  | ++ | ||||||
|  | ++	pdata->mem_size = resource_size(res); | ||||||
|  | ++	pdata->mem_address = res->start; | ||||||
|  | ++	pdata->dump_oops = true; | ||||||
|  | ++	pdata->record_size = 0x1000; | ||||||
|  | ++	return 0; | ||||||
|  | ++} | ||||||
|  | ++ | ||||||
|  | + static int ramoops_probe(struct platform_device *pdev) | ||||||
|  | + { | ||||||
|  | + 	struct device *dev = &pdev->dev; | ||||||
|  | + 	struct ramoops_platform_data *pdata = pdev->dev.platform_data; | ||||||
|  | ++	struct ramoops_platform_data pdata_local; | ||||||
|  | + 	struct ramoops_context *cxt = &oops_cxt; | ||||||
|  | + 	size_t dump_mem_sz; | ||||||
|  | + 	phys_addr_t paddr; | ||||||
|  | + 	int err = -EINVAL; | ||||||
|  | +  | ||||||
|  | ++	if (dev_of_node(dev) && !pdata) { | ||||||
|  | ++		pdata = &pdata_local; | ||||||
|  | ++		memset(pdata, 0, sizeof(*pdata)); | ||||||
|  | ++ | ||||||
|  | ++		err = ramoops_parse_dt(pdev, pdata); | ||||||
|  | ++		if (err < 0) | ||||||
|  | ++		goto fail_out; | ||||||
|  | ++	} | ||||||
|  | ++ | ||||||
|  | + 	/* Only a single ramoops area allowed at a time, so fail extra | ||||||
|  | + 	 * probes. | ||||||
|  | + 	 */ | ||||||
|  | +@@ -603,11 +634,17 @@ static int ramoops_remove(struct platfor | ||||||
|  | + 	return 0; | ||||||
|  | + } | ||||||
|  | +  | ||||||
|  | ++static const struct of_device_id dt_match[] = { | ||||||
|  | ++	{ .compatible = "ramoops" }, | ||||||
|  | ++	{} | ||||||
|  | ++}; | ||||||
|  | ++ | ||||||
|  | + static struct platform_driver ramoops_driver = { | ||||||
|  | + 	.probe		= ramoops_probe, | ||||||
|  | + 	.remove		= ramoops_remove, | ||||||
|  | + 	.driver		= { | ||||||
|  | + 		.name	= "ramoops", | ||||||
|  | ++		.of_match_table = dt_match, | ||||||
|  | + 	}, | ||||||
|  | + }; | ||||||
|  | +  | ||||||
|  | +Index: linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/of/platform.c | ||||||
|  | +=================================================================== | ||||||
|  | +--- linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016.orig/drivers/of/platform.c | ||||||
|  | ++++ linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/of/platform.c | ||||||
|  | +@@ -53,6 +53,30 @@ struct platform_device *of_find_device_b | ||||||
|  | + } | ||||||
|  | + EXPORT_SYMBOL(of_find_device_by_node); | ||||||
|  | +  | ||||||
|  | ++static const struct of_device_id reserved_mem_matches[] = { | ||||||
|  | ++        { .compatible = "ramoops" }, | ||||||
|  | ++        {} | ||||||
|  | ++}; | ||||||
|  | ++ | ||||||
|  | ++static int __init of_platform_default_populate_init(void) | ||||||
|  | ++{ | ||||||
|  | ++	struct device_node *node; | ||||||
|  | ++ | ||||||
|  | ++	if (!of_have_populated_dt()) | ||||||
|  | ++		return -ENODEV; | ||||||
|  | ++ | ||||||
|  | ++	/* | ||||||
|  | ++	 * Handle certain compatibles explicitly, since we don't want to create | ||||||
|  | ++	 * platform_devices for every node in /reserved-memory with a | ||||||
|  | ++	 * "compatible", | ||||||
|  | ++	 */ | ||||||
|  | ++	for_each_matching_node(node, reserved_mem_matches) | ||||||
|  | ++		of_platform_device_create(node, NULL, NULL); | ||||||
|  | ++ | ||||||
|  | ++	return 0; | ||||||
|  | ++} | ||||||
|  | ++arch_initcall_sync(of_platform_default_populate_init); | ||||||
|  | ++ | ||||||
|  | + #ifdef CONFIG_OF_ADDRESS | ||||||
|  | + /* | ||||||
|  | +  * The following routines scan a subtree and registers a device for | ||||||
| --  | --  | ||||||
| 2.25.1 | 2.25.1 | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 John Crispin
					John Crispin