diff options
author | jmbills <jason.m.bills@intel.com> | 2022-01-18 21:55:05 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-18 21:55:05 +0300 |
commit | 7cf0c1cd0ce835d1833509b7b911e8a97380278b (patch) | |
tree | 0b45c3beaa9874facc4ed1a2395a31e42be0135d /meta-openbmc-mods/meta-common/recipes-kernel | |
parent | 4dac5fcd49b5e2de1074f1363775ec0f19041072 (diff) | |
parent | 1fc0d70f658da30091bcd49f9bf29aecd6b99ba7 (diff) | |
download | openbmc-7cf0c1cd0ce835d1833509b7b911e8a97380278b.tar.xz |
Merge pull request #76 from Intel-BMC/update1-0.86
Update
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-kernel')
10 files changed, 4 insertions, 698 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0001-peci-Add-debug-printing-to-check-caller-PID.patch b/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0001-peci-Add-debug-printing-to-check-caller-PID.patch deleted file mode 100644 index fbd51df7a..000000000 --- a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0001-peci-Add-debug-printing-to-check-caller-PID.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 7474fe190f770e064a5ce5e939bd713ce2aa1de5 Mon Sep 17 00:00:00 2001 -From: Jae Hyun Yoo <jae.hyun.yoo@intel.com> -Date: Wed, 3 Feb 2021 16:18:37 -0800 -Subject: [PATCH] peci: Add debug printing to check caller PID - -This commit adds debug printing out to check caller PID for traffic -profiling. - -The printing can be enabled by this command: -echo -n 'file drivers/peci/peci-core.c line 218 +p' > /sys/kernel/debug/dynamic_debug/control -echo '8' > /proc/sys/kernel/printk - -Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com> ---- - drivers/peci/peci-core.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/drivers/peci/peci-core.c b/drivers/peci/peci-core.c -index 10375e6087a5..02c8502fd846 100644 ---- a/drivers/peci/peci-core.c -+++ b/drivers/peci/peci-core.c -@@ -194,6 +194,7 @@ static int __peci_xfer(struct peci_adapter *adapter, struct peci_xfer_msg *msg, - bool do_retry, bool has_aw_fcs) - { - uint interval_us = PECI_DEV_RETRY_INTERVAL_MIN_USEC; -+ char task_name[TASK_COMM_LEN]; - ulong timeout = jiffies; - u8 aw_fcs; - int ret; -@@ -214,6 +215,10 @@ static int __peci_xfer(struct peci_adapter *adapter, struct peci_xfer_msg *msg, - } - } - -+ get_task_comm(task_name, current); -+ dev_dbg(&adapter->dev, "%s is called by %s(%d) through %s\n", -+ __func__, task_name, current->pid, adapter->name); -+ - /* - * For some commands, the PECI originator may need to retry a command if - * the processor PECI client responds with a 0x8x completion code. In --- -2.17.1 - diff --git a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0002-soc-aspeed-add-AST2600-A0-specific-fix-into-mbox-dri.patch b/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0002-soc-aspeed-add-AST2600-A0-specific-fix-into-mbox-dri.patch deleted file mode 100644 index 1e1dac7a8..000000000 --- a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0002-soc-aspeed-add-AST2600-A0-specific-fix-into-mbox-dri.patch +++ /dev/null @@ -1,42 +0,0 @@ -From ae96ce5f2a5bd76b234cea6fc3f0bf1df74387f3 Mon Sep 17 00:00:00 2001 -From: Jae Hyun Yoo <jae.hyun.yoo@intel.com> -Date: Thu, 4 Feb 2021 00:29:55 -0800 -Subject: [PATCH] soc: aspeed: add AST2600 A0 specific fix into mbox driver - -AST2600 A0 has the same LPC mbox register structure with AST2500 -but AST2600 A1 and later revision is different so this commit adds -AST2600 A0 specific fix into the mbox driver. - -Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com> ---- - drivers/soc/aspeed/aspeed-lpc-mbox.c | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/drivers/soc/aspeed/aspeed-lpc-mbox.c b/drivers/soc/aspeed/aspeed-lpc-mbox.c -index 8dd3345682c7..12bb436dda78 100644 ---- a/drivers/soc/aspeed/aspeed-lpc-mbox.c -+++ b/drivers/soc/aspeed/aspeed-lpc-mbox.c -@@ -363,6 +363,20 @@ static int aspeed_mbox_probe(struct platform_device *pdev) - return -EINVAL; - - config = match->data; -+ -+ if (of_device_is_compatible(pdev->dev.of_node, -+ "aspeed,ast2600-mbox")) { -+ #define REV_ID_IO_OFFSET 0x1e6e2014 -+ #define REV_ID_AST2600A0 0x05000303 -+ void __iomem *chip_id_base = devm_ioremap(&pdev->dev, -+ REV_ID_IO_OFFSET, -+ sizeof(u32)); -+ -+ if (!IS_ERR(chip_id_base) && -+ readl(chip_id_base) == REV_ID_AST2600A0) -+ config = &ast2500_config; -+ } -+ - memcpy(&mbox->configs, config, sizeof(mbox->configs)); - - rc = of_property_read_u32(dev->of_node, "reg", &mbox->base); --- -2.17.1 - diff --git a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0003-Fix-libmctp-build-error.patch b/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0003-Fix-libmctp-build-error.patch deleted file mode 100644 index b9a6ca527..000000000 --- a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0003-Fix-libmctp-build-error.patch +++ /dev/null @@ -1,116 +0,0 @@ -From af414e45bade3cf7277215d82b59a31c9b459cea Mon Sep 17 00:00:00 2001 -From: Jae Hyun Yoo <jae.hyun.yoo@intel.com> -Date: Mon, 22 Feb 2021 15:27:22 -0800 -Subject: [PATCH] Fix libmctp build error - -This is a quick fix for libmctp building which includes staging -kernel headers. It's a temporary fix until kernel tree fixes the -rwonce.h including issue. - -Note: Do not upstream it. - -Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com> ---- - include/asm/rwonce.h | 90 ++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 90 insertions(+) - create mode 100644 include/asm/rwonce.h - -diff --git a/include/asm/rwonce.h b/include/asm/rwonce.h -new file mode 100644 -index 000000000000..11619bdbebae ---- /dev/null -+++ b/include/asm/rwonce.h -@@ -0,0 +1,90 @@ -+/* SPDX-License-Identifier: GPL-2.0 */ -+/* -+ * Prevent the compiler from merging or refetching reads or writes. The -+ * compiler is also forbidden from reordering successive instances of -+ * READ_ONCE and WRITE_ONCE, but only when the compiler is aware of some -+ * particular ordering. One way to make the compiler aware of ordering is to -+ * put the two invocations of READ_ONCE or WRITE_ONCE in different C -+ * statements. -+ * -+ * These two macros will also work on aggregate data types like structs or -+ * unions. -+ * -+ * Their two major use cases are: (1) Mediating communication between -+ * process-level code and irq/NMI handlers, all running on the same CPU, -+ * and (2) Ensuring that the compiler does not fold, spindle, or otherwise -+ * mutilate accesses that either do not require ordering or that interact -+ * with an explicit memory barrier or atomic instruction that provides the -+ * required ordering. -+ */ -+#ifndef __ASM_GENERIC_RWONCE_H -+#define __ASM_GENERIC_RWONCE_H -+ -+#ifndef __ASSEMBLY__ -+ -+#include <linux/compiler_types.h> -+#include <linux/kasan-checks.h> -+#include <linux/kcsan-checks.h> -+ -+/* -+ * Yes, this permits 64-bit accesses on 32-bit architectures. These will -+ * actually be atomic in some cases (namely Armv7 + LPAE), but for others we -+ * rely on the access being split into 2x32-bit accesses for a 32-bit quantity -+ * (e.g. a virtual address) and a strong prevailing wind. -+ */ -+#define compiletime_assert_rwonce_type(t) \ -+ compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \ -+ "Unsupported access size for {READ,WRITE}_ONCE().") -+ -+/* -+ * Use __READ_ONCE() instead of READ_ONCE() if you do not require any -+ * atomicity. Note that this may result in tears! -+ */ -+#ifndef __READ_ONCE -+#define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x)) -+#endif -+ -+#define READ_ONCE(x) \ -+({ \ -+ compiletime_assert_rwonce_type(x); \ -+ __READ_ONCE(x); \ -+}) -+ -+#define __WRITE_ONCE(x, val) \ -+do { \ -+ *(volatile typeof(x) *)&(x) = (val); \ -+} while (0) -+ -+#define WRITE_ONCE(x, val) \ -+do { \ -+ compiletime_assert_rwonce_type(x); \ -+ __WRITE_ONCE(x, val); \ -+} while (0) -+ -+static __always_inline -+unsigned long __read_once_word_nocheck(const void *addr) -+{ -+ return __READ_ONCE(*(unsigned long *)addr); -+} -+ -+/* -+ * Use READ_ONCE_NOCHECK() instead of READ_ONCE() if you need to load a -+ * word from memory atomically but without telling KASAN/KCSAN. This is -+ * usually used by unwinding code when walking the stack of a running process. -+ */ -+#define READ_ONCE_NOCHECK(x) \ -+({ \ -+ compiletime_assert(sizeof(x) == sizeof(unsigned long), \ -+ "Unsupported access size for READ_ONCE_NOCHECK()."); \ -+ (typeof(x))__read_once_word_nocheck(&(x)); \ -+}) -+ -+static __always_inline -+unsigned long read_word_at_a_time(const void *addr) -+{ -+ kasan_check_read(addr, 1); -+ return *(unsigned long *)addr; -+} -+ -+#endif /* __ASSEMBLY__ */ -+#endif /* __ASM_GENERIC_RWONCE_H */ --- -2.17.1 - diff --git a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0004-Add-a-quick-fix-to-resolve-USB-gadget-DMA-issue.patch b/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0004-Add-a-quick-fix-to-resolve-USB-gadget-DMA-issue.patch deleted file mode 100644 index 2d435c796..000000000 --- a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0004-Add-a-quick-fix-to-resolve-USB-gadget-DMA-issue.patch +++ /dev/null @@ -1,33 +0,0 @@ -From cdd7104850d34cfe22902c45d69dac6cb506b087 Mon Sep 17 00:00:00 2001 -From: Jae Hyun Yoo <jae.hyun.yoo@intel.com> -Date: Fri, 26 Feb 2021 11:00:54 -0800 -Subject: [PATCH] Add a quick fix to resolve USB gadget DMA issue. - -This is a quick fix to resolve USB gadget DMA issue and it should -be removed when a real fix is added. - -Tested: Keyboard and mouse in KVM feature worked. - -Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com> ---- - kernel/dma/mapping.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c -index 51bb8fa8eb89..7bcfedeb1e30 100644 ---- a/kernel/dma/mapping.c -+++ b/kernel/dma/mapping.c -@@ -146,8 +146,10 @@ dma_addr_t dma_map_page_attrs(struct device *dev, struct page *page, - - BUG_ON(!valid_dma_direction(dir)); - -+#if 0 /* Quick fix to resolve USB gadget issue */ - if (WARN_ON_ONCE(!dev->dma_mask)) - return DMA_MAPPING_ERROR; -+#endif - - if (dma_map_direct(dev, ops)) - addr = dma_direct_map_page(dev, page, offset, size, dir, attrs); --- -2.17.1 - diff --git a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0005-Die_CPU-filter-first-zero-from-GetTemp.patch b/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0005-Die_CPU-filter-first-zero-from-GetTemp.patch deleted file mode 100644 index 54dced64f..000000000 --- a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0005-Die_CPU-filter-first-zero-from-GetTemp.patch +++ /dev/null @@ -1,61 +0,0 @@ -From b0740cbafa468ece35d26a797e7cf80f04fb5102 Mon Sep 17 00:00:00 2001 -From: Zhikui Ren <zhikui.ren@intel.com> -Date: Mon, 11 Jan 2021 16:31:36 -0800 -Subject: [PATCH] Die_CPU: filter first zero from GetTemp - -Peci command GetTemp can return 0 during CPU reset. -It does not have a have completion code either. -Discard the first zero reading and return -ENODATA. -Consecutive zeros will be returned so that real hot -condition will still be detected and logged but possibly delayed -by the sensor polling period, which is normally 500ms-1s. - -Signed-off-by: Zhikui Ren <zhikui.ren@intel.com> ---- - drivers/hwmon/peci-cputemp.c | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/drivers/hwmon/peci-cputemp.c b/drivers/hwmon/peci-cputemp.c -index c5d92d1d2c25..49670bc80530 100644 ---- a/drivers/hwmon/peci-cputemp.c -+++ b/drivers/hwmon/peci-cputemp.c -@@ -15,6 +15,7 @@ - - struct temp_group { - struct peci_sensor_data die; -+ u32 die_raw_prev; - struct peci_sensor_data dts; - struct peci_sensor_data tcontrol; - struct peci_sensor_data tthrottle; -@@ -119,6 +120,7 @@ static int get_die_temp(struct peci_cputemp *priv) - { - struct peci_get_temp_msg msg; - int ret; -+ bool discard = false; - - if (!peci_sensor_need_update(&priv->temp.die)) - return 0; -@@ -129,6 +131,20 @@ static int get_die_temp(struct peci_cputemp *priv) - if (ret) - return ret; - -+ /* -+ * GET_TEMP command does not have cc and can return zero during -+ * cpu reset. Treat the first zero reading as data not available. -+ * Consecutive zeros will be returned so true hot condition -+ * is not be missed. -+ */ -+ if (msg.temp_raw == 0 && priv->temp.die_raw_prev != 0) { -+ dev_err(priv->dev, "discard first 0 reading from GetTemp\n"); -+ discard = true; -+ } -+ priv->temp.die_raw_prev = msg.temp_raw; -+ if (discard) -+ return -ENODATA; -+ - /* Note that the tjmax should be available before calling it */ - priv->temp.die.value = priv->temp.tjmax.value + - (msg.temp_raw * 1000 / 64); --- -2.17.1 - diff --git a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0006-DTS_CPU-filter-first-zero-from-RdPkgConfig-10.patch b/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0006-DTS_CPU-filter-first-zero-from-RdPkgConfig-10.patch deleted file mode 100644 index a498f9c19..000000000 --- a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0006-DTS_CPU-filter-first-zero-from-RdPkgConfig-10.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 4d4e68e0eed7ccf899bc1b3799a93ed8eb44270d Mon Sep 17 00:00:00 2001 -From: Zhikui Ren <zhikui.ren@intel.com> -Date: Tue, 2 Feb 2021 14:49:28 -0800 -Subject: [PATCH] DTS_CPU: filter first zero from RdPkgConfig 10 - -Peci command GetPkgConfig 10 can return 0 (hot) with cc 0x40 -after cpu reset. Once pcode run time image is loaded -and it returns 0x8000 as DTS margin data not ready -Discard the first zero reading and return -ENODATA. -Consecutive zeros will be returned so that real hot -condition will still be detected and logged but possibly delayed -by the sensor polling period, which is normally one second. - -Signed-off-by: Zhikui Ren <zhikui.ren@intel.com> ---- - drivers/hwmon/peci-cputemp.c | 20 ++++++++++++++++++++ - 1 file changed, 20 insertions(+) - -diff --git a/drivers/hwmon/peci-cputemp.c b/drivers/hwmon/peci-cputemp.c -index 49670bc80530..af1c09741120 100644 ---- a/drivers/hwmon/peci-cputemp.c -+++ b/drivers/hwmon/peci-cputemp.c -@@ -17,6 +17,7 @@ struct temp_group { - struct peci_sensor_data die; - u32 die_raw_prev; - struct peci_sensor_data dts; -+ u32 dts_raw_prev; - struct peci_sensor_data tcontrol; - struct peci_sensor_data tthrottle; - struct peci_sensor_data tjmax; -@@ -159,6 +160,7 @@ static int get_dts(struct peci_cputemp *priv) - s32 dts_margin; - u8 pkg_cfg[4]; - int ret; -+ bool discard = false; - - if (!peci_sensor_need_update(&priv->temp.dts)) - return 0; -@@ -172,6 +174,24 @@ static int get_dts(struct peci_cputemp *priv) - - dts_margin = le16_to_cpup((__le16 *)pkg_cfg); - -+ /* -+ * There is a small window (500us) for read dts_margin (RdPkgConfig 10) -+ * to return cc 0x40, and dts_margin of 0 after cpu reset, before -+ * runtime image is loaded to set it to 0x8000 (dts reading not ready). -+ * DTS sensor is polled by user application at a slower rate than this -+ * window. Treat the first zero reading as data not available. -+ * Consecutive zeros will be returned so true hot condition is not be -+ * missed. -+ */ -+ if (dts_margin == 0 && priv->temp.dts_raw_prev != 0) { -+ dev_err(priv->dev, -+ "discard first 0 reading from RdPkgConfig 10\n"); -+ discard = true; -+ } -+ priv->temp.dts_raw_prev = dts_margin; -+ if (discard) -+ return -ENODATA; -+ - /** - * Processors return a value of DTS reading in 10.6 format - * (10 bits signed decimal, 6 bits fractional). --- -2.17.1 - diff --git a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0007-peci-cputemp-filter-the-first-zero-from-RdPkgConfig-.patch b/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0007-peci-cputemp-filter-the-first-zero-from-RdPkgConfig-.patch deleted file mode 100644 index 1ee3be689..000000000 --- a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0007-peci-cputemp-filter-the-first-zero-from-RdPkgConfig-.patch +++ /dev/null @@ -1,70 +0,0 @@ -From d622c220351def5c8b3fa5540473a4d3ca685233 Mon Sep 17 00:00:00 2001 -From: Jae Hyun Yoo <jae.hyun.yoo@intel.com> -Date: Thu, 29 Jul 2021 11:07:31 -0700 -Subject: [PATCH] peci: cputemp: filter the first zero from RdPkgConfig 16 - -Peci command GetPkgConfig 16 can return 0 with cc 0x40 after a CPU -reset. Once pcode run time image is loaded and it returns 0x8000 -as a data not ready. This commit makes it discard the first zero -reading and return -ENODATA. Consecutive zeros will be returned -so that real invalid temperature target setting condition will -still be detected and logged but possibly delayed by the sensor -polling period which is one second (UPDATE_INTERVAL_DEFAULT). - -Signed-off-by: Zhikui Ren <zhikui.ren@intel.com> -Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com> ---- - drivers/hwmon/peci-cputemp.c | 23 +++++++++++++++++++++++ - 1 file changed, 23 insertions(+) - -diff --git a/drivers/hwmon/peci-cputemp.c b/drivers/hwmon/peci-cputemp.c -index af1c09741120..8d5d579ccb1a 100644 ---- a/drivers/hwmon/peci-cputemp.c -+++ b/drivers/hwmon/peci-cputemp.c -@@ -21,6 +21,7 @@ struct temp_group { - struct peci_sensor_data tcontrol; - struct peci_sensor_data tthrottle; - struct peci_sensor_data tjmax; -+ u32 temp_target_raw_prev; - struct peci_sensor_data module[MODTEMP_CHANNEL_NUMS]; - }; - -@@ -89,6 +90,8 @@ static int get_temp_targets(struct peci_cputemp *priv) - s32 tcontrol_margin; - u8 pkg_cfg[4]; - int ret; -+ bool discard = false; -+ u32 temp_target_raw; - - /* - * Just use only the tcontrol marker to determine if target values need -@@ -103,6 +106,26 @@ static int get_temp_targets(struct peci_cputemp *priv) - if (ret) - return ret; - -+ /* -+ * There is a small window (500us) for read temperature target -+ * (RdPkgConfig 16) to return cc 0x40, and temperature target of 0 after -+ * cpu reset, before runtime image is loaded to set it to 0x8000 -+ * Since update interval of the temperature target value is slower than -+ * this window, treat the first zero reading as data not available. -+ * Consecutive zeros will be returned so true invalid temperature target -+ * setting condition will not be missed. -+ */ -+ temp_target_raw = le32_to_cpup((__le32 *)pkg_cfg); -+ if (temp_target_raw == 0 && -+ priv->temp.temp_target_raw_prev != 0) { -+ dev_err(priv->dev, -+ "discard first 0 reading from RdPkgConfig 16\n"); -+ discard = true; -+ } -+ priv->temp.temp_target_raw_prev = temp_target_raw; -+ if (discard) -+ return -ENODATA; -+ - priv->temp.tjmax.value = pkg_cfg[2] * 1000; - - tcontrol_margin = pkg_cfg[1]; --- -2.17.1 - diff --git a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0008-vegman-kernel-add-RTC-driver-for-PCHC620.patch b/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0008-vegman-kernel-add-RTC-driver-for-PCHC620.patch deleted file mode 100644 index 1622a01e5..000000000 --- a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0008-vegman-kernel-add-RTC-driver-for-PCHC620.patch +++ /dev/null @@ -1,205 +0,0 @@ -From b80e1dea7595519edbabf3e12b6d31f0e128f901 Mon Sep 17 00:00:00 2001 -From: Ivan Mikhaylov <i.mikhaylov@yadro.com> -Date: Mon, 12 Jul 2021 10:46:22 +0300 -Subject: [PATCH] vegman: kernel: add RTC driver for PCHC620 - -Signed-off-by: Ivan Mikhaylov <i.mikhaylov@yadro.com> ---- - drivers/rtc/Kconfig | 10 +++ - drivers/rtc/Makefile | 1 + - drivers/rtc/rtc-pchc620.c | 150 ++++++++++++++++++++++++++++++++++++++ - 3 files changed, 161 insertions(+) - create mode 100644 drivers/rtc/rtc-pchc620.c - -diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig -index 1adf9f815652..79aba84dd19f 100644 ---- a/drivers/rtc/Kconfig -+++ b/drivers/rtc/Kconfig -@@ -564,6 +564,16 @@ config RTC_DRV_PALMAS - This driver can also be built as a module. If so, the module - will be called rtc-palma. - -+config RTC_DRV_PCHC620 -+ tristate "PCH C620 RTC driver" -+ help -+ If you say yes here you get support for the Intel C620 Series PCH -+ built-in read-only RTC. This driver is not for in-system use on x86, -+ but rather is for external access over I2C from a BMC. -+ -+ This driver can also be built as a module. If so, the module -+ will be called rtc-pchc620. -+ - config RTC_DRV_TPS6586X - tristate "TI TPS6586X RTC driver" - depends on MFD_TPS6586X -diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile -index 4ac8f19fb631..87ab76563a59 100644 ---- a/drivers/rtc/Makefile -+++ b/drivers/rtc/Makefile -@@ -118,6 +118,7 @@ obj-$(CONFIG_RTC_DRV_MXC_V2) += rtc-mxc_v2.o - obj-$(CONFIG_RTC_DRV_OMAP) += rtc-omap.o - obj-$(CONFIG_RTC_DRV_OPAL) += rtc-opal.o - obj-$(CONFIG_RTC_DRV_PALMAS) += rtc-palmas.o -+obj-$(CONFIG_RTC_DRV_PCHC620) += rtc-pchc620.o - obj-$(CONFIG_RTC_DRV_PCAP) += rtc-pcap.o - obj-$(CONFIG_RTC_DRV_PCF2123) += rtc-pcf2123.o - obj-$(CONFIG_RTC_DRV_PCF2127) += rtc-pcf2127.o -diff --git a/drivers/rtc/rtc-pchc620.c b/drivers/rtc/rtc-pchc620.c -new file mode 100644 -index 000000000000..a944b327ca67 ---- /dev/null -+++ b/drivers/rtc/rtc-pchc620.c -@@ -0,0 +1,150 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * RTC driver for PCHC620 -+ * Copyright (C) 2021 YADRO -+ */ -+ -+#include <linux/i2c.h> -+#include <linux/slab.h> -+#include <linux/rtc.h> -+#include <linux/bcd.h> -+#include <linux/module.h> -+#include <linux/regmap.h> -+ -+#define PCH_REG_FORCE_OFF 0x00 -+#define PCH_REG_SC 0x09 -+#define PCH_REG_MN 0x0a -+#define PCH_REG_HR 0x0b -+#define PCH_REG_DW 0x0c -+#define PCH_REG_DM 0x0d -+#define PCH_REG_MO 0x0e -+#define PCH_REG_YR 0x0f -+ -+#define NUM_TIME_REGS (PCH_REG_YR - PCH_REG_SC + 1) -+ -+struct pch { -+ struct rtc_device *rtc; -+ struct regmap *regmap; -+}; -+ -+static int pchc620_rtc_read_time(struct device *dev, struct rtc_time *tm) -+{ -+ struct i2c_client *client = to_i2c_client(dev); -+ struct pch *pch = i2c_get_clientdata(client); -+ unsigned char rtc_data[NUM_TIME_REGS] = {0}; -+ int rc; -+ -+ rc = regmap_bulk_read(pch->regmap, PCH_REG_SC, rtc_data, NUM_TIME_REGS); -+ if (rc < 0) { -+ dev_err(dev, "Fail to read time reg(%d)\n", rc); -+ return rc; -+ } -+ -+ tm->tm_sec = bcd2bin(rtc_data[0]); -+ tm->tm_min = bcd2bin(rtc_data[1]); -+ tm->tm_hour = bcd2bin(rtc_data[2]); -+ tm->tm_wday = rtc_data[3]; -+ tm->tm_mday = bcd2bin(rtc_data[4]); -+ tm->tm_mon = bcd2bin(rtc_data[5]) - 1; -+ tm->tm_year = bcd2bin(rtc_data[6]) + 100; -+ -+ return 0; -+} -+ -+static ssize_t pch_force_off(struct device *dev, -+ struct device_attribute *attr, -+ const char *buf, size_t count) -+{ -+ struct i2c_client *client = to_i2c_client(dev); -+ struct pch *pch = i2c_get_clientdata(client); -+ unsigned long val; -+ int rc; -+ -+ if (kstrtoul(buf, 10, &val)) -+ return -EINVAL; -+ -+ if (val) { -+ /* 0x02 host force off */ -+ rc = regmap_write(pch->regmap, PCH_REG_FORCE_OFF, 0x2); -+ if (rc < 0) { -+ dev_err(dev, "Fail to read time reg(%d)\n", rc); -+ return rc; -+ } -+ } -+ -+ return 0; -+} -+static DEVICE_ATTR(force_off, S_IWUSR | S_IWGRP, NULL, pch_force_off); -+ -+static const struct rtc_class_ops pchc620_rtc_ops = { -+ .read_time = pchc620_rtc_read_time, -+}; -+ -+static const struct regmap_config pchc620_rtc_regmap_config = { -+ .reg_bits = 8, -+ .val_bits = 8, -+ .use_single_read = true, -+}; -+ -+static int pchc620_rtc_probe(struct i2c_client *client, -+ const struct i2c_device_id *id) -+{ -+ struct pch *pch; -+ int rc; -+ -+ pch = devm_kzalloc(&client->dev, sizeof(*pch), GFP_KERNEL); -+ if (!pch) -+ return -ENOMEM; -+ -+ pch->regmap = devm_regmap_init_i2c(client, &pchc620_rtc_regmap_config); -+ if (IS_ERR(pch->regmap)) { -+ dev_err(&client->dev, "regmap_init failed\n"); -+ return PTR_ERR(pch->regmap); -+ } -+ -+ i2c_set_clientdata(client, pch); -+ -+ pch->rtc = devm_rtc_device_register(&client->dev, "pch-rtc", -+ &pchc620_rtc_ops, THIS_MODULE); -+ if (IS_ERR(pch->rtc)) -+ return PTR_ERR(pch->rtc); -+ -+ rc = sysfs_create_file(&client->dev.kobj, &dev_attr_force_off.attr); -+ if (rc) -+ return rc; -+ -+ return 0; -+} -+ -+static int pchc620_rtc_remove(struct i2c_client *client) -+{ -+ sysfs_remove_file(&client->dev.kobj, &dev_attr_force_off.attr); -+ return 0; -+} -+ -+static const struct i2c_device_id pchc620_rtc_id[] = { -+ { "pchc620-rtc", 0 }, -+ { } -+}; -+MODULE_DEVICE_TABLE(i2c, pchc620_rtc_id); -+ -+static const struct of_device_id pchc620_rtc_of_match[] = { -+ { .compatible = "rtc,pchc620", }, -+ { } -+}; -+MODULE_DEVICE_TABLE(of, pchc620_rtc_of_match); -+ -+static struct i2c_driver pchc620_rtc_driver = { -+ .driver = { -+ .name = "pchc620-rtc", -+ .of_match_table = pchc620_rtc_of_match, -+ }, -+ .probe = pchc620_rtc_probe, -+ .remove = pchc620_rtc_remove, -+ .id_table = pchc620_rtc_id, -+}; -+module_i2c_driver(pchc620_rtc_driver); -+ -+MODULE_DESCRIPTION("RTC PCHC620 driver"); -+MODULE_AUTHOR("Ivan Mikhaylov <i.mikhaylov@yadro.com>"); -+MODULE_LICENSE("GPL"); --- -2.31.1 - diff --git a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0009-ARM-dts-add-rtc-pch-node-into-aspeed-bmc-intel-ast2x.patch b/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0009-ARM-dts-add-rtc-pch-node-into-aspeed-bmc-intel-ast2x.patch deleted file mode 100644 index ef2196c44..000000000 --- a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed/0009-ARM-dts-add-rtc-pch-node-into-aspeed-bmc-intel-ast2x.patch +++ /dev/null @@ -1,49 +0,0 @@ -From aed87d1ffe2d22986e38b22b1c77beadcd3376c8 Mon Sep 17 00:00:00 2001 -From: Jae Hyun Yoo <jae.hyun.yoo@intel.com> -Date: Fri, 30 Jul 2021 14:17:24 -0700 -Subject: [PATCH] ARM: dts: add rtc-pch node into aspeed-bmc-intel-ast2xxx - -This commit adds rtc-pch node into aspeed-bmc-intel-ast2500 and -aspeed-bmc-intel-ast2600 to enable PCH RTC driver. - -Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com> ---- - arch/arm/boot/dts/aspeed-bmc-intel-ast2500.dts | 5 +++++ - arch/arm/boot/dts/aspeed-bmc-intel-ast2600.dts | 5 +++++ - 2 files changed, 10 insertions(+) - -diff --git a/arch/arm/boot/dts/aspeed-bmc-intel-ast2500.dts b/arch/arm/boot/dts/aspeed-bmc-intel-ast2500.dts -index 2efa67f08dcb..a460169e1b7b 100644 ---- a/arch/arm/boot/dts/aspeed-bmc-intel-ast2500.dts -+++ b/arch/arm/boot/dts/aspeed-bmc-intel-ast2500.dts -@@ -383,6 +383,11 @@ - aspeed,dma-buf-size = <4095>; - aspeed,hw-timeout-ms = <300>; - status = "okay"; -+ -+ rtc-pch@44 { -+ compatible = "rtc,pchc620"; -+ reg = <0x44>; -+ }; - }; - - &i2c4 { -diff --git a/arch/arm/boot/dts/aspeed-bmc-intel-ast2600.dts b/arch/arm/boot/dts/aspeed-bmc-intel-ast2600.dts -index 02a671ca0f19..9bc859f69307 100644 ---- a/arch/arm/boot/dts/aspeed-bmc-intel-ast2600.dts -+++ b/arch/arm/boot/dts/aspeed-bmc-intel-ast2600.dts -@@ -491,6 +491,11 @@ - multi-master; - aspeed,hw-timeout-ms = <300>; - status = "okay"; -+ -+ rtc-pch@44 { -+ compatible = "rtc,pchc620"; -+ reg = <0x44>; -+ }; - }; - - &i2c12 { --- -2.17.1 - diff --git a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed_%.bbappend b/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed_%.bbappend index b5165c73c..fb05aa1a0 100644 --- a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed_%.bbappend +++ b/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed_%.bbappend @@ -1,12 +1,12 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" -LINUX_VERSION = "5.10.60" +LINUX_VERSION = "5.15" -KBRANCH = "dev-5.10-intel" +KBRANCH = "dev-5.15-intel" KSRC = "git://github.com/Intel-BMC/linux;protocol=ssh;branch=${KBRANCH}" # Include this as a comment only for downstream auto-bump -# SRC_URI = "git://github.com/Intel-BMC/linux;protocol=ssh;branch=dev-5.10-intel" -SRCREV="c6e2963874ca7454eb901b4ac668f05b36cf03c8" +# SRC_URI = "git://github.com/Intel-BMC/linux;protocol=ssh;branch=dev-5.15-intel" +SRCREV="c7981259e359523e74044f926b69a804c61c86b1" do_compile:prepend(){ # device tree compiler flags @@ -15,15 +15,6 @@ do_compile:prepend(){ SRC_URI += " \ file://intel.cfg \ - file://0001-peci-Add-debug-printing-to-check-caller-PID.patch \ - file://0002-soc-aspeed-add-AST2600-A0-specific-fix-into-mbox-dri.patch \ - file://0003-Fix-libmctp-build-error.patch \ - file://0004-Add-a-quick-fix-to-resolve-USB-gadget-DMA-issue.patch \ - file://0005-Die_CPU-filter-first-zero-from-GetTemp.patch \ - file://0006-DTS_CPU-filter-first-zero-from-RdPkgConfig-10.patch \ - file://0007-peci-cputemp-filter-the-first-zero-from-RdPkgConfig-.patch \ - file://0008-vegman-kernel-add-RTC-driver-for-PCHC620.patch \ - file://0009-ARM-dts-add-rtc-pch-node-into-aspeed-bmc-intel-ast2x.patch \ " SRC_URI += "${@bb.utils.contains('IMAGE_FSTYPES', 'intel-pfr', 'file://1000-128MB-flashmap-for-PFR.patch', '', d)}" |