mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
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. -----BEGIN PGP SIGNATURE----- iQJOBAABCAA4FiEEVeIYQcCloMPRsCC93RgStozwYHYFAmZwPu0aHGl3b25hLndp bmlhcnNrYUBpbnRlbC5jb20ACgkQ3RgStozwYHYq7hAAyTVwrNIQ2R/8ZGN9tAqQ yvgINc2lV2Fva7pfMtHKzTXiPbVg/QkpyzEXVKgFnBsy5oUeCRyw2tIjnbRQJBdu UC9c8mC/CUe2zuGHeTMX5+yLTsc7E3yDyX8eBQcJwmwOxtOFu2APry8Xk5xaKlzj ix7GZ9YFGyjDZp+W6c2VBDbqRzNqYEChR4/nvf3r1zHRAspeQO/99fYNgbxJTlOf ZjCwW05JPLLweelbKiuU7cUrXdrf/YWc0hSsGB4cX/fgdLU5fKQJ3sEFeYOegx4Y m+79+d3oTRwebbYED9Usup7Gzabtis7J0UoEWqYiINURDbiFs8FhU2kvsjZXYFkP OGIt+4FQIA4rjeEh4dyFWYEQQDH9FnviUg0trC736LltONbkt/YjP9uwn8h5sYY4 pU5PejkBaPHqQH1C58hnABf11FPSzqhNkww9mkAuCaJOVgamEKQoWs76n4HpTfy5 KaFVWJ2f+cbMSCrZ4N6lO2/QQVO505WD71GOGJAGtN8guJ0bSQZYtuUeT5CtSOAN 6dO1VNavUqkEmHWuzfmpBIXxDUFWa94IzVviRZVVPEiZk9adj4Qkm3hLZ4FpMlrf 5PSL1YhD5GOAGb2lXExJBgX2qHgfb43JKKBrggURAgYb0vc5x9HC1iZIBoUit8Pl ixgZPYtHpgo+yPNXUWnA8GA= =JfB+ -----END PGP SIGNATURE----- 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:
commit
c4681b2b38
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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++;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user