mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
Merge tag 'driver-core-6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
Pull driver core updates from Greg KH: "Here is the small set of driver core and kernfs changes for 6.10-rc1. Nothing major here at all, just a small set of changes for some driver core apis, and minor fixups. Included in here are: - sysfs_bin_attr_simple_read() helper added and used - device_show_string() helper added and used All usages of these were acked by the various maintainers. Also in here are: - kernfs minor cleanup - removed unused functions - typo fix in documentation - pay attention to sysfs_create_link() failures in module.c finally All of these have been in linux-next for a very long time with no reported problems" * tag 'driver-core-6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: device property: Fix a typo in the description of device_get_child_node_count() kernfs: mount: Remove unnecessary ‘NULL’ values from knparent scsi: Use device_show_string() helper for sysfs attributes platform/x86: Use device_show_string() helper for sysfs attributes perf: Use device_show_string() helper for sysfs attributes IB/qib: Use device_show_string() helper for sysfs attributes hwmon: Use device_show_string() helper for sysfs attributes driver core: Add device_show_string() helper for sysfs attributes treewide: Use sysfs_bin_attr_simple_read() helper sysfs: Add sysfs_bin_attr_simple_read() helper module: don't ignore sysfs_create_link() failures driver core: Remove unused platform_notify, platform_notify_remove
This commit is contained in:
@@ -425,16 +425,6 @@ static char *memdup_to_str(char *maybe_str, int max_len, gfp_t gfp)
|
||||
return kasprintf(gfp, "%.*s", max_len, maybe_str);
|
||||
}
|
||||
|
||||
static ssize_t device_show_string(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct dev_ext_attribute *d;
|
||||
|
||||
d = container_of(attr, struct dev_ext_attribute, attr);
|
||||
|
||||
return sprintf(buf, "%s\n", (char *)d->var);
|
||||
}
|
||||
|
||||
static ssize_t cpumask_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
|
||||
@@ -792,14 +792,6 @@ static int __init opal_sysfs_init(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t export_attr_read(struct file *fp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr, char *buf,
|
||||
loff_t off, size_t count)
|
||||
{
|
||||
return memory_read_from_buffer(buf, count, &off, bin_attr->private,
|
||||
bin_attr->size);
|
||||
}
|
||||
|
||||
static int opal_add_one_export(struct kobject *parent, const char *export_name,
|
||||
struct device_node *np, const char *prop_name)
|
||||
{
|
||||
@@ -826,7 +818,7 @@ static int opal_add_one_export(struct kobject *parent, const char *export_name,
|
||||
sysfs_bin_attr_init(attr);
|
||||
attr->attr.name = name;
|
||||
attr->attr.mode = 0400;
|
||||
attr->read = export_attr_read;
|
||||
attr->read = sysfs_bin_attr_simple_read;
|
||||
attr->private = __va(vals[0]);
|
||||
attr->size = vals[1];
|
||||
|
||||
|
||||
@@ -5645,18 +5645,11 @@ lbr_is_visible(struct kobject *kobj, struct attribute *attr, int i)
|
||||
|
||||
static char pmu_name_str[30];
|
||||
|
||||
static ssize_t pmu_name_show(struct device *cdev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
return snprintf(buf, PAGE_SIZE, "%s\n", pmu_name_str);
|
||||
}
|
||||
|
||||
static DEVICE_ATTR_RO(pmu_name);
|
||||
static DEVICE_STRING_ATTR_RO(pmu_name, 0444, pmu_name_str);
|
||||
|
||||
static struct attribute *intel_pmu_caps_attrs[] = {
|
||||
&dev_attr_pmu_name.attr,
|
||||
NULL
|
||||
&dev_attr_pmu_name.attr.attr,
|
||||
NULL
|
||||
};
|
||||
|
||||
static DEVICE_ATTR(allow_tsx_force_abort, 0644,
|
||||
|
||||
@@ -29,14 +29,7 @@ BGRT_SHOW(type, image_type);
|
||||
BGRT_SHOW(xoffset, image_offset_x);
|
||||
BGRT_SHOW(yoffset, image_offset_y);
|
||||
|
||||
static ssize_t image_read(struct file *file, struct kobject *kobj,
|
||||
struct bin_attribute *attr, char *buf, loff_t off, size_t count)
|
||||
{
|
||||
memcpy(buf, attr->private + off, count);
|
||||
return count;
|
||||
}
|
||||
|
||||
static BIN_ATTR_RO(image, 0); /* size gets filled in later */
|
||||
static BIN_ATTR_SIMPLE_RO(image);
|
||||
|
||||
static struct attribute *bgrt_attributes[] = {
|
||||
&bgrt_attr_version.attr,
|
||||
|
||||
@@ -192,11 +192,14 @@ extern struct kset *devices_kset;
|
||||
void devices_kset_move_last(struct device *dev);
|
||||
|
||||
#if defined(CONFIG_MODULES) && defined(CONFIG_SYSFS)
|
||||
void module_add_driver(struct module *mod, struct device_driver *drv);
|
||||
int module_add_driver(struct module *mod, struct device_driver *drv);
|
||||
void module_remove_driver(struct device_driver *drv);
|
||||
#else
|
||||
static inline void module_add_driver(struct module *mod,
|
||||
struct device_driver *drv) { }
|
||||
static inline int module_add_driver(struct module *mod,
|
||||
struct device_driver *drv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline void module_remove_driver(struct device_driver *drv) { }
|
||||
#endif
|
||||
|
||||
|
||||
@@ -674,7 +674,12 @@ int bus_add_driver(struct device_driver *drv)
|
||||
if (error)
|
||||
goto out_del_list;
|
||||
}
|
||||
module_add_driver(drv->owner, drv);
|
||||
error = module_add_driver(drv->owner, drv);
|
||||
if (error) {
|
||||
printk(KERN_ERR "%s: failed to create module links for %s\n",
|
||||
__func__, drv->name);
|
||||
goto out_detach;
|
||||
}
|
||||
|
||||
error = driver_create_file(drv, &driver_attr_uevent);
|
||||
if (error) {
|
||||
@@ -699,6 +704,8 @@ int bus_add_driver(struct device_driver *drv)
|
||||
|
||||
return 0;
|
||||
|
||||
out_detach:
|
||||
driver_detach(drv);
|
||||
out_del_list:
|
||||
klist_del(&priv->knode_bus);
|
||||
out_unregister:
|
||||
|
||||
@@ -2346,8 +2346,6 @@ static void fw_devlink_link_device(struct device *dev)
|
||||
|
||||
/* Device links support end. */
|
||||
|
||||
int (*platform_notify)(struct device *dev) = NULL;
|
||||
int (*platform_notify_remove)(struct device *dev) = NULL;
|
||||
static struct kobject *dev_kobj;
|
||||
|
||||
/* /sys/dev/char */
|
||||
@@ -2395,16 +2393,10 @@ static void device_platform_notify(struct device *dev)
|
||||
acpi_device_notify(dev);
|
||||
|
||||
software_node_notify(dev);
|
||||
|
||||
if (platform_notify)
|
||||
platform_notify(dev);
|
||||
}
|
||||
|
||||
static void device_platform_notify_remove(struct device *dev)
|
||||
{
|
||||
if (platform_notify_remove)
|
||||
platform_notify_remove(dev);
|
||||
|
||||
software_node_notify_remove(dev);
|
||||
|
||||
acpi_device_notify_remove(dev);
|
||||
@@ -2546,6 +2538,15 @@ ssize_t device_show_bool(struct device *dev, struct device_attribute *attr,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(device_show_bool);
|
||||
|
||||
ssize_t device_show_string(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct dev_ext_attribute *ea = to_ext_attr(attr);
|
||||
|
||||
return sysfs_emit(buf, "%s\n", (char *)ea->var);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(device_show_string);
|
||||
|
||||
/**
|
||||
* device_release - free device structure.
|
||||
* @kobj: device's kobject.
|
||||
|
||||
@@ -30,14 +30,14 @@ static void module_create_drivers_dir(struct module_kobject *mk)
|
||||
mutex_unlock(&drivers_dir_mutex);
|
||||
}
|
||||
|
||||
void module_add_driver(struct module *mod, struct device_driver *drv)
|
||||
int module_add_driver(struct module *mod, struct device_driver *drv)
|
||||
{
|
||||
char *driver_name;
|
||||
int no_warn;
|
||||
struct module_kobject *mk = NULL;
|
||||
int ret;
|
||||
|
||||
if (!drv)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
if (mod)
|
||||
mk = &mod->mkobj;
|
||||
@@ -56,17 +56,37 @@ void module_add_driver(struct module *mod, struct device_driver *drv)
|
||||
}
|
||||
|
||||
if (!mk)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
ret = sysfs_create_link(&drv->p->kobj, &mk->kobj, "module");
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Don't check return codes; these calls are idempotent */
|
||||
no_warn = sysfs_create_link(&drv->p->kobj, &mk->kobj, "module");
|
||||
driver_name = make_driver_name(drv);
|
||||
if (driver_name) {
|
||||
module_create_drivers_dir(mk);
|
||||
no_warn = sysfs_create_link(mk->drivers_dir, &drv->p->kobj,
|
||||
driver_name);
|
||||
kfree(driver_name);
|
||||
if (!driver_name) {
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
module_create_drivers_dir(mk);
|
||||
if (!mk->drivers_dir) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = sysfs_create_link(mk->drivers_dir, &drv->p->kobj, driver_name);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
kfree(driver_name);
|
||||
|
||||
return 0;
|
||||
out:
|
||||
sysfs_remove_link(&drv->p->kobj, "module");
|
||||
sysfs_remove_link(mk->drivers_dir, driver_name);
|
||||
kfree(driver_name);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void module_remove_driver(struct device_driver *drv)
|
||||
|
||||
@@ -905,7 +905,7 @@ EXPORT_SYMBOL_GPL(fwnode_device_is_available);
|
||||
|
||||
/**
|
||||
* device_get_child_node_count - return the number of child nodes for device
|
||||
* @dev: Device to cound the child nodes for
|
||||
* @dev: Device to count the child nodes for
|
||||
*
|
||||
* Return: the number of child nodes for a given device.
|
||||
*/
|
||||
|
||||
@@ -761,16 +761,8 @@ static void __init dmi_scan_machine(void)
|
||||
pr_info("DMI not present or invalid.\n");
|
||||
}
|
||||
|
||||
static ssize_t raw_table_read(struct file *file, struct kobject *kobj,
|
||||
struct bin_attribute *attr, char *buf,
|
||||
loff_t pos, size_t count)
|
||||
{
|
||||
memcpy(buf, attr->private + pos, count);
|
||||
return count;
|
||||
}
|
||||
|
||||
static BIN_ATTR(smbios_entry_point, S_IRUSR, raw_table_read, NULL, 0);
|
||||
static BIN_ATTR(DMI, S_IRUSR, raw_table_read, NULL, 0);
|
||||
static BIN_ATTR_SIMPLE_ADMIN_RO(smbios_entry_point);
|
||||
static BIN_ATTR_SIMPLE_ADMIN_RO(DMI);
|
||||
|
||||
static int __init dmi_init(void)
|
||||
{
|
||||
|
||||
@@ -40,15 +40,7 @@ static u8 *rci2_base;
|
||||
static u32 rci2_table_len;
|
||||
unsigned long rci2_table_phys __ro_after_init = EFI_INVALID_TABLE_ADDR;
|
||||
|
||||
static ssize_t raw_table_read(struct file *file, struct kobject *kobj,
|
||||
struct bin_attribute *attr, char *buf,
|
||||
loff_t pos, size_t count)
|
||||
{
|
||||
memcpy(buf, attr->private + pos, count);
|
||||
return count;
|
||||
}
|
||||
|
||||
static BIN_ATTR(rci2, S_IRUSR, raw_table_read, NULL, 0);
|
||||
static BIN_ATTR_SIMPLE_ADMIN_RO(rci2);
|
||||
|
||||
static u16 checksum(void)
|
||||
{
|
||||
|
||||
@@ -51,21 +51,7 @@ struct gvt_firmware_header {
|
||||
|
||||
#define dev_to_drm_minor(d) dev_get_drvdata((d))
|
||||
|
||||
static ssize_t
|
||||
gvt_firmware_read(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *attr, char *buf,
|
||||
loff_t offset, size_t count)
|
||||
{
|
||||
memcpy(buf, attr->private + offset, count);
|
||||
return count;
|
||||
}
|
||||
|
||||
static struct bin_attribute firmware_attr = {
|
||||
.attr = {.name = "gvt_firmware", .mode = (S_IRUSR)},
|
||||
.read = gvt_firmware_read,
|
||||
.write = NULL,
|
||||
.mmap = NULL,
|
||||
};
|
||||
static BIN_ATTR_SIMPLE_ADMIN_RO(gvt_firmware);
|
||||
|
||||
static int expose_firmware_sysfs(struct intel_gvt *gvt)
|
||||
{
|
||||
@@ -108,10 +94,10 @@ static int expose_firmware_sysfs(struct intel_gvt *gvt)
|
||||
crc32_start = offsetof(struct gvt_firmware_header, version);
|
||||
h->crc32 = crc32_le(0, firmware + crc32_start, size - crc32_start);
|
||||
|
||||
firmware_attr.size = size;
|
||||
firmware_attr.private = firmware;
|
||||
bin_attr_gvt_firmware.size = size;
|
||||
bin_attr_gvt_firmware.private = firmware;
|
||||
|
||||
ret = device_create_bin_file(&pdev->dev, &firmware_attr);
|
||||
ret = device_create_bin_file(&pdev->dev, &bin_attr_gvt_firmware);
|
||||
if (ret) {
|
||||
vfree(firmware);
|
||||
return ret;
|
||||
@@ -123,8 +109,8 @@ static void clean_firmware_sysfs(struct intel_gvt *gvt)
|
||||
{
|
||||
struct pci_dev *pdev = to_pci_dev(gvt->gt->i915->drm.dev);
|
||||
|
||||
device_remove_bin_file(&pdev->dev, &firmware_attr);
|
||||
vfree(firmware_attr.private);
|
||||
device_remove_bin_file(&pdev->dev, &bin_attr_gvt_firmware);
|
||||
vfree(bin_attr_gvt_firmware.private);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -101,14 +101,7 @@ struct i5k_amb_data {
|
||||
unsigned int num_attrs;
|
||||
};
|
||||
|
||||
static ssize_t name_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
return sprintf(buf, "%s\n", DRVNAME);
|
||||
}
|
||||
|
||||
|
||||
static DEVICE_ATTR_RO(name);
|
||||
static DEVICE_STRING_ATTR_RO(name, 0444, DRVNAME);
|
||||
|
||||
static struct platform_device *amb_pdev;
|
||||
|
||||
@@ -373,7 +366,7 @@ static int i5k_amb_hwmon_init(struct platform_device *pdev)
|
||||
}
|
||||
}
|
||||
|
||||
res = device_create_file(&pdev->dev, &dev_attr_name);
|
||||
res = device_create_file(&pdev->dev, &dev_attr_name.attr);
|
||||
if (res)
|
||||
goto exit_remove;
|
||||
|
||||
@@ -386,7 +379,7 @@ static int i5k_amb_hwmon_init(struct platform_device *pdev)
|
||||
return res;
|
||||
|
||||
exit_remove:
|
||||
device_remove_file(&pdev->dev, &dev_attr_name);
|
||||
device_remove_file(&pdev->dev, &dev_attr_name.attr);
|
||||
for (i = 0; i < data->num_attrs; i++)
|
||||
device_remove_file(&pdev->dev, &data->attrs[i].s_attr.dev_attr);
|
||||
kfree(data->attrs);
|
||||
@@ -561,7 +554,7 @@ static void i5k_amb_remove(struct platform_device *pdev)
|
||||
struct i5k_amb_data *data = platform_get_drvdata(pdev);
|
||||
|
||||
hwmon_device_unregister(data->hwmon_dev);
|
||||
device_remove_file(&pdev->dev, &dev_attr_name);
|
||||
device_remove_file(&pdev->dev, &dev_attr_name.attr);
|
||||
for (i = 0; i < data->num_attrs; i++)
|
||||
device_remove_file(&pdev->dev, &data->attrs[i].s_attr.dev_attr);
|
||||
kfree(data->attrs);
|
||||
|
||||
@@ -256,12 +256,7 @@ static struct ibmpex_bmc_data *get_bmc_data(int iface)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static ssize_t name_show(struct device *dev, struct device_attribute *devattr,
|
||||
char *buf)
|
||||
{
|
||||
return sprintf(buf, "%s\n", DRVNAME);
|
||||
}
|
||||
static SENSOR_DEVICE_ATTR_RO(name, name, 0);
|
||||
static DEVICE_STRING_ATTR_RO(name, 0444, DRVNAME);
|
||||
|
||||
static ssize_t ibmpex_show_sensor(struct device *dev,
|
||||
struct device_attribute *devattr,
|
||||
@@ -415,8 +410,7 @@ static int ibmpex_find_sensors(struct ibmpex_bmc_data *data)
|
||||
if (err)
|
||||
goto exit_remove;
|
||||
|
||||
err = device_create_file(data->bmc_device,
|
||||
&sensor_dev_attr_name.dev_attr);
|
||||
err = device_create_file(data->bmc_device, &dev_attr_name.attr);
|
||||
if (err)
|
||||
goto exit_remove;
|
||||
|
||||
@@ -425,7 +419,7 @@ static int ibmpex_find_sensors(struct ibmpex_bmc_data *data)
|
||||
exit_remove:
|
||||
device_remove_file(data->bmc_device,
|
||||
&sensor_dev_attr_reset_high_low.dev_attr);
|
||||
device_remove_file(data->bmc_device, &sensor_dev_attr_name.dev_attr);
|
||||
device_remove_file(data->bmc_device, &dev_attr_name.attr);
|
||||
for (i = 0; i < data->num_sensors; i++)
|
||||
for (j = 0; j < PEX_NUM_SENSOR_FUNCS; j++) {
|
||||
if (!data->sensors[i].attr[j].dev_attr.attr.name)
|
||||
@@ -516,7 +510,7 @@ static void ibmpex_bmc_delete(struct ibmpex_bmc_data *data)
|
||||
|
||||
device_remove_file(data->bmc_device,
|
||||
&sensor_dev_attr_reset_high_low.dev_attr);
|
||||
device_remove_file(data->bmc_device, &sensor_dev_attr_name.dev_attr);
|
||||
device_remove_file(data->bmc_device, &dev_attr_name.attr);
|
||||
for (i = 0; i < data->num_sensors; i++)
|
||||
for (j = 0; j < PEX_NUM_SENSOR_FUNCS; j++) {
|
||||
if (!data->sensors[i].attr[j].dev_attr.attr.name)
|
||||
|
||||
@@ -1359,7 +1359,6 @@ static inline u32 qib_get_rcvhdrtail(const struct qib_ctxtdata *rcd)
|
||||
* sysfs interface.
|
||||
*/
|
||||
|
||||
extern const char ib_qib_version[];
|
||||
extern const struct attribute_group qib_attr_group;
|
||||
extern const struct attribute_group *qib_attr_port_groups[];
|
||||
|
||||
|
||||
@@ -44,12 +44,6 @@
|
||||
|
||||
#include "qib.h"
|
||||
|
||||
/*
|
||||
* The size has to be longer than this string, so we can append
|
||||
* board/chip information to it in the init code.
|
||||
*/
|
||||
const char ib_qib_version[] = QIB_DRIVER_VERSION "\n";
|
||||
|
||||
DEFINE_MUTEX(qib_mutex); /* general driver use */
|
||||
|
||||
unsigned qib_ibmtu;
|
||||
|
||||
@@ -585,13 +585,7 @@ static ssize_t hca_type_show(struct device *device,
|
||||
static DEVICE_ATTR_RO(hca_type);
|
||||
static DEVICE_ATTR(board_id, 0444, hca_type_show, NULL);
|
||||
|
||||
static ssize_t version_show(struct device *device,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
/* The string printed here is already newline-terminated. */
|
||||
return sysfs_emit(buf, "%s", (char *)ib_qib_version);
|
||||
}
|
||||
static DEVICE_ATTR_RO(version);
|
||||
static DEVICE_STRING_ATTR_RO(version, 0444, QIB_DRIVER_VERSION);
|
||||
|
||||
static ssize_t boardversion_show(struct device *device,
|
||||
struct device_attribute *attr, char *buf)
|
||||
@@ -721,7 +715,7 @@ static struct attribute *qib_attributes[] = {
|
||||
&dev_attr_hw_rev.attr,
|
||||
&dev_attr_hca_type.attr,
|
||||
&dev_attr_board_id.attr,
|
||||
&dev_attr_version.attr,
|
||||
&dev_attr_version.attr.attr,
|
||||
&dev_attr_nctxts.attr,
|
||||
&dev_attr_nfreectxts.attr,
|
||||
&dev_attr_serial.attr,
|
||||
|
||||
@@ -236,24 +236,16 @@ static const struct attribute_group ali_drw_pmu_cpumask_attr_group = {
|
||||
.attrs = ali_drw_pmu_cpumask_attrs,
|
||||
};
|
||||
|
||||
static ssize_t ali_drw_pmu_identifier_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *page)
|
||||
{
|
||||
return sysfs_emit(page, "%s\n", "ali_drw_pmu");
|
||||
}
|
||||
|
||||
static umode_t ali_drw_pmu_identifier_attr_visible(struct kobject *kobj,
|
||||
struct attribute *attr, int n)
|
||||
{
|
||||
return attr->mode;
|
||||
}
|
||||
|
||||
static struct device_attribute ali_drw_pmu_identifier_attr =
|
||||
__ATTR(identifier, 0444, ali_drw_pmu_identifier_show, NULL);
|
||||
static DEVICE_STRING_ATTR_RO(ali_drw_pmu_identifier, 0444, "ali_drw_pmu");
|
||||
|
||||
static struct attribute *ali_drw_pmu_identifier_attrs[] = {
|
||||
&ali_drw_pmu_identifier_attr.attr,
|
||||
&dev_attr_ali_drw_pmu_identifier.attr.attr,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
@@ -127,8 +127,6 @@ enum cci_models {
|
||||
|
||||
static void pmu_write_counters(struct cci_pmu *cci_pmu,
|
||||
unsigned long *mask);
|
||||
static ssize_t __maybe_unused cci_pmu_format_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf);
|
||||
static ssize_t __maybe_unused cci_pmu_event_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf);
|
||||
|
||||
@@ -138,7 +136,7 @@ static ssize_t __maybe_unused cci_pmu_event_show(struct device *dev,
|
||||
})[0].attr.attr
|
||||
|
||||
#define CCI_FORMAT_EXT_ATTR_ENTRY(_name, _config) \
|
||||
CCI_EXT_ATTR_ENTRY(_name, cci_pmu_format_show, (char *)_config)
|
||||
CCI_EXT_ATTR_ENTRY(_name, device_show_string, _config)
|
||||
#define CCI_EVENT_EXT_ATTR_ENTRY(_name, _config) \
|
||||
CCI_EXT_ATTR_ENTRY(_name, cci_pmu_event_show, (unsigned long)_config)
|
||||
|
||||
@@ -688,14 +686,6 @@ static void __cci_pmu_disable(struct cci_pmu *cci_pmu)
|
||||
writel(val, cci_pmu->ctrl_base + CCI_PMCR);
|
||||
}
|
||||
|
||||
static ssize_t cci_pmu_format_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct dev_ext_attribute *eattr = container_of(attr,
|
||||
struct dev_ext_attribute, attr);
|
||||
return sysfs_emit(buf, "%s\n", (char *)eattr->var);
|
||||
}
|
||||
|
||||
static ssize_t cci_pmu_event_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
|
||||
@@ -215,18 +215,9 @@ static void arm_ccn_pmu_config_set(u64 *config, u32 node_xp, u32 type, u32 port)
|
||||
*config |= (node_xp << 0) | (type << 8) | (port << 24);
|
||||
}
|
||||
|
||||
static ssize_t arm_ccn_pmu_format_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct dev_ext_attribute *ea = container_of(attr,
|
||||
struct dev_ext_attribute, attr);
|
||||
|
||||
return sysfs_emit(buf, "%s\n", (char *)ea->var);
|
||||
}
|
||||
|
||||
#define CCN_FORMAT_ATTR(_name, _config) \
|
||||
struct dev_ext_attribute arm_ccn_pmu_format_attr_##_name = \
|
||||
{ __ATTR(_name, S_IRUGO, arm_ccn_pmu_format_show, \
|
||||
{ __ATTR(_name, S_IRUGO, device_show_string, \
|
||||
NULL), _config }
|
||||
|
||||
static CCN_FORMAT_ATTR(node, "config:0-7");
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user