mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-08 00:29:36 -04:00
ucsi_ccg: Don't show non-functional attributes
If no fw_build is recognized for the controller there is no point to exposing the `do_flash` attribute. Add an is_visible callback to the attribute group and check for that fw_build member to hide when not applicable. Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Link: https://lore.kernel.org/r/20250221054137.1631765-3-superm1@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
c160068527
commit
403849c8ed
@@ -1387,22 +1387,35 @@ static ssize_t do_flash_store(struct device *dev,
|
||||
if (!flash)
|
||||
return n;
|
||||
|
||||
if (uc->fw_build == 0x0) {
|
||||
dev_err(dev, "fail to flash FW due to missing FW build info\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
schedule_work(&uc->work);
|
||||
return n;
|
||||
}
|
||||
|
||||
static umode_t ucsi_ccg_attrs_is_visible(struct kobject *kobj, struct attribute *attr, int idx)
|
||||
{
|
||||
struct device *dev = kobj_to_dev(kobj);
|
||||
struct ucsi_ccg *uc = i2c_get_clientdata(to_i2c_client(dev));
|
||||
|
||||
if (!uc->fw_build)
|
||||
return 0;
|
||||
|
||||
return attr->mode;
|
||||
}
|
||||
|
||||
static DEVICE_ATTR_WO(do_flash);
|
||||
|
||||
static struct attribute *ucsi_ccg_attrs[] = {
|
||||
&dev_attr_do_flash.attr,
|
||||
NULL,
|
||||
};
|
||||
ATTRIBUTE_GROUPS(ucsi_ccg);
|
||||
static struct attribute_group ucsi_ccg_attr_group = {
|
||||
.attrs = ucsi_ccg_attrs,
|
||||
.is_visible = ucsi_ccg_attrs_is_visible,
|
||||
};
|
||||
static const struct attribute_group *ucsi_ccg_groups[] = {
|
||||
&ucsi_ccg_attr_group,
|
||||
NULL,
|
||||
};
|
||||
|
||||
static int ucsi_ccg_probe(struct i2c_client *client)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user