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

extcon: palmas: Use devm_extcon_dev_allocate for extcon_dev

This patch use devm_extcon_dev_allocate() to simplify the memory control
of extcon device.

Cc: Graeme Gregory <gg@slimlogic.co.uk>
Cc: Kishon Vijay Abraham I <kishon@ti.com>
Cc: Felipe Balbi <balbi@ti.com>
Cc: Samuel Ortiz <sameo@linux.intel.com>
Cc: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Felipe Balbi <balbi@ti.com>
Tested-by: Felipe Balbi <balbi@ti.com>

+21 -16
+20 -15
drivers/extcon/extcon-palmas.c
··· 57 57 if (vbus_line_state & PALMAS_INT3_LINE_STATE_VBUS) { 58 58 if (palmas_usb->linkstat != PALMAS_USB_STATE_VBUS) { 59 59 palmas_usb->linkstat = PALMAS_USB_STATE_VBUS; 60 - extcon_set_cable_state(&palmas_usb->edev, "USB", true); 60 + extcon_set_cable_state(palmas_usb->edev, "USB", true); 61 61 dev_info(palmas_usb->dev, "USB cable is attached\n"); 62 62 } else { 63 63 dev_dbg(palmas_usb->dev, ··· 66 66 } else if (!(vbus_line_state & PALMAS_INT3_LINE_STATE_VBUS)) { 67 67 if (palmas_usb->linkstat == PALMAS_USB_STATE_VBUS) { 68 68 palmas_usb->linkstat = PALMAS_USB_STATE_DISCONNECT; 69 - extcon_set_cable_state(&palmas_usb->edev, "USB", false); 69 + extcon_set_cable_state(palmas_usb->edev, "USB", false); 70 70 dev_info(palmas_usb->dev, "USB cable is detached\n"); 71 71 } else { 72 72 dev_dbg(palmas_usb->dev, ··· 93 93 PALMAS_USB_ID_INT_LATCH_CLR, 94 94 PALMAS_USB_ID_INT_EN_HI_CLR_ID_GND); 95 95 palmas_usb->linkstat = PALMAS_USB_STATE_ID; 96 - extcon_set_cable_state(&palmas_usb->edev, "USB-HOST", true); 96 + extcon_set_cable_state(palmas_usb->edev, "USB-HOST", true); 97 97 dev_info(palmas_usb->dev, "USB-HOST cable is attached\n"); 98 98 } else if ((set & PALMAS_USB_ID_INT_SRC_ID_FLOAT) && 99 99 (id_src & PALMAS_USB_ID_INT_SRC_ID_FLOAT)) { ··· 101 101 PALMAS_USB_ID_INT_LATCH_CLR, 102 102 PALMAS_USB_ID_INT_EN_HI_CLR_ID_FLOAT); 103 103 palmas_usb->linkstat = PALMAS_USB_STATE_DISCONNECT; 104 - extcon_set_cable_state(&palmas_usb->edev, "USB-HOST", false); 104 + extcon_set_cable_state(palmas_usb->edev, "USB-HOST", false); 105 105 dev_info(palmas_usb->dev, "USB-HOST cable is detached\n"); 106 106 } else if ((palmas_usb->linkstat == PALMAS_USB_STATE_ID) && 107 107 (!(set & PALMAS_USB_ID_INT_SRC_ID_GND))) { 108 108 palmas_usb->linkstat = PALMAS_USB_STATE_DISCONNECT; 109 - extcon_set_cable_state(&palmas_usb->edev, "USB-HOST", false); 109 + extcon_set_cable_state(palmas_usb->edev, "USB-HOST", false); 110 110 dev_info(palmas_usb->dev, "USB-HOST cable is detached\n"); 111 111 } else if ((palmas_usb->linkstat == PALMAS_USB_STATE_DISCONNECT) && 112 112 (id_src & PALMAS_USB_ID_INT_SRC_ID_GND)) { 113 113 palmas_usb->linkstat = PALMAS_USB_STATE_ID; 114 - extcon_set_cable_state(&palmas_usb->edev, "USB-HOST", true); 114 + extcon_set_cable_state(palmas_usb->edev, "USB-HOST", true); 115 115 dev_info(palmas_usb->dev, " USB-HOST cable is attached\n"); 116 116 } 117 117 ··· 187 187 188 188 platform_set_drvdata(pdev, palmas_usb); 189 189 190 - palmas_usb->edev.supported_cable = palmas_extcon_cable; 191 - palmas_usb->edev.dev.parent = palmas_usb->dev; 192 - palmas_usb->edev.name = kstrdup(node->name, GFP_KERNEL); 193 - palmas_usb->edev.mutually_exclusive = mutually_exclusive; 190 + palmas_usb->edev = devm_extcon_dev_allocate(&pdev->dev, 191 + palmas_extcon_cable); 192 + if (IS_ERR(palmas_usb->edev)) { 193 + dev_err(&pdev->dev, "failed to allocate extcon device\n"); 194 + return -ENOMEM; 195 + } 196 + palmas_usb->edev->name = kstrdup(node->name, GFP_KERNEL); 197 + palmas_usb->edev->dev.parent = palmas_usb->dev; 198 + palmas_usb->edev->mutually_exclusive = mutually_exclusive; 194 199 195 - status = devm_extcon_dev_register(&pdev->dev, &palmas_usb->edev); 200 + status = devm_extcon_dev_register(&pdev->dev, palmas_usb->edev); 196 201 if (status) { 197 202 dev_err(&pdev->dev, "failed to register extcon device\n"); 198 - kfree(palmas_usb->edev.name); 203 + kfree(palmas_usb->edev->name); 199 204 return status; 200 205 } 201 206 ··· 214 209 if (status < 0) { 215 210 dev_err(&pdev->dev, "can't get IRQ %d, err %d\n", 216 211 palmas_usb->id_irq, status); 217 - kfree(palmas_usb->edev.name); 212 + kfree(palmas_usb->edev->name); 218 213 return status; 219 214 } 220 215 } ··· 229 224 if (status < 0) { 230 225 dev_err(&pdev->dev, "can't get IRQ %d, err %d\n", 231 226 palmas_usb->vbus_irq, status); 232 - kfree(palmas_usb->edev.name); 227 + kfree(palmas_usb->edev->name); 233 228 return status; 234 229 } 235 230 } ··· 243 238 { 244 239 struct palmas_usb *palmas_usb = platform_get_drvdata(pdev); 245 240 246 - kfree(palmas_usb->edev.name); 241 + kfree(palmas_usb->edev->name); 247 242 248 243 return 0; 249 244 }
+1 -1
include/linux/mfd/palmas.h
··· 415 415 struct palmas *palmas; 416 416 struct device *dev; 417 417 418 - struct extcon_dev edev; 418 + struct extcon_dev *edev; 419 419 420 420 int id_otg_irq; 421 421 int id_irq;