Merge tag 'peci-next-6.11-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/iwi/linux into char-misc-next
Iwona writes: Update peci-next for v6.11-rc1 * peci, hwmon - Update peci subsystem to use new Intel CPU model defines. * aspeed - Clear clock_divider before setting it. * tag 'peci-next-6.11-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/iwi/linux: peci: aspeed: Clear clock_divider value before setting it peci, hwmon: Switch to new Intel CPU model defines
This commit is contained in:
@@ -360,10 +360,10 @@ static int init_core_mask(struct peci_cputemp *priv)
|
||||
int ret;
|
||||
|
||||
/* Get the RESOLVED_CORES register value */
|
||||
switch (peci_dev->info.model) {
|
||||
case INTEL_FAM6_ICELAKE_X:
|
||||
case INTEL_FAM6_ICELAKE_D:
|
||||
case INTEL_FAM6_SAPPHIRERAPIDS_X:
|
||||
switch (peci_dev->info.x86_vfm) {
|
||||
case INTEL_ICELAKE_X:
|
||||
case INTEL_ICELAKE_D:
|
||||
case INTEL_SAPPHIRERAPIDS_X:
|
||||
ret = peci_ep_pci_local_read(peci_dev, 0, reg->bus, reg->dev,
|
||||
reg->func, reg->offset + 4, &data);
|
||||
if (ret)
|
||||
|
||||
@@ -351,6 +351,7 @@ static int clk_aspeed_peci_set_rate(struct clk_hw *hw, unsigned long rate,
|
||||
clk_aspeed_peci_find_div_values(this_rate, &msg_timing, &clk_div_exp);
|
||||
|
||||
val = readl(aspeed_peci->base + ASPEED_PECI_CTRL);
|
||||
val &= ~ASPEED_PECI_CTRL_CLK_DIV_MASK;
|
||||
val |= FIELD_PREP(ASPEED_PECI_CTRL_CLK_DIV_MASK, clk_div_exp);
|
||||
writel(val, aspeed_peci->base + ASPEED_PECI_CTRL);
|
||||
|
||||
|
||||
+2
-3
@@ -163,9 +163,8 @@ EXPORT_SYMBOL_NS_GPL(devm_peci_controller_add, PECI);
|
||||
static const struct peci_device_id *
|
||||
peci_bus_match_device_id(const struct peci_device_id *id, struct peci_device *device)
|
||||
{
|
||||
while (id->family != 0) {
|
||||
if (id->family == device->info.family &&
|
||||
id->model == device->info.model)
|
||||
while (id->x86_vfm != 0) {
|
||||
if (id->x86_vfm == device->info.x86_vfm)
|
||||
return id;
|
||||
id++;
|
||||
}
|
||||
|
||||
+7
-14
@@ -294,38 +294,31 @@ peci_cpu_probe(struct peci_device *device, const struct peci_device_id *id)
|
||||
|
||||
static const struct peci_device_id peci_cpu_device_ids[] = {
|
||||
{ /* Haswell Xeon */
|
||||
.family = 6,
|
||||
.model = INTEL_FAM6_HASWELL_X,
|
||||
.x86_vfm = INTEL_HASWELL_X,
|
||||
.data = "hsx",
|
||||
},
|
||||
{ /* Broadwell Xeon */
|
||||
.family = 6,
|
||||
.model = INTEL_FAM6_BROADWELL_X,
|
||||
.x86_vfm = INTEL_BROADWELL_X,
|
||||
.data = "bdx",
|
||||
},
|
||||
{ /* Broadwell Xeon D */
|
||||
.family = 6,
|
||||
.model = INTEL_FAM6_BROADWELL_D,
|
||||
.x86_vfm = INTEL_BROADWELL_D,
|
||||
.data = "bdxd",
|
||||
},
|
||||
{ /* Skylake Xeon */
|
||||
.family = 6,
|
||||
.model = INTEL_FAM6_SKYLAKE_X,
|
||||
.x86_vfm = INTEL_SKYLAKE_X,
|
||||
.data = "skx",
|
||||
},
|
||||
{ /* Icelake Xeon */
|
||||
.family = 6,
|
||||
.model = INTEL_FAM6_ICELAKE_X,
|
||||
.x86_vfm = INTEL_ICELAKE_X,
|
||||
.data = "icx",
|
||||
},
|
||||
{ /* Icelake Xeon D */
|
||||
.family = 6,
|
||||
.model = INTEL_FAM6_ICELAKE_D,
|
||||
.x86_vfm = INTEL_ICELAKE_D,
|
||||
.data = "icxd",
|
||||
},
|
||||
{ /* Sapphire Rapids Xeon */
|
||||
.family = 6,
|
||||
.model = INTEL_FAM6_SAPPHIRERAPIDS_X,
|
||||
.x86_vfm = INTEL_SAPPHIRERAPIDS_X,
|
||||
.data = "spr",
|
||||
},
|
||||
{ }
|
||||
|
||||
@@ -100,8 +100,7 @@ static int peci_device_info_init(struct peci_device *device)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
device->info.family = peci_x86_cpu_family(cpu_id);
|
||||
device->info.model = peci_x86_cpu_model(cpu_id);
|
||||
device->info.x86_vfm = IFM(peci_x86_cpu_family(cpu_id), peci_x86_cpu_model(cpu_id));
|
||||
|
||||
ret = peci_get_revision(device, &revision);
|
||||
if (ret)
|
||||
|
||||
@@ -66,13 +66,11 @@ struct peci_request *peci_xfer_ep_mmio64_readl(struct peci_device *device, u8 ba
|
||||
/**
|
||||
* struct peci_device_id - PECI device data to match
|
||||
* @data: pointer to driver private data specific to device
|
||||
* @family: device family
|
||||
* @model: device model
|
||||
* @x86_vfm: device vendor-family-model
|
||||
*/
|
||||
struct peci_device_id {
|
||||
const void *data;
|
||||
u16 family;
|
||||
u8 model;
|
||||
u32 x86_vfm;
|
||||
};
|
||||
|
||||
extern const struct device_type peci_device_type;
|
||||
|
||||
@@ -6,6 +6,30 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* Copied from x86 <asm/processor.h> */
|
||||
#define X86_VENDOR_INTEL 0
|
||||
|
||||
/* Copied from x86 <asm/cpu_device_id.h> */
|
||||
#define VFM_MODEL_BIT 0
|
||||
#define VFM_FAMILY_BIT 8
|
||||
#define VFM_VENDOR_BIT 16
|
||||
#define VFM_RSVD_BIT 24
|
||||
|
||||
#define VFM_MODEL_MASK GENMASK(VFM_FAMILY_BIT - 1, VFM_MODEL_BIT)
|
||||
#define VFM_FAMILY_MASK GENMASK(VFM_VENDOR_BIT - 1, VFM_FAMILY_BIT)
|
||||
#define VFM_VENDOR_MASK GENMASK(VFM_RSVD_BIT - 1, VFM_VENDOR_BIT)
|
||||
|
||||
#define VFM_MODEL(vfm) (((vfm) & VFM_MODEL_MASK) >> VFM_MODEL_BIT)
|
||||
#define VFM_FAMILY(vfm) (((vfm) & VFM_FAMILY_MASK) >> VFM_FAMILY_BIT)
|
||||
#define VFM_VENDOR(vfm) (((vfm) & VFM_VENDOR_MASK) >> VFM_VENDOR_BIT)
|
||||
|
||||
#define VFM_MAKE(_vendor, _family, _model) ( \
|
||||
((_model) << VFM_MODEL_BIT) | \
|
||||
((_family) << VFM_FAMILY_BIT) | \
|
||||
((_vendor) << VFM_VENDOR_BIT) \
|
||||
)
|
||||
/* End of copied code */
|
||||
|
||||
#include "../../arch/x86/include/asm/intel-family.h"
|
||||
|
||||
#define PECI_PCS_PKG_ID 0 /* Package Identifier Read */
|
||||
|
||||
@@ -59,8 +59,7 @@ static inline struct peci_controller *to_peci_controller(void *d)
|
||||
* struct peci_device - PECI device
|
||||
* @dev: device object to register PECI device to the device model
|
||||
* @info: PECI device characteristics
|
||||
* @info.family: device family
|
||||
* @info.model: device model
|
||||
* @info.x86_vfm: device vendor-family-model
|
||||
* @info.peci_revision: PECI revision supported by the PECI device
|
||||
* @info.socket_id: the socket ID represented by the PECI device
|
||||
* @addr: address used on the PECI bus connected to the parent controller
|
||||
@@ -73,8 +72,7 @@ static inline struct peci_controller *to_peci_controller(void *d)
|
||||
struct peci_device {
|
||||
struct device dev;
|
||||
struct {
|
||||
u16 family;
|
||||
u8 model;
|
||||
u32 x86_vfm;
|
||||
u8 peci_revision;
|
||||
u8 socket_id;
|
||||
} info;
|
||||
|
||||
Reference in New Issue
Block a user