Re: [PATCH v2 3/9] usbip: vhci-hcd: Move VHCI platform device into vhci struct

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 05/18/2017 04:08 AM, Yuyang Du wrote:
> From: Yuyang Du <yuyang.du@xxxxxxxxx>
> 
> Every VHCI is a platform device, so move the platform_device struct
> into the VHCI struct.
> 
> Signed-off-by: Yuyang Du <yuyang.du@xxxxxxxxx>

Acked-by: Shuah Khan <shuahkh@xxxxxxxxxxxxxxx>

thanks,
-- Shuah

> ---
>  drivers/usb/usbip/vhci.h       |  3 ++-
>  drivers/usb/usbip/vhci_hcd.c   | 17 ++++++++---------
>  drivers/usb/usbip/vhci_sysfs.c |  6 +++---
>  3 files changed, 13 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/usb/usbip/vhci.h b/drivers/usb/usbip/vhci.h
> index 9959584..62ee537 100644
> --- a/drivers/usb/usbip/vhci.h
> +++ b/drivers/usb/usbip/vhci.h
> @@ -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;
>  
> diff --git a/drivers/usb/usbip/vhci_hcd.c b/drivers/usb/usbip/vhci_hcd.c
> index 624265a..7a04497 100644
> --- a/drivers/usb/usbip/vhci_hcd.c
> +++ b/drivers/usb/usbip/vhci_hcd.c
> @@ -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*/
> @@ -1188,7 +1187,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;
>  }
>  
> @@ -1198,10 +1197,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);
>  }
> @@ -1216,8 +1215,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);
> @@ -1237,7 +1236,7 @@ static int __init vhci_hcd_init(void)
>  	del_platform_devices();
>  	platform_driver_unregister(&vhci_driver);
>  err_driver_register:
> -	kfree(vhci_pdevs);
> +	kfree(vhcis);
>  	return ret;
>  }
>  
> @@ -1245,7 +1244,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);
> diff --git a/drivers/usb/usbip/vhci_sysfs.c b/drivers/usb/usbip/vhci_sysfs.c
> index d878faa..07f0d37 100644
> --- a/drivers/usb/usbip/vhci_sysfs.c
> +++ b/drivers/usb/usbip/vhci_sysfs.c
> @@ -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;
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux