firmware: arm_scpi: remove usage of drvdata and don't reset scpi_info to null
There's no benefit using drvdata as variable scpi_info is global. Setting scpi_info to NULL in scpi_remove isn't needed too. If arm_scpi is built-in, then this code is never used. And if arm_scpi is built as a module and some other module calls get_scpi_ops() then due to this dependency scpi_remove is called only after the other module has been removed. Last but not least, users usually store the result of get_scpi_ops(), therefore setting scpi_info to NULL wouldn't really help. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> [sudeep.holla: reworded the commit log a bit] Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
This commit is contained in:
parent
2bd6bf03f4
commit
0012694590
|
@ -862,8 +862,6 @@ static int scpi_init_versions(struct scpi_drvinfo *info)
|
||||||
static ssize_t protocol_version_show(struct device *dev,
|
static ssize_t protocol_version_show(struct device *dev,
|
||||||
struct device_attribute *attr, char *buf)
|
struct device_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
struct scpi_drvinfo *scpi_info = dev_get_drvdata(dev);
|
|
||||||
|
|
||||||
return sprintf(buf, "%d.%d\n",
|
return sprintf(buf, "%d.%d\n",
|
||||||
PROTOCOL_REV_MAJOR(scpi_info->protocol_version),
|
PROTOCOL_REV_MAJOR(scpi_info->protocol_version),
|
||||||
PROTOCOL_REV_MINOR(scpi_info->protocol_version));
|
PROTOCOL_REV_MINOR(scpi_info->protocol_version));
|
||||||
|
@ -873,8 +871,6 @@ static DEVICE_ATTR_RO(protocol_version);
|
||||||
static ssize_t firmware_version_show(struct device *dev,
|
static ssize_t firmware_version_show(struct device *dev,
|
||||||
struct device_attribute *attr, char *buf)
|
struct device_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
struct scpi_drvinfo *scpi_info = dev_get_drvdata(dev);
|
|
||||||
|
|
||||||
return sprintf(buf, "%d.%d.%d\n",
|
return sprintf(buf, "%d.%d.%d\n",
|
||||||
FW_REV_MAJOR(scpi_info->firmware_version),
|
FW_REV_MAJOR(scpi_info->firmware_version),
|
||||||
FW_REV_MINOR(scpi_info->firmware_version),
|
FW_REV_MINOR(scpi_info->firmware_version),
|
||||||
|
@ -905,21 +901,17 @@ static int scpi_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
struct scpi_drvinfo *info = platform_get_drvdata(pdev);
|
|
||||||
|
|
||||||
scpi_info = NULL; /* stop exporting SCPI ops through get_scpi_ops */
|
|
||||||
|
|
||||||
of_platform_depopulate(dev);
|
of_platform_depopulate(dev);
|
||||||
sysfs_remove_groups(&dev->kobj, versions_groups);
|
sysfs_remove_groups(&dev->kobj, versions_groups);
|
||||||
scpi_free_channels(dev, info->channels, info->num_chans);
|
scpi_free_channels(dev, scpi_info->channels, scpi_info->num_chans);
|
||||||
platform_set_drvdata(pdev, NULL);
|
|
||||||
|
|
||||||
for (i = 0; i < MAX_DVFS_DOMAINS && info->dvfs[i]; i++) {
|
for (i = 0; i < MAX_DVFS_DOMAINS && scpi_info->dvfs[i]; i++) {
|
||||||
kfree(info->dvfs[i]->opps);
|
kfree(scpi_info->dvfs[i]->opps);
|
||||||
kfree(info->dvfs[i]);
|
kfree(scpi_info->dvfs[i]);
|
||||||
}
|
}
|
||||||
devm_kfree(dev, info->channels);
|
devm_kfree(dev, scpi_info->channels);
|
||||||
devm_kfree(dev, info);
|
devm_kfree(dev, scpi_info);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1027,8 +1019,6 @@ err:
|
||||||
scpi_info->num_chans = count;
|
scpi_info->num_chans = count;
|
||||||
scpi_info->commands = scpi_std_commands;
|
scpi_info->commands = scpi_std_commands;
|
||||||
|
|
||||||
platform_set_drvdata(pdev, scpi_info);
|
|
||||||
|
|
||||||
if (scpi_info->is_legacy) {
|
if (scpi_info->is_legacy) {
|
||||||
/* Replace with legacy variants */
|
/* Replace with legacy variants */
|
||||||
scpi_ops.clk_set_val = legacy_scpi_clk_set_val;
|
scpi_ops.clk_set_val = legacy_scpi_clk_set_val;
|
||||||
|
|
Loading…
Reference in New Issue