Compare commits

..

1 Commits

Author SHA1 Message Date
Dan Kluser
504c2112a8 CI: build and release kernel on push 2026-05-14 13:22:55 +02:00
3 changed files with 26 additions and 173 deletions

View File

@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 7.0.8 Kernel Configuration
# Linux/x86 7.0.5 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0"
CONFIG_CC_IS_GCC=y

View File

@@ -30,6 +30,8 @@ sudo mkinitcpio -k "$(make kernelrelease)" -g /boot/initrd.img-$(make kernelrele
If you are updating Linux on your external USB SSD or if you are directly booting into M.2 SSD, i.e. if you use `-m2` in `cmdline.txt`, then you have to update the files on the FAT32 partition of your USB drive:
```bash
sudo mv /boot/efi/bzImage /boot/efi/bzImage.old
sudo mv /boot/efi/initrd.img /boot/efi/initrd.img.old
sudo cp /boot/vmlinuz /boot/efi/bzImage
sudo cp /boot/initrd.img /boot/efi/initrd.img
```
@@ -42,6 +44,7 @@ If you are updating Linux on your M.2 SSD, but you do not directly boot into it,
- amdgpu smu driver to show correct gpu frequency and temperature
- ethernet driver for (mediatek?) 0x104d:0x9104
- xhci driver adjustment for 0x104d:0x9108 to enable bluetooth
- wlan driver marvell 1b4b:2b56 (https://github.com/nxp-imx/mwifiex)
- hdmi converter improvments: hdr, rgb range, 120hz
## Bugs

View File

@@ -18,7 +18,7 @@ index fe106da41ae5..6fd78cbfe1d6 100644
bool "ScaleMP vSMP"
select HYPERVISOR_GUEST
diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
index 4efbbf9d117b..403d5ff74ef0 100644
index 92bb6b2f778e..0a02f339b98a 100644
--- a/arch/x86/include/asm/msr-index.h
+++ b/arch/x86/include/asm/msr-index.h
@@ -26,6 +26,7 @@
@@ -1143,7 +1143,7 @@ index 000000000000..7acb030a4976
+obj-y += spcie.o tpcie.o hdmi.o mp1.o
diff --git a/drivers/ps5/hdmi.c b/drivers/ps5/hdmi.c
new file mode 100644
index 000000000000..78ffc4f80a6d
index 000000000000..a24459de573a
--- /dev/null
+++ b/drivers/ps5/hdmi.c
@@ -0,0 +1,1237 @@
@@ -2026,8 +2026,8 @@ index 000000000000..78ffc4f80a6d
+
+static void setHdmiVideoConfigFlava3(const struct drm_display_mode *mode)
+{
+ // configParamFlava3Pre();
+ // configLinkTrainingFlava3();
+ configParamFlava3Pre();
+ configLinkTrainingFlava3();
+ setHdmiBasicVideoConfigFlava3(mode);
+ initHdmiPhyForFlava3_1st();
+ initHdmiPhyForFlava3_2nd();
@@ -2386,10 +2386,10 @@ index 000000000000..78ffc4f80a6d
+EXPORT_SYMBOL(hdmi_notification_handler);
diff --git a/drivers/ps5/mp1.c b/drivers/ps5/mp1.c
new file mode 100644
index 000000000000..4af890c842a7
index 000000000000..73bb7ca5d1d9
--- /dev/null
+++ b/drivers/ps5/mp1.c
@@ -0,0 +1,488 @@
@@ -0,0 +1,366 @@
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+#include <linux/module.h>
@@ -2421,12 +2421,9 @@ index 000000000000..4af890c842a7
+#define MP1_C2PMSG_58 0x3b109e8
+#define MP1_C2PMSG_59 0x3b109ec
+#define MP1_C2PMSG_66 0x3b10a08
+#define MP1_C2PMSG_72 0x3b10a20
+#define MP1_C2PMSG_81 0x3b10a44
+#define MP1_C2PMSG_82 0x3b10a48
+#define MP1_C2PMSG_90 0x3b10a68
+#define MP1_C2PMSG_96 0x3b10a80
+#define MP1_C2PMSG_98 0x3b10a88
+
+#define PPSMC_MSG_ConfigureS3PwrOffRegisterAddressHigh 0x16
+#define PPSMC_MSG_ConfigureS3PwrOffRegisterAddressLow 0x17
@@ -2521,78 +2518,6 @@ index 000000000000..4af890c842a7
+ }
+};
+
+static const struct bapm_param_set bapm_param_set_2 = {
+ .dpm_wac = {
+ 0x0000c3adb08d0000, 0x00a800008d000000, 0xa000008e000000a6,
+ 0x00000000c900a500, 0xc8d000d3b8daea00, 0x0000d000a3d200dc,
+ 0x00bfc80000c6f100, 0x00fe00000000ad00, 0x0000abb300000000,
+ 0x00008600000000cf, 0x00ae0095ff000000, 0x000000000000ac00,
+ 0x00b00000008500ad, 0x0098849600b18000, 0xa2a38bac00b00000,
+ 0x97007479000092ab, 0x0095a30000008f00, 0x000000b5000000a0,
+ 0x0000c200a80000bd, 0x0000bcc1c4b2a300, 0xa700000000000000
+ },
+ .l3_cacw = {
+ [71] = 0x3ff80000,
+ },
+ .gfx_cacw = {
+ [2] = 0xefa,
+ [6] = 0x7bf,
+ [12] = 0x14d10000,
+ [14] = 0x287b0000,
+ [20] = 0x2f2,
+ [22] = 0x1085ffff, 0xcd80e51, 0x4b86145a,
+ [27] = 0x15a7,
+ [29] = 0x13c2, 0x2d02,
+ [34] = 0x78ad0000, 0x2ea0,
+ [54] = 0x257d, 0x8c8,
+ [58] = 0x799e,
+ [63] = 0x152,
+ },
+ .gfx_cacw_len = 64,
+ .bapm_param = {
+ {1, 0xbc22f028}, {1, 0x3e113314}, {1, 0xbe8d0750}, {1, 0x3e16ae78},
+ {1, 0xbe4d4746}, {1, 0x3f34470b}, {1, 0x3704564c}, {1, 0x3f516a34},
+ {1, 0x3f3fdd1c}, {1, 0x3f74f5de}, {1, 0x3dec9763}, {1, 0xbc2c0ab6},
+ {1, 0x3d1582c2}, {1, 0x367468e6}, {1, 0x3f059935}, {1, 0x3ef4cd95},
+ {1, 0x3f74f5de}, {1, 0x3d524dae}, {1, 0xbc2c0ab6}, {1, 0x3d1582c2},
+ {1, 0x357db71b}, {1, 0x40b1089a}, {1, 0x41751b15}, {1, 0x4287d1bc},
+ {1, 0x3fb89949}, {1, 0x411eefdf}, {1, 0xbc816b59}, {1, 0x3d41513a},
+ [49] =
+ {1, 0x41751b15}, {1, 0x4287d1bc}, {1, 0x3fb89949}, {1, 0x412d973c},
+ {1, 0xbc816b59}, {1, 0x3d41513a}, {1, 0x3e0654c8}, {1, 0xbe27b465},
+ {1, 0x3f2d3daa}, {1, 0x41751b15}, {1, 0x4287d1bc}, {1, 0x3fb89949},
+ {1, 0x4061d4cc}, {1, 0xbc816b59}, {1, 0x3d41513a}, {1, 0x3e97c980},
+ {1, 0xbf1d9856}, {1, 0x3f828e45}, {1, 0x41751b15}, {1, 0x4287d1bc},
+ {1, 0x3fb89949}, {1, 0x409c4b3c}, {1, 0xbc816b59}, {1, 0x3d41513a},
+ {1, 0x3e7a6107}, {1, 0xbeedd766}, {1, 0x3f67aa70}, {1, 0x41751b15},
+ {1, 0x4287d1bc}, {1, 0x3fb89949}, {1, 0x40ccf558}, {1, 0xbc816b59},
+ {1, 0x3d41513a}, {1, 0x3e600a8a}, {1, 0xbecbe79c}, {1, 0x3f5b627c},
+ {1, 0x41751b15}, {1, 0x4287d1bc}, {1, 0x3fb89949}, {1, 0x41050555},
+ {1, 0xbc816b59}, {1, 0x3d41513a}, {1, 0x3e379205}, {1, 0xbe94367e},
+ {1, 0x3f46233f}, {1, 0x3f96c5af}, {1, 0x3eb99add}, {1, 0x3f85bb54},
+ {1, 0x3e6a30f6}, {1, 0xbc2c0ab6}, {1, 0x3d1582c2}, {1, 0xbbda394d},
+ {1, 0x3dff4eb1}, {1, 0xbe8b186c}, {1, 0x3f8fbf3f}, {1, 0x3ee87500},
+ {1, 0x3f7c5aff}, {1, 0x3e92470e}, {1, 0xbc2c0ab6}, {1, 0x3d1582c2},
+ {1, 0x396640ab}, {1, 0x3dad4b04}, {1, 0xbe6283c5}, {1, 0x3f8051ba},
+ {1, 0x3f13f766}, {1, 0x3f87a42b}, {1, 0x3e52acf5}, {1, 0xbc2c0ab6},
+ {1, 0x3d1582c2}, {1, 0xbbd8e837}, {1, 0x3e005ec6}, {1, 0xbe8c6197},
+ {1, 0x3f61d86e}, {1, 0x3f276f79}, {1, 0x3f7b0bf0}, {1, 0x3e25ca59},
+ {1, 0xbc2c0ab6}, {1, 0x3d1582c2}, {1, 0xbbc01a0e}, {1, 0x3dfb13b3},
+ {1, 0xbe84dd83}, {1, 0x3fa32142}, {1, 0x3ea341fd}, {1, 0x3f85d724},
+ {1, 0x3e8c3c1d}, {1, 0xbc2c0ab6}, {1, 0x3d1582c2}, {1, 0xbaa01624},
+ {1, 0x3dbebfaf}, {1, 0xbe6f57f4}, {1, 0x3f43c147}, {1, 0x3e70fae5},
+ {1, 0x3f85bb54}, {1, 0x3dd02b85}, {1, 0xbc2c0ab6}, {1, 0x3d1582c2},
+ {1, 0x3f364cb6}, {1, 0x3e936695}, {1, 0x3f7c5aff}, {1, 0x3e020645},
+ {1, 0xbc2c0ab6}, {1, 0x3d1582c2}, {1, 0x3f226119}, {1, 0x3ebb3dcd},
+ {1, 0x3f87a42b}, {1, 0x3dbb4468}, {1, 0xbc2c0ab6}, {1, 0x3d1582c2},
+ {1, 0x3f1302b3}, {1, 0x3ed9fa9b}, {1, 0x3f7b0bf0}, {1, 0x3d935e88},
+ {1, 0xbc2c0ab6}, {1, 0x3d1582c2}, {1, 0x3f4cc495}, {1, 0x3e4cedab},
+ {1, 0x3f85d724}, {1, 0x3df94e6d}, {1, 0xbc2c0ab6}, {1, 0x3d1582c2},
+ {1, 0x3c437be5}, {1, 0x3f3de47f}, {1, 0x3f40c129}, {1, 0x3f3cc9e7},
+ {1, 0x3f41350f}, {1, 0x3f3dcec6}, {1, 0x3f3e1c51}
+ }
+};
+
+static u32 pcirc_smn_read(u32 reg)
+{
+ u32 val = 0;
@@ -2659,48 +2584,6 @@ index 000000000000..4af890c842a7
+ return 0;
+}
+
+static int mp1fw_test_sendmsg(struct mp1_msg *msg, uint8_t msgid)
+{
+ if (mp1fw_waitmsg(MP1_C2PMSG_96, msgid)) {
+ printk("[MP1ERROR] : %s: Error : busy msgid=0x%X, arg=0x%08X\n", __func__, msgid, msg->arg);
+ return -EBUSY;
+ }
+ pcirc_smn_write(MP1_C2PMSG_96, 0);
+ pcirc_smn_write(MP1_C2PMSG_98, msg->arg);
+ pcirc_smn_write(MP1_C2PMSG_72, msgid);
+ if (mp1fw_waitmsg(MP1_C2PMSG_96, msgid)) {
+ printk("[MP1ERROR] : %s: retry over msgid=0x%X, arg=0x%08X\n", __func__, msgid, msg->arg);
+ return -EBUSY;
+ }
+ u32 resp = pcirc_smn_read(MP1_C2PMSG_96);
+ u32 resp_val = pcirc_smn_read(MP1_C2PMSG_98);
+ if ((msgid != 0x75 && resp != 1) || (msgid == 0x75 && resp != 1 && resp != 0xf8)) {
+ printk("[MP1ERROR] : %s: invalid response msgid=0x%X, resp=0x%08X\n", __func__, msgid, resp);
+ return -EINVAL;
+ }
+
+ msg->resp = resp;
+ msg->resp_val = resp_val;
+
+ return 0;
+}
+
+static int mp1_set_wc_cpu(int mode)
+{
+ struct mp1_msg msg = {};
+ msg.arg = mode;
+ return mp1fw_test_sendmsg(&msg, 0x9b);
+}
+
+static int mp1_get_wc_cpu(int *mode)
+{
+ struct mp1_msg msg = {};
+ int ret;
+ ret = mp1fw_test_sendmsg(&msg, 0x9c);
+ *mode = msg.resp_val;
+ return ret;
+}
+
+static int mp1_configure_s3_pwr_off_reg_addr_high(u64 addr)
+{
+ struct mp1_msg msg = {};
@@ -2786,7 +2669,7 @@ index 000000000000..4af890c842a7
+
+ for (i = 0; i < 21; i++) {
+ wrmsrq(MSR_DPM_WAC_ACC_INDEX, i);
+ wrmsrq(MSR_DPM_WAC_DATA, bapm_param_set_2.dpm_wac[i]);
+ wrmsrq(MSR_DPM_WAC_DATA, bapm_param_set_1.dpm_wac[i]);
+ }
+
+ wrmsrq(MSR_DPM_CFG, msr_dpm_cfg);
@@ -2799,16 +2682,16 @@ index 000000000000..4af890c842a7
+ on_each_cpu(update_bapm_weights_smp, NULL, 1);
+
+ for (i = 0; i < 80; i++) {
+ mp1_bapm_set_l3_cacw(i, bapm_param_set_2.l3_cacw[i]);
+ mp1_bapm_set_l3_cacw(i, bapm_param_set_1.l3_cacw[i]);
+ }
+
+ for (i = 0; i < bapm_param_set_2.gfx_cacw_len; i++) {
+ mp1_bapm_set_gfx_cacw(i, bapm_param_set_2.gfx_cacw[i]);
+ for (i = 0; i < bapm_param_set_1.gfx_cacw_len; i++) {
+ mp1_bapm_set_gfx_cacw(i, bapm_param_set_1.gfx_cacw[i]);
+ }
+
+ for (i = 0; i < 176; i++) {
+ if (bapm_param_set_2.bapm_param[i][0])
+ mp1_bapm_write_param(i, bapm_param_set_2.bapm_param[i][1]);
+ if (bapm_param_set_1.bapm_param[i][0])
+ mp1_bapm_write_param(i, bapm_param_set_1.bapm_param[i][1]);
+ }
+}
+
@@ -2848,15 +2731,10 @@ index 000000000000..4af890c842a7
+static int __init mp1_init(void)
+{
+ int ret;
+ int mode = 0;
+
+ mp1_universal_mode_exit();
+
+ pr_info("Set BAPM params\n");
+ mp1_get_wc_cpu(&mode);
+ if (mode != 1) {
+ mp1_set_wc_cpu(1);
+ }
+ mp1_set_bapm_param_set_all();
+
+ ret = misc_register(&mp1_misc_device);
@@ -2880,10 +2758,10 @@ index 000000000000..4af890c842a7
+MODULE_LICENSE("GPL");
diff --git a/drivers/ps5/spcie.c b/drivers/ps5/spcie.c
new file mode 100644
index 000000000000..d13dc14c0a14
index 000000000000..ecec0d6623b1
--- /dev/null
+++ b/drivers/ps5/spcie.c
@@ -0,0 +1,898 @@
@@ -0,0 +1,879 @@
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+#include <linux/module.h>
@@ -3500,16 +3378,6 @@ index 000000000000..d13dc14c0a14
+ return 0;
+}
+
+static int spcie_icc_shutdown(struct spcie_dev *sdev)
+{
+ icc_fan_change_servo_pattern(0);
+
+ /* Disable IRQs */
+ writel(0, icc_dev->icc_doorbell_base + ICC_REG_INTR_MASK);
+
+ return 0;
+}
+
+u32 spcie_get_chip_id(void)
+{
+ return spcie_chip_revision_id & 0xff0000;
@@ -3755,14 +3623,6 @@ index 000000000000..d13dc14c0a14
+ }
+}
+
+static void spcie_shutdown(struct pci_dev *pdev)
+{
+ struct spcie_dev *sdev = pci_get_drvdata(pdev);
+ if (sdev) {
+ spcie_icc_shutdown(sdev);
+ }
+}
+
+static const struct pci_device_id spcie_ids[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_SONY, PCI_DEVICE_ID_SPCIE) },
+ { 0, }
@@ -3774,7 +3634,6 @@ index 000000000000..d13dc14c0a14
+ .id_table = spcie_ids,
+ .probe = spcie_probe,
+ .remove = spcie_remove,
+ .shutdown = spcie_shutdown,
+};
+
+module_pci_driver(spcie_driver);
@@ -3784,10 +3643,10 @@ index 000000000000..d13dc14c0a14
+MODULE_LICENSE("GPL");
diff --git a/drivers/ps5/tpcie.c b/drivers/ps5/tpcie.c
new file mode 100644
index 000000000000..23de43ea4b00
index 000000000000..cfe53c9861c1
--- /dev/null
+++ b/drivers/ps5/tpcie.c
@@ -0,0 +1,303 @@
@@ -0,0 +1,294 @@
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+#include <linux/console.h>
@@ -4002,6 +3861,12 @@ index 000000000000..23de43ea4b00
+
+static void tpcie_uart_remove(struct tpcie_dev *tdev)
+{
+ if (!uart_dev)
+ return;
+
+ /* Disable IRQs */
+ writel(0, uart_dev->uart_base + 0x8);
+
+ unregister_console(&tpcie_uart_console);
+
+ if (uart_dev->tty_drv) {
@@ -4012,12 +3877,6 @@ index 000000000000..23de43ea4b00
+ tty_port_destroy(&uart_dev->tty_port);
+}
+
+static void tpcie_uart_shutdown(struct tpcie_dev *tdev)
+{
+ /* Disable IRQs */
+ writel(0, uart_dev->uart_base + 0x8);
+}
+
+static int tpcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+{
+ struct tpcie_dev *tdev;
@@ -4064,14 +3923,6 @@ index 000000000000..23de43ea4b00
+ }
+}
+
+static void tpcie_shutdown(struct pci_dev *pdev)
+{
+ struct tpcie_dev *tdev = pci_get_drvdata(pdev);
+ if (tdev) {
+ tpcie_uart_shutdown(tdev);
+ }
+}
+
+static const struct pci_device_id tpcie_ids[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_SONY, PCI_DEVICE_ID_TPCIE) },
+ { 0, }
@@ -4083,7 +3934,6 @@ index 000000000000..23de43ea4b00
+ .id_table = tpcie_ids,
+ .probe = tpcie_probe,
+ .remove = tpcie_remove,
+ .shutdown = tpcie_shutdown,
+};
+
+module_pci_driver(tpcie_driver);