mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-15 15:04:27 +08:00
usbip: vhci-hcd: Move VHCI platform device into vhci struct
Every VHCI is a platform device, so move the platform_device struct into the VHCI struct. Signed-off-by: Yuyang Du <yuyang.du@intel.com> Acked-by: Shuah Khan <shuahkh@osg.samsung.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
559e9c00b3
commit
89a73d281f
@ -90,6 +90,8 @@ struct vhci_unlink {
|
||||
struct vhci {
|
||||
spinlock_t lock;
|
||||
|
||||
struct platform_device *pdev;
|
||||
|
||||
struct vhci_hcd *vhci_hcd_hs;
|
||||
struct vhci_hcd *vhci_hcd_ss;
|
||||
};
|
||||
@ -116,7 +118,6 @@ struct vhci_hcd {
|
||||
};
|
||||
|
||||
extern int vhci_num_controllers;
|
||||
extern struct platform_device **vhci_pdevs;
|
||||
extern struct vhci *vhcis;
|
||||
extern struct attribute_group vhci_attr_group;
|
||||
|
||||
|
@ -58,8 +58,7 @@ static const char driver_name[] = "vhci_hcd";
|
||||
static const char driver_desc[] = "USB/IP Virtual Host Controller";
|
||||
|
||||
int vhci_num_controllers = VHCI_NR_HCS;
|
||||
|
||||
struct platform_device **vhci_pdevs;
|
||||
struct vhci *vhcis;
|
||||
|
||||
static const char * const bit_desc[] = {
|
||||
"CONNECTION", /*0*/
|
||||
@ -1193,7 +1192,7 @@ static int add_platform_device(int id)
|
||||
if (IS_ERR(pdev))
|
||||
return PTR_ERR(pdev);
|
||||
|
||||
*(vhci_pdevs + id) = pdev;
|
||||
vhcis[id].pdev = pdev;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1203,10 +1202,10 @@ static void del_platform_devices(void)
|
||||
int i;
|
||||
|
||||
for (i = 0; i < vhci_num_controllers; i++) {
|
||||
pdev = *(vhci_pdevs + i);
|
||||
pdev = vhcis[i].pdev;
|
||||
if (pdev != NULL)
|
||||
platform_device_unregister(pdev);
|
||||
*(vhci_pdevs + i) = NULL;
|
||||
vhcis[i].pdev = NULL;
|
||||
}
|
||||
sysfs_remove_link(&platform_bus.kobj, driver_name);
|
||||
}
|
||||
@ -1221,8 +1220,8 @@ static int __init vhci_hcd_init(void)
|
||||
if (vhci_num_controllers < 1)
|
||||
vhci_num_controllers = 1;
|
||||
|
||||
vhci_pdevs = kcalloc(vhci_num_controllers, sizeof(void *), GFP_KERNEL);
|
||||
if (vhci_pdevs == NULL)
|
||||
vhcis = kcalloc(vhci_num_controllers, sizeof(struct vhci), GFP_KERNEL);
|
||||
if (vhcis == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
ret = platform_driver_register(&vhci_driver);
|
||||
@ -1242,7 +1241,7 @@ err_platform_device_register:
|
||||
del_platform_devices();
|
||||
platform_driver_unregister(&vhci_driver);
|
||||
err_driver_register:
|
||||
kfree(vhci_pdevs);
|
||||
kfree(vhcis);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1250,7 +1249,7 @@ static void __exit vhci_hcd_exit(void)
|
||||
{
|
||||
del_platform_devices();
|
||||
platform_driver_unregister(&vhci_driver);
|
||||
kfree(vhci_pdevs);
|
||||
kfree(vhcis);
|
||||
}
|
||||
|
||||
module_init(vhci_hcd_init);
|
||||
|
@ -32,7 +32,7 @@
|
||||
/* Sysfs entry to show port status */
|
||||
static ssize_t status_show_vhci(int pdev_nr, char *out)
|
||||
{
|
||||
struct platform_device *pdev = *(vhci_pdevs + pdev_nr);
|
||||
struct platform_device *pdev = vhcis[pdev_nr].pdev;
|
||||
struct vhci_hcd *vhci;
|
||||
char *s = out;
|
||||
int i = 0;
|
||||
@ -206,7 +206,7 @@ static ssize_t store_detach(struct device *dev, struct device_attribute *attr,
|
||||
if (!valid_port(pdev_nr, rhport))
|
||||
return -EINVAL;
|
||||
|
||||
hcd = platform_get_drvdata(*(vhci_pdevs + pdev_nr));
|
||||
hcd = platform_get_drvdata(vhcis[pdev_nr].pdev);
|
||||
if (hcd == NULL) {
|
||||
dev_err(dev, "port is not ready %u\n", port);
|
||||
return -EAGAIN;
|
||||
@ -287,7 +287,7 @@ static ssize_t store_attach(struct device *dev, struct device_attribute *attr,
|
||||
if (!valid_args(pdev_nr, rhport, speed))
|
||||
return -EINVAL;
|
||||
|
||||
hcd = platform_get_drvdata(*(vhci_pdevs + pdev_nr));
|
||||
hcd = platform_get_drvdata(vhcis[pdev_nr].pdev);
|
||||
if (hcd == NULL) {
|
||||
dev_err(dev, "port %d is not ready\n", port);
|
||||
return -EAGAIN;
|
||||
|
Loading…
Reference in New Issue
Block a user