WSL2-Linux-Kernel/drivers/rtc
Mario Limonciello 258a7a7fb5 rtc: mc146818-lib: Fix the AltCentury for AMD platforms
[ Upstream commit 3ae8fd4157 ]

Setting the century forward has been failing on AMD platforms.
There was a previous attempt at fixing this for family 0x17 as part of
commit 7ad295d519 ("rtc: Fix the AltCentury value on AMD/Hygon
platform") but this was later reverted due to some problems reported
that appeared to stem from an FW bug on a family 0x17 desktop system.

The same comments mentioned in the previous commit continue to apply
to the newer platforms as well.

```
MC146818 driver use function mc146818_set_time() to set register
RTC_FREQ_SELECT(RTC_REG_A)'s bit4-bit6 field which means divider stage
reset value on Intel platform to 0x7.

While AMD/Hygon RTC_REG_A(0Ah)'s bit4 is defined as DV0 [Reference]:
DV0 = 0 selects Bank 0, DV0 = 1 selects Bank 1. Bit5-bit6 is defined
as reserved.

DV0 is set to 1, it will select Bank 1, which will disable AltCentury
register(0x32) access. As UEFI pass acpi_gbl_FADT.century 0x32
(AltCentury), the CMOS write will be failed on code:
CMOS_WRITE(century, acpi_gbl_FADT.century).

Correct RTC_REG_A bank select bit(DV0) to 0 on AMD/Hygon CPUs, it will
enable AltCentury(0x32) register writing and finally setup century as
expected.
```

However in closer examination the change previously submitted was also
modifying bits 5 & 6 which are declared reserved in the AMD documentation.
So instead modify just the DV0 bank selection bit.

Being cognizant that there was a failure reported before, split the code
change out to a static function that can also be used for exclusions if
any regressions such as Mikhail's pop up again.

Cc: Jinke Fan <fanjinke@hygon.cn>
Cc: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
Link: https://lore.kernel.org/all/CABXGCsMLob0DC25JS8wwAYydnDoHBSoMh2_YLPfqm3TTvDE-Zw@mail.gmail.com/
Link: https://www.amd.com/system/files/TechDocs/51192_Bolton_FCH_RRG.pdf
Signed-off-by: Raul E Rangel <rrangel@chromium.org>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Link: https://lore.kernel.org/r/20220111225750.1699-1-mario.limonciello@amd.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-05-25 09:57:26 +02:00
..
Kconfig rtc: rx8010: select REGMAP_I2C 2021-09-09 10:18:40 +02:00
Makefile rtc: move RTC_LIB_KUNIT_TEST to proper location 2021-08-10 23:22:20 +02:00
class.c rtc: fix use-after-free on device removal 2022-05-25 09:57:23 +02:00
dev.c compat_ioctl: move rtc handling into drivers/rtc/dev.c 2019-10-23 17:23:43 +02:00
interface.c rtc: check if __rtc_read_time was successful 2022-04-08 14:24:10 +02:00
lib.c rtc: Improve performance of rtc_time64_to_tm(). Add tests. 2021-08-10 00:09:21 +02:00
lib_test.c rtc: lib_test: add MODULE_LICENSE 2021-08-10 23:21:46 +02:00
nvmem.c rtc: nvmem: emit an error message when nvmem registration fails 2020-11-19 12:50:12 +01:00
proc.c rtc: fix snprintf() checking in is_rtc_hctosys() 2021-05-25 00:36:11 +02:00
rtc-88pm80x.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-88pm860x.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ab-b5ze-s3.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ab-eoz9.c rtc: ab-eoz9: make use of RTC_FEATURE_ALARM 2021-04-17 00:07:16 +02:00
rtc-ab8500.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-abx80x.c rtc: abx80x: Add utility function for writing configuration key 2021-02-13 23:03:26 +01:00
rtc-ac100.c rtc: ac100: use rtc_lock/rtc_unlock 2021-01-25 23:45:37 +01:00
rtc-armada38x.c rtc: armada38x: remove armada38x_rtc_ops_noirq 2021-01-16 23:19:26 +01:00
rtc-as3722.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
rtc-asm9260.c rtc: asm9260: use rtc_lock/rtc_unlock 2021-01-25 23:46:16 +01:00
rtc-aspeed.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-at91rm9200.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-at91sam9.c rtc: at91sam9: Remove unnecessary offset variable checks 2021-07-10 02:42:08 +02:00
rtc-au1xxx.c rtc: au1xxx: convert to SPDX identifier 2021-07-10 01:53:39 +02:00
rtc-bd70528.c rtc: bd70528: Drop BD70528 support 2021-06-20 22:24:52 +02:00
rtc-bq32k.c rtc: bq32k: quiet maybe-unused variable warning 2021-02-06 00:58:24 +01:00
rtc-bq4802.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
rtc-brcmstb-waketimer.c rtc: brcmstb-waketimer: quiet maybe-unused variable warning 2021-02-06 00:58:24 +01:00
rtc-cadence.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-cmos.c rtc: mc146818-lib: fix RTC presence check 2022-04-13 20:59:14 +02:00
rtc-core.h
rtc-cpcap.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-cros-ec.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-da9052.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-da9055.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-da9063.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-davinci.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-digicolor.c rtc: digicolor: quiet maybe-unused variable warning 2021-02-06 00:58:24 +01:00
rtc-dm355evm.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ds1216.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-ds1286.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-ds1302.c rtc: ds1302: Add SPI ID table 2021-11-18 19:16:58 +01:00
rtc-ds1305.c rtc: ds1305: use rtc_lock/rtc_unlock 2021-01-25 23:46:16 +01:00
rtc-ds1307.c rtc: ds1307: Fix wday settings for rx8130 2021-04-29 23:37:18 +02:00
rtc-ds1343.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ds1347.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ds1374.c rtc: ds1374: convert to SPDX identifier 2021-07-10 01:53:39 +02:00
rtc-ds1390.c rtc: ds1390: Add SPI ID table 2021-11-18 19:16:59 +01:00
rtc-ds1511.c rtc: ds1511: remove unused function 2021-04-17 11:21:04 +02:00
rtc-ds1553.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ds1672.c rtc: ds1672: quiet maybe-unused variable warning 2021-02-06 00:58:24 +01:00
rtc-ds1685.c rtc: ds1685: use rtc_lock/rtc_unlock 2021-01-25 23:46:17 +01:00
rtc-ds1742.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ds2404.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ds3232.c rtc: ds3232: quiet maybe-unused variable warning 2021-02-06 00:58:24 +01:00
rtc-efi.c rtc: efi: Remove the repeated module alias 2021-05-25 00:39:58 +02:00
rtc-em3027.c rtc: em3027: correct month value 2019-11-08 16:14:09 +01:00
rtc-ep93xx.c rtc: ep93xx: Fix NULL pointer dereference in ep93xx_rtc_read_time 2020-12-03 23:49:31 +01:00
rtc-fm3130.c RTC for 5.3 2019-07-17 10:03:50 -07:00
rtc-fsl-ftm-alarm.c rtc: fsl-ftm-alarm: add MODULE_TABLE() 2021-04-17 11:21:04 +02:00
rtc-ftrtc010.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-generic.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
rtc-goldfish.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-hid-sensor-time.c iio: hid-sensors: lighten exported symbols by moving to IIO_HID namespace 2021-06-16 14:53:13 +01:00
rtc-hym8563.c rtc: hym8563: use rtc_lock/rtc_unlock 2021-01-25 23:46:17 +01:00
rtc-imx-sc.c rtc: imx-sc: remove .read_alarm 2021-04-29 23:03:26 +02:00
rtc-imxdi.c rtc: imxdi: add wakeup support 2021-05-25 00:41:25 +02:00
rtc-isl1208.c rtc: isl1208: quiet maybe-unused variable warning 2021-02-06 00:58:24 +01:00
rtc-isl12022.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-isl12026.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-jz4740.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-lp8788.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-lpc24xx.c rtc: remove unnecessary error message after platform_get_irq 2020-04-15 09:56:17 +02:00
rtc-lpc32xx.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-ls1x.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-m41t80.c rtc: m41t80: correct kerneldoc function names 2021-06-20 22:19:46 +02:00
rtc-m41t93.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-m41t94.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-m48t35.c rtc: m48t35: remove SGI-IP27 kludge 2020-03-16 11:12:11 +01:00
rtc-m48t59.c rtc: m48t59: use platform_get_irq_optional 2021-03-11 09:48:09 +01:00
rtc-m48t86.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-max6900.c rtc: max6900: convert to SPDX identifier 2021-07-10 01:53:39 +02:00
rtc-max6902.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-max6916.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-max8907.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-max8925.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-max8997.c
rtc-max8998.c
rtc-max77686.c rtc: max77686: Do not enforce (incorrect) interrupt trigger type 2021-06-20 22:22:13 +02:00
rtc-mc13xxx.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-mc146818-lib.c rtc: mc146818-lib: Fix the AltCentury for AMD platforms 2022-05-25 09:57:26 +02:00
rtc-mcp795.c rtc: mcp795: Add SPI ID table 2021-11-18 19:16:59 +01:00
rtc-meson-vrtc.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-meson.c rtc: meson: quiet maybe-unused variable warning 2021-02-06 00:58:24 +01:00
rtc-moxart.c rtc: moxart: Convert to SPDX identifier 2019-12-23 11:23:49 +01:00
rtc-mpc5121.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-msm6242.c rtc: msm6242: Remove unneeded msm6242_set()/msm6242_clear() functions 2019-11-18 15:23:54 +01:00
rtc-mt2712.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-mt6397.c rtc: mt6397: refine RTC_TC_MTH 2021-06-01 16:44:09 +01:00
rtc-mt7622.c rtc: use devm_platform_ioremap_resource() to simplify code 2019-10-07 01:07:35 +02:00
rtc-mv.c rtc: mv: remove mv_rtc_alarm_ops 2021-01-16 23:19:26 +01:00
rtc-mxc.c rtc: mxc: Remove unneeded of_match_ptr() 2021-03-16 08:48:44 +01:00
rtc-mxc_v2.c rtc: mxc_v2: add missing MODULE_DEVICE_TABLE 2021-05-25 00:33:17 +02:00
rtc-ntxec.c rtc: New driver for RTC in Netronix embedded controller 2021-03-10 11:06:33 +00:00
rtc-omap.c rtc: omap: use rtc_write to access OMAP_RTC_OSC_REG 2021-04-29 23:37:18 +02:00
rtc-opal.c rtc: opal: constify opal_rtc_ops 2021-01-16 23:19:26 +01:00
rtc-palmas.c rtc: palmas: convert to SPDX identifier 2021-07-10 01:53:39 +02:00
rtc-pcap.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-pcf2123.c rtc: pcf2123: Add SPI ID table 2021-11-18 19:16:59 +01:00
rtc-pcf2127.c rtc: pcf2127: fix bug when reading alarm registers 2022-05-25 09:57:23 +02:00
rtc-pcf8523.c rtc: pcf8523: rename register and bit defines 2021-07-10 23:18:30 +02:00
rtc-pcf8563.c rtc: pcf8563: Fix the datasheet URL 2021-06-20 23:48:35 +02:00
rtc-pcf8583.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-pcf50633.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-pcf85063.c rtc: pcf85063: Update the PCF85063A datasheet revision 2021-07-10 01:40:49 +02:00
rtc-pcf85363.c rtc: pcf85363: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01:00
rtc-pic32.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-pl030.c amba: Make the remove callback return void 2021-02-02 14:25:50 +01:00
rtc-pl031.c rtc: pl031: fix rtc features null pointer dereference 2022-04-08 14:22:56 +02:00
rtc-pm8xxx.c rtc: pm8xxx: Add RTC support for PMIC PMK8350 2021-04-17 00:20:01 +02:00
rtc-ps3.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-pxa.c rtc: pxa: fix null pointer dereference 2022-01-27 11:05:34 +01:00
rtc-r7301.c rtc: r7301: Replace spin_lock_irqsave with spin_lock in hard IRQ 2021-02-06 00:50:47 +01:00
rtc-r9701.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-rc5t583.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
rtc-rc5t619.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-rk808.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-rp5c01.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-rs5c313.c rtc: rtc-rs5c313: Convert to module_platform_driver() 2020-08-21 00:13:44 +02:00
rtc-rs5c348.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-rs5c372.c rtc: rs5c372: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01:00
rtc-rtd119x.c rtc: rtd119x: Fix format of SPDX identifier 2021-07-10 01:53:39 +02:00
rtc-rv3028.c rtc: rv3028: correct weekday register usage 2021-03-15 23:03:27 +01:00
rtc-rv3029c2.c rtc: rv3029: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01:00
rtc-rv3032.c rtc: rv3032: fix error handling in rv3032_clkout_set_rate() 2021-11-18 19:17:01 +01:00
rtc-rv8803.c rtc: rv8803: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01:00
rtc-rx4581.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-rx6110.c rtc: rx6110: add ACPI bindings to I2C 2021-03-23 22:23:22 +01:00
rtc-rx8010.c rtc: rx8010: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01:00
rtc-rx8025.c rtc: rx8025: implement RX-8035 support 2021-08-17 23:48:33 +02:00
rtc-rx8581.c rtc: rx8581: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01:00
rtc-s3c.c rtc: s3c: quiet maybe-unused variable warning 2021-02-06 00:59:16 +01:00
rtc-s3c.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-s5m.c rtc: s5m: set range 2021-08-06 10:31:59 +02:00
rtc-s35390a.c rtc: s35390a: quiet maybe-unused variable warning 2021-02-06 00:58:25 +01:00
rtc-sa1100.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-sa1100.h
rtc-sc27xx.c rtc: sc27xx: Fix format of SPDX identifier 2021-07-10 01:53:39 +02:00
rtc-sd3078.c rtc: sd3078: quiet maybe-unused variable warning 2021-02-06 00:58:26 +01:00
rtc-sh.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-snvs.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-spear.c rtc: spear: convert to SPDX identifier 2021-07-10 01:53:57 +02:00
rtc-st-lpc.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-starfire.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-stk17ta8.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-stm32.c rtc: stm32: Fix unbalanced clk_disable_unprepare() on probe error path 2021-06-20 22:28:02 +02:00
rtc-stmp3xxx.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-sun4v.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-sun6i.c rtc: sun6i: Fix time overflow handling 2022-05-25 09:57:24 +02:00
rtc-sunxi.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-tegra.c rtc: tegra: Replace spin_lock_irqsave with spin_lock in hard IRQ 2021-02-06 00:50:47 +01:00
rtc-test.c rtc: test: remove debug message 2020-12-03 23:43:23 +01:00
rtc-tps6586x.c rtc: tps6586x: convert to SPDX identifier 2021-07-10 01:53:40 +02:00
rtc-tps65910.c rtc: tps65910: Correct driver module alias 2021-08-17 23:36:22 +02:00
rtc-tps80031.c rtc: tps80031: convert to SPDX identifier 2021-07-10 01:53:39 +02:00
rtc-twl.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rtc-v3020.c rtc: v3020: remove redundant initialization of variable retval 2021-06-20 22:29:50 +02:00
rtc-vr41xx.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-vt8500.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-wilco-ec.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-wm831x.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-wm8350.c rtc: wm8350: Handle error for wm8350_register_irq 2022-04-13 20:58:59 +02:00
rtc-x1205.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtc-xgene.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
rtc-zynqmp.c rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
sysfs.c rtc: sysfs: Correct kerneldoc function name hctosys_show() 2021-06-20 22:18:05 +02:00