Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

usbip: Use platform_device_register_full()

The code to create the child platform device is essentially the same as
what platform_device_register_full() does, so change over to use
that same function to reduce duplication.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Shuah Khan <skhan@linuxfoundation.org>
Link: https://lore.kernel.org/r/20231006164312.3528524-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Andy Shevchenko and committed by
Greg Kroah-Hartman
b8aaf639 97475763

+20 -35
+20 -35
drivers/usb/usbip/vhci_hcd.c
··· 1139 1139 1140 1140 static int vhci_setup(struct usb_hcd *hcd) 1141 1141 { 1142 - struct vhci *vhci = *((void **)dev_get_platdata(hcd->self.controller)); 1142 + struct vhci *vhci = dev_get_platdata(hcd->self.controller); 1143 + 1143 1144 if (usb_hcd_is_primary_hcd(hcd)) { 1144 1145 vhci->vhci_hcd_hs = hcd_to_vhci_hcd(hcd); 1145 1146 vhci->vhci_hcd_hs->vhci = vhci; ··· 1257 1256 /* FIXME: suspend/resume */ 1258 1257 static int vhci_bus_suspend(struct usb_hcd *hcd) 1259 1258 { 1260 - struct vhci *vhci = *((void **)dev_get_platdata(hcd->self.controller)); 1259 + struct vhci *vhci = dev_get_platdata(hcd->self.controller); 1261 1260 unsigned long flags; 1262 1261 1263 1262 dev_dbg(&hcd->self.root_hub->dev, "%s\n", __func__); ··· 1271 1270 1272 1271 static int vhci_bus_resume(struct usb_hcd *hcd) 1273 1272 { 1274 - struct vhci *vhci = *((void **)dev_get_platdata(hcd->self.controller)); 1273 + struct vhci *vhci = dev_get_platdata(hcd->self.controller); 1275 1274 int rc = 0; 1276 1275 unsigned long flags; 1277 1276 ··· 1338 1337 1339 1338 static int vhci_hcd_probe(struct platform_device *pdev) 1340 1339 { 1341 - struct vhci *vhci = *((void **)dev_get_platdata(&pdev->dev)); 1340 + struct vhci *vhci = dev_get_platdata(&pdev->dev); 1342 1341 struct usb_hcd *hcd_hs; 1343 1342 struct usb_hcd *hcd_ss; 1344 1343 int ret; ··· 1396 1395 1397 1396 static void vhci_hcd_remove(struct platform_device *pdev) 1398 1397 { 1399 - struct vhci *vhci = *((void **)dev_get_platdata(&pdev->dev)); 1398 + struct vhci *vhci = dev_get_platdata(&pdev->dev); 1400 1399 1401 1400 /* 1402 1401 * Disconnects the root hub, ··· 1431 1430 if (!hcd) 1432 1431 return 0; 1433 1432 1434 - vhci = *((void **)dev_get_platdata(hcd->self.controller)); 1433 + vhci = dev_get_platdata(hcd->self.controller); 1435 1434 1436 1435 spin_lock_irqsave(&vhci->lock, flags); 1437 1436 ··· 1494 1493 1495 1494 static void del_platform_devices(void) 1496 1495 { 1497 - struct platform_device *pdev; 1498 1496 int i; 1499 1497 1500 1498 for (i = 0; i < vhci_num_controllers; i++) { 1501 - pdev = vhcis[i].pdev; 1502 - if (pdev != NULL) 1503 - platform_device_unregister(pdev); 1499 + platform_device_unregister(vhcis[i].pdev); 1504 1500 vhcis[i].pdev = NULL; 1505 1501 } 1506 1502 sysfs_remove_link(&platform_bus.kobj, driver_name); ··· 1517 1519 if (vhcis == NULL) 1518 1520 return -ENOMEM; 1519 1521 1520 - for (i = 0; i < vhci_num_controllers; i++) { 1521 - vhcis[i].pdev = platform_device_alloc(driver_name, i); 1522 - if (!vhcis[i].pdev) { 1523 - i--; 1524 - while (i >= 0) 1525 - platform_device_put(vhcis[i--].pdev); 1526 - ret = -ENOMEM; 1527 - goto err_device_alloc; 1528 - } 1529 - } 1530 - for (i = 0; i < vhci_num_controllers; i++) { 1531 - void *vhci = &vhcis[i]; 1532 - ret = platform_device_add_data(vhcis[i].pdev, &vhci, sizeof(void *)); 1533 - if (ret) 1534 - goto err_driver_register; 1535 - } 1536 - 1537 1522 ret = platform_driver_register(&vhci_driver); 1538 1523 if (ret) 1539 1524 goto err_driver_register; 1540 1525 1541 1526 for (i = 0; i < vhci_num_controllers; i++) { 1542 - ret = platform_device_add(vhcis[i].pdev); 1527 + struct platform_device_info pdevinfo = { 1528 + .name = driver_name, 1529 + .id = i, 1530 + .data = &vhcis[i], 1531 + .size_data = sizeof(void *), 1532 + }; 1533 + 1534 + vhcis[i].pdev = platform_device_register_full(&pdevinfo); 1535 + ret = PTR_ERR_OR_ZERO(vhcis[i].pdev); 1543 1536 if (ret < 0) { 1544 - i--; 1545 - while (i >= 0) 1546 - platform_device_del(vhcis[i--].pdev); 1537 + while (i--) 1538 + platform_device_unregister(vhcis[i].pdev); 1547 1539 goto err_add_hcd; 1548 1540 } 1549 1541 } 1550 1542 1551 - return ret; 1543 + return 0; 1552 1544 1553 1545 err_add_hcd: 1554 1546 platform_driver_unregister(&vhci_driver); 1555 1547 err_driver_register: 1556 - for (i = 0; i < vhci_num_controllers; i++) 1557 - platform_device_put(vhcis[i].pdev); 1558 - err_device_alloc: 1559 1548 kfree(vhcis); 1560 1549 return ret; 1561 1550 }