Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
c704f4a
codec: phytium: Use different clocks for playback and recording
Chengyulai May 7, 2026
fa16ef6
codec:phytium: Add Kconfig option dependency
Chengyulai May 7, 2026
f4648e6
codec-v2: phytium: Add controller status code
Chengyulai May 7, 2026
fde1f34
codec-v2: phytium: initialize share memory and channels
Chengyulai May 7, 2026
1e907b5
codec: phytium: Fix probe bug without judgment of return value
Chengyulai May 7, 2026
a906338
i2s: phytium: Add audio control node
Chengyulai May 8, 2026
da34069
i2s-v2: phytium: Restricted adaptation platform
Chengyulai May 8, 2026
196a6da
i2s-v2: phytium: Defer I2S probe procedure
Chengyulai May 8, 2026
5809be0
arm64: phytium: Add support of reading cpu type for Phytium Socs
zhangfuxiang123 May 7, 2026
c584546
arm64: phytium: Update the method to obtain CPU type for Phytium SoCs
zhangfuxiang123 May 7, 2026
b688dce
arm64: phytium: Modify the definition for PE220x CPU name
mamingrui123 May 12, 2026
24f6773
hwmon: zhaoxin-cputemp: Update for KX-8000
leoliu-oc May 12, 2026
5b73948
ACPI: APEI: GHES: Add ghes_edac support for __ZX__ and _BYO_ systems
Jan 28, 2026
2e6f1e4
pinctrl/zhaoxin: kh50000: add multi‑socket support
leoliu-oc May 12, 2026
3decc7d
CI: arm64: disable debuginfo to speed up build test
opsiff May 13, 2026
ebe68fc
efi/cper: Print correctable AER information
yghannam Aug 23, 2024
56c01ef
devfreq: Add phytium noc devfreq driver
mamingrui123 May 12, 2026
2c83091
devfreq: Add phytium dmu devfreq driver
mamingrui123 May 12, 2026
9b555f1
devfreq: Phytium: Bugfix dmu/noc driver memory leak issue
mamingrui123 May 12, 2026
b3b6f8d
devfreq: Phytium: Obtain the base address from the ACPI table
mamingrui123 May 12, 2026
8f8e1f3
devfreq: Phytium: Update some new functions for DMU driver
mamingrui123 May 12, 2026
75fe17b
devfreq: Phytium: Modify the default strategy for DMU freq driver
mamingrui123 May 12, 2026
ebfa100
devfreq: Phytium: Modify some issues related to the dmu driver
mamingrui123 May 12, 2026
5a42dc2
devfreq: Phytium: Delete the unnecessary release of resources
mamingrui123 May 12, 2026
c56898d
devfreq: Phytium: Add power mangement interface for noc devfreq
mamingrui123 May 12, 2026
5f451df
devfreq: Phytium: Modify the sampling logic of DMU driver
mamingrui123 May 12, 2026
9684cdf
devfreq: Phytium: Fix memory leak in ACPI evaluate helper of DMU
mamingrui123 May 12, 2026
5b19e0a
devfreq: Phytium: Fix memory leak in ACPI evaluate helper of NOC
mamingrui123 May 12, 2026
9747ebd
devfreq: Phytium:Add DMU DEVFREQ Support for PS260xxx SoCs
mamingrui123 May 12, 2026
5207682
devfreq: Phytium:Add NOC DEVFREQ Support for PS260xxx SoCs
mamingrui123 May 12, 2026
2bc5289
devfreq: Phytium: Adjust data handing logic in DMU devfreq probe path
mamingrui123 May 12, 2026
6a32d12
devfreq: Phytium: Tune scaling with ramp-up and hysteresis
mamingrui123 May 12, 2026
6bc7865
deepin: config: arm64: enable phytium noc/dmu devfreq
opsiff May 13, 2026
f8c9c3c
ALSA: HDA: Add Centaur HDMI Controller and Codec support
leoliu-oc May 14, 2026
8cd3029
x86/microcode: Simplify Zhaoxin microcode patch saving
leoliu-oc May 14, 2026
e26c6bc
ALSA: hda: Add support of Zhaoxin SB HDAC
leoliu-oc May 14, 2026
a780578
x86/microcode: Serialize cpu startup during early updates
leoliu-oc May 14, 2026
30ea88d
security/lockdown: prevent buffer overflow in lockdown_read()
orbisai0security May 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/build-kernel-arm64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,16 @@ jobs:
run: |
# .config
make deepin_arm64_desktop_defconfig
scripts/config --enable CONFIG_DEBUG_INFO_NONE
scripts/config --disable CONFIG_DEBUG_INFO_DWARF5
make olddefconfig
make -j$(nproc)

- name: 'Clang build kernel'
run: |
# .config
make LLVM=-18 deepin_arm64_desktop_defconfig
scripts/config --enable CONFIG_DEBUG_INFO_NONE
scripts/config --disable CONFIG_DEBUG_INFO_DWARF5
make LLVM=-18 olddefconfig
make LLVM=-18 -j$(nproc)
1 change: 1 addition & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -17551,6 +17551,7 @@ F: drivers/usb/phytium/*
F: drivers/usb/phytium/phytium_usb_v2*
F: drivers/usb/typec/role-switch-phytium.c
F: arch/arm64/boot/dts/phytium/*
F: arch/arm64/include/asm/phytium_cputype.h
F: drivers/gpio/gpio-phytium*

QAT DRIVER
Expand Down
2 changes: 2 additions & 0 deletions arch/arm64/configs/deepin_arm64_desktop_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -4089,6 +4089,8 @@ CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
CONFIG_DEVFREQ_GOV_PERFORMANCE=m
CONFIG_DEVFREQ_GOV_POWERSAVE=m
CONFIG_DEVFREQ_GOV_USERSPACE=m
CONFIG_ARM_PHYTIUM_NOC_DEVFREQ=m
CONFIG_ARM_PHYTIUM_DMU_DEVFREQ=m
CONFIG_PM_DEVFREQ_EVENT=y
CONFIG_EXTCON_GPIO=m
CONFIG_EXTCON_MAX14577=m
Expand Down
4 changes: 2 additions & 2 deletions arch/arm64/include/asm/cputype.h
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@

#define MICROSOFT_CPU_PART_AZURE_COBALT_100 0xD49 /* Based on r0p0 of ARM Neoverse N2 */

#define PHYTIUM_CPU_PART_FTC303 0x303
#define PHYTIUM_CPU_PART_FTC310 0x303
#define PHYTIUM_CPU_PART_FTC660 0x660
#define PHYTIUM_CPU_PART_FTC661 0x661
#define PHYTIUM_CPU_PART_FTC662 0x662
Expand Down Expand Up @@ -240,7 +240,7 @@
#define MIDR_APPLE_M2_AVALANCHE_MAX MIDR_CPU_MODEL(ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_AVALANCHE_MAX)
#define MIDR_AMPERE1 MIDR_CPU_MODEL(ARM_CPU_IMP_AMPERE, AMPERE_CPU_PART_AMPERE1)
#define MIDR_AMPERE1A MIDR_CPU_MODEL(ARM_CPU_IMP_AMPERE, AMPERE_CPU_PART_AMPERE1A)
#define MIDR_PHYTIUM_FTC303 MIDR_CPU_MODEL(ARM_CPU_IMP_PHYTIUM, PHYTIUM_CPU_PART_FTC303)
#define MIDR_PHYTIUM_FTC310 MIDR_CPU_MODEL(ARM_CPU_IMP_PHYTIUM, PHYTIUM_CPU_PART_FTC310)
#define MIDR_PHYTIUM_FTC660 MIDR_CPU_MODEL(ARM_CPU_IMP_PHYTIUM, PHYTIUM_CPU_PART_FTC660)
#define MIDR_PHYTIUM_FTC661 MIDR_CPU_MODEL(ARM_CPU_IMP_PHYTIUM, PHYTIUM_CPU_PART_FTC661)
#define MIDR_PHYTIUM_PS17064 MIDR_CPU_MODEL(ARM_CPU_IMP_PHYTIUM, PHYTIUM_CPU_PART_FTC662)
Expand Down
241 changes: 241 additions & 0 deletions arch/arm64/include/asm/phytium_cputype.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,241 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (C) 2025, Phytium Technology Co., Ltd.
*/
#ifndef __ASM_PHYTIUM_CPUTYPE_H
#define __ASM_PHYTIUM_CPUTYPE_H

#include <linux/arm-smccc.h>
#include <asm/cputype.h>

#define SOC_ID_PE1702 0x1
#define SOC_ID_PS17064 0x2
#define SOC_ID_PD1904 0x3
#define SOC_ID_PS20064 0x4

#define SOC_ID_PD2008 0x5
#define SOC_ID_PS21064 0x6
#define SOC_ID_PE220X 0x7
#define SOC_ID_PS23064 0x8
#define SOC_ID_PD2308 0x9
#define SOC_ID_PS2480 0xa
#define SOC_ID_PD2408 0xb

#define SYS_REG_VAL_PS24080 0x6
#define SYS_REG_VAL_PS23064 0x8

#define SMCCC_SUCCESS 0
#define SMCCC_FAILURE (-1)
#define FUNC_ID_GET_CPU_VERSION 0xc2000002

enum phyt_soc_type {
PE1702 = 1,
PS17064,
PD1904,
PS20064,
PD2008,
PS21064,
PE220X,
PS23064,
PD2308,
PS24080,
PD2408,
PS15016,
UNKNOWN_SOC
};

extern enum phyt_soc_type phyt_soc_type_t;

static enum phyt_soc_type do_smccc_res(struct arm_smccc_res res)
{
unsigned long smc_cpu_ver = res.a1;

smc_cpu_ver = (smc_cpu_ver >> 8);
switch (smc_cpu_ver) {
case SOC_ID_PE1702:
return PE1702;
case SOC_ID_PS17064:
return PS17064;
case SOC_ID_PD1904:
return PD1904;
case SOC_ID_PS20064:
return PS20064;
case SOC_ID_PD2008:
return PD2008;
case SOC_ID_PS21064:
return PS21064;
case SOC_ID_PE220X:
return PE220X;
case SOC_ID_PS23064:
return PS23064;
case SOC_ID_PD2308:
return PD2308;
case SOC_ID_PS2480:
return PS24080;
case SOC_ID_PD2408:
return PD2408;
default:
return UNKNOWN_SOC;
}
}

static enum phyt_soc_type do_read_sysreg(void)
{
u32 aidr_reg_val = read_sysreg(aidr_el1);

switch (aidr_reg_val) {
case SYS_REG_VAL_PS24080:
return PS24080;
case SYS_REG_VAL_PS23064:
return PS23064;
default:
return UNKNOWN_SOC;
}
}

static enum phyt_soc_type do_read_mpidr(void)
{
u32 part_id = read_cpuid_part_number();

switch (part_id) {
case PHYTIUM_CPU_PART_FTC310:
return PE220X;
case PHYTIUM_CPU_PART_FTC660:
return PS15016;
case PHYTIUM_CPU_PART_FTC661:
return PE1702;
case PHYTIUM_CPU_PART_FTC662:
return PS17064;
case PHYTIUM_CPU_PART_FTC663:
return PD1904;
case PHYTIUM_CPU_PART_FTC862:
return PD2408;
default:
return UNKNOWN_SOC;
}
}

static inline bool is_phytium_soc(void)
{
if (read_cpuid_implementor() == ARM_CPU_IMP_PHYTIUM)
return true;
return false;
}

static inline enum phyt_soc_type phyt_read_soc_type(void)
{
enum phyt_soc_type ctype;
struct arm_smccc_res res;

if (!is_phytium_soc())
return UNKNOWN_SOC;

arm_smccc_smc(FUNC_ID_GET_CPU_VERSION, 0, 0, 0, 0, 0, 0, 0, &res);
switch (res.a0) {
case SMCCC_SUCCESS:
ctype = do_smccc_res(res);
if (ctype != UNKNOWN_SOC)
break;
fallthrough;
case SMCCC_FAILURE:
ctype = do_read_sysreg();
if (ctype != UNKNOWN_SOC)
break;
fallthrough;
default:
ctype = do_read_mpidr();
break;
}
return ctype;
}

static inline void phyt_soc_type_init(void)
{
enum phyt_soc_type ctype = phyt_read_soc_type();

switch (ctype) {
case PE1702:
phyt_soc_type_t = PE1702;
break;
case PS17064:
phyt_soc_type_t = PS17064;
break;
case PD1904:
phyt_soc_type_t = PD1904;
break;
case PS20064:
phyt_soc_type_t = PS20064;
break;
case PD2008:
phyt_soc_type_t = PD2008;
break;
case PS21064:
phyt_soc_type_t = PS21064;
break;
case PE220X:
phyt_soc_type_t = PE220X;
break;
case PS23064:
phyt_soc_type_t = PS23064;
break;
case PD2308:
phyt_soc_type_t = PD2308;
break;
case PS24080:
phyt_soc_type_t = PS24080;
break;
case PD2408:
phyt_soc_type_t = PD2408;
break;
case PS15016:
phyt_soc_type_t = PS15016;
break;
default:
phyt_soc_type_t = UNKNOWN_SOC;
break;
}
}

static inline bool is_pd2408(void)
{

if (phyt_soc_type_t == PD2408)
return true;
return false;
}

static inline bool is_ps23064(void)
{

if (phyt_soc_type_t == PS23064)
return true;
return false;
}

static inline bool is_ps24080(void)
{

if (phyt_soc_type_t == PS24080)
return true;
return false;
}

static inline bool is_pd2308(void)
{

if (phyt_soc_type_t == PD2308)
return true;
return false;
}

static inline bool is_pe220x(void)
{

if (phyt_soc_type_t == PE220X)
return true;
return false;
}

#endif


2 changes: 1 addition & 1 deletion arch/arm64/kernel/cpufeature.c
Original file line number Diff line number Diff line change
Expand Up @@ -1722,7 +1722,7 @@ static bool unmap_kernel_at_el0(const struct arm64_cpu_capabilities *entry,
MIDR_ALL_VERSIONS(MIDR_CORTEX_A73),
MIDR_ALL_VERSIONS(MIDR_HISI_TSV110),
MIDR_ALL_VERSIONS(MIDR_NVIDIA_CARMEL),
MIDR_ALL_VERSIONS(MIDR_PHYTIUM_FTC303),
MIDR_ALL_VERSIONS(MIDR_PHYTIUM_FTC310),
MIDR_ALL_VERSIONS(MIDR_PHYTIUM_FTC660),
MIDR_ALL_VERSIONS(MIDR_PHYTIUM_FTC661),
MIDR_ALL_VERSIONS(MIDR_PHYTIUM_PS17064),
Expand Down
4 changes: 2 additions & 2 deletions arch/arm64/kernel/proton-pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ static enum mitigation_state spectre_v2_get_cpu_hw_mitigation_state(void)
MIDR_ALL_VERSIONS(MIDR_CORTEX_A55),
MIDR_ALL_VERSIONS(MIDR_BRAHMA_B53),
MIDR_ALL_VERSIONS(MIDR_HISI_TSV110),
MIDR_ALL_VERSIONS(MIDR_PHYTIUM_FTC303),
MIDR_ALL_VERSIONS(MIDR_PHYTIUM_FTC310),
MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_2XX_SILVER),
MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_3XX_SILVER),
MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_4XX_SILVER),
Expand Down Expand Up @@ -474,7 +474,7 @@ static enum mitigation_state spectre_v4_get_cpu_hw_mitigation_state(void)
MIDR_ALL_VERSIONS(MIDR_CORTEX_A53),
MIDR_ALL_VERSIONS(MIDR_CORTEX_A55),
MIDR_ALL_VERSIONS(MIDR_BRAHMA_B53),
MIDR_ALL_VERSIONS(MIDR_PHYTIUM_FTC303),
MIDR_ALL_VERSIONS(MIDR_PHYTIUM_FTC310),
MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_3XX_SILVER),
MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_4XX_SILVER),
{ /* sentinel */ },
Expand Down
9 changes: 9 additions & 0 deletions arch/arm64/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,12 @@
#include <asm/haoc/iee-si.h>
#endif

#ifdef CONFIG_ARCH_PHYTIUM
#include <asm/phytium_cputype.h>
enum phyt_soc_type phyt_soc_type_t;
EXPORT_SYMBOL(phyt_soc_type_t);
#endif

static int num_standard_resources;
static struct resource *standard_resources;

Expand Down Expand Up @@ -349,6 +355,9 @@ void __init __no_sanitize_address setup_arch(char **cmdline_p)
FW_BUG "Booted with MMU enabled!");
}

#ifdef CONFIG_ARCH_PHYTIUM
phyt_soc_type_init();
#endif
arm64_memblock_init();

paging_init();
Expand Down
18 changes: 7 additions & 11 deletions arch/x86/kernel/cpu/microcode/zhaoxin.c
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,6 @@ static int zhaoxin_microcode_sanity_check(void *mc, bool print_err, int hdr_type
static void save_microcode_patch(struct microcode_zhaoxin *patch)
{
unsigned int size = patch->hdr.total_size;
struct microcode_zhaoxin *mc = NULL;
struct page *pg = NULL;
void *dst = NULL;

Expand All @@ -186,18 +185,14 @@ static void save_microcode_patch(struct microcode_zhaoxin *patch)
* the memory allocation to this range.
*/
pg = alloc_pages(GFP_DMA32 | GFP_KERNEL, get_order(size));

if (pg) {
dst = page_address(pg);
memcpy(dst, patch, size);
mc = dst;
if (mc) {
zhaoxin_ucode_patch = mc;
return;
}
if (!pg) {
pr_err("Unable to allocate microcode memory size: %u\n", size);
return;
}

pr_err("Unable to allocate microcode memory size: %u\n", size);
dst = page_address(pg);
memcpy(dst, patch, size);
zhaoxin_ucode_patch = dst;
}

static inline u32
Expand Down Expand Up @@ -495,6 +490,7 @@ void __init load_ucode_zhaoxin_bsp(struct early_load_data *ed)

if (uci.mc && apply_microcode_early(&uci) == UCODE_UPDATED) {
zhaoxin_ucode_patch = UCODE_BSP_LOADED;
x86_cpuinit.parallel_bringup = false;
ed->new_rev = uci.cpu_sig.rev;
} else if (uci.mc) {
pr_debug("%s: BSP CPU %d early update failed due to application failure\n",
Expand Down
2 changes: 2 additions & 0 deletions drivers/acpi/apei/ghes.c
Original file line number Diff line number Diff line change
Expand Up @@ -1611,6 +1611,8 @@ void __init acpi_ghes_init(void)
*/
static struct acpi_platform_list plat_list[] = {
{"HPE ", "Server ", 0, ACPI_SIG_FADT, all_versions},
{"__ZX__", "EDK2 ", 3, ACPI_SIG_FADT, greater_than_or_equal},
{"_BYO_ ", "BYOSOFT ", 3, ACPI_SIG_FADT, greater_than_or_equal},
{ } /* End */
};

Expand Down
Loading
Loading