forked from Minki/linux
firmware: vpd: remove platform driver
There is no reason why VPD should register platform device and driver, given that we do not use their respective kobjects to attach attributes, nor do we need suspend/resume hooks, or any other features of device core. Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Reviewed-by: Guenter Roeck <groeck@chromium.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
dd246486f9
commit
7975bd4cca
@ -22,8 +22,6 @@
|
|||||||
#include <linux/kobject.h>
|
#include <linux/kobject.h>
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/of_address.h>
|
|
||||||
#include <linux/platform_device.h>
|
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/sysfs.h>
|
#include <linux/sysfs.h>
|
||||||
|
|
||||||
@ -279,47 +277,37 @@ static int vpd_sections_init(phys_addr_t physaddr)
|
|||||||
ret = vpd_section_init("rw", &rw_vpd,
|
ret = vpd_section_init("rw", &rw_vpd,
|
||||||
physaddr + sizeof(struct vpd_cbmem) +
|
physaddr + sizeof(struct vpd_cbmem) +
|
||||||
header.ro_size, header.rw_size);
|
header.ro_size, header.rw_size);
|
||||||
if (ret)
|
if (ret) {
|
||||||
|
vpd_section_destroy(&ro_vpd);
|
||||||
return ret;
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vpd_probe(struct platform_device *pdev)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
struct lb_cbmem_ref entry;
|
|
||||||
|
|
||||||
ret = coreboot_table_find(CB_TAG_VPD, &entry, sizeof(entry));
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
return vpd_sections_init(entry.cbmem_addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct platform_driver vpd_driver = {
|
|
||||||
.probe = vpd_probe,
|
|
||||||
.driver = {
|
|
||||||
.name = "vpd",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static int __init vpd_platform_init(void)
|
static int __init vpd_platform_init(void)
|
||||||
{
|
{
|
||||||
struct platform_device *pdev;
|
struct lb_cbmem_ref entry;
|
||||||
|
int err;
|
||||||
pdev = platform_device_register_simple("vpd", -1, NULL, 0);
|
|
||||||
if (IS_ERR(pdev))
|
|
||||||
return PTR_ERR(pdev);
|
|
||||||
|
|
||||||
vpd_kobj = kobject_create_and_add("vpd", firmware_kobj);
|
vpd_kobj = kobject_create_and_add("vpd", firmware_kobj);
|
||||||
if (!vpd_kobj)
|
if (!vpd_kobj)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
platform_driver_register(&vpd_driver);
|
err = coreboot_table_find(CB_TAG_VPD, &entry, sizeof(entry));
|
||||||
|
if (err)
|
||||||
|
goto err_kobject_put;
|
||||||
|
|
||||||
|
err = vpd_sections_init(entry.cbmem_addr);
|
||||||
|
if (err)
|
||||||
|
goto err_kobject_put;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
err_kobject_put:
|
||||||
|
kobject_put(vpd_kobj);
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit vpd_platform_exit(void)
|
static void __exit vpd_platform_exit(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user