diff options
author | Chanwoo Choi <cw00.choi@samsung.com> | 2014-04-21 07:44:53 -0400 |
---|---|---|
committer | Chanwoo Choi <cw00.choi@samsung.com> | 2014-04-28 20:52:12 -0400 |
commit | 3f79a3fb5f41e8f2229e5bf8aa725eaa79686f14 (patch) | |
tree | c5fc198cb1abff8c743b24b22979e97d5b9164a0 /drivers/extcon/extcon-palmas.c | |
parent | 60cd62d4f7d681a99eccf49941229ccf3a0069cf (diff) |
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>
Diffstat (limited to 'drivers/extcon/extcon-palmas.c')
-rw-r--r-- | drivers/extcon/extcon-palmas.c | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/drivers/extcon/extcon-palmas.c b/drivers/extcon/extcon-palmas.c index 1a770e0ee9ae..7417ce84eb2d 100644 --- a/drivers/extcon/extcon-palmas.c +++ b/drivers/extcon/extcon-palmas.c | |||
@@ -57,7 +57,7 @@ static irqreturn_t palmas_vbus_irq_handler(int irq, void *_palmas_usb) | |||
57 | if (vbus_line_state & PALMAS_INT3_LINE_STATE_VBUS) { | 57 | if (vbus_line_state & PALMAS_INT3_LINE_STATE_VBUS) { |
58 | if (palmas_usb->linkstat != PALMAS_USB_STATE_VBUS) { | 58 | if (palmas_usb->linkstat != PALMAS_USB_STATE_VBUS) { |
59 | palmas_usb->linkstat = PALMAS_USB_STATE_VBUS; | 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 | dev_info(palmas_usb->dev, "USB cable is attached\n"); | 61 | dev_info(palmas_usb->dev, "USB cable is attached\n"); |
62 | } else { | 62 | } else { |
63 | dev_dbg(palmas_usb->dev, | 63 | dev_dbg(palmas_usb->dev, |
@@ -66,7 +66,7 @@ static irqreturn_t palmas_vbus_irq_handler(int irq, void *_palmas_usb) | |||
66 | } else if (!(vbus_line_state & PALMAS_INT3_LINE_STATE_VBUS)) { | 66 | } else if (!(vbus_line_state & PALMAS_INT3_LINE_STATE_VBUS)) { |
67 | if (palmas_usb->linkstat == PALMAS_USB_STATE_VBUS) { | 67 | if (palmas_usb->linkstat == PALMAS_USB_STATE_VBUS) { |
68 | palmas_usb->linkstat = PALMAS_USB_STATE_DISCONNECT; | 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 | dev_info(palmas_usb->dev, "USB cable is detached\n"); | 70 | dev_info(palmas_usb->dev, "USB cable is detached\n"); |
71 | } else { | 71 | } else { |
72 | dev_dbg(palmas_usb->dev, | 72 | dev_dbg(palmas_usb->dev, |
@@ -93,7 +93,7 @@ static irqreturn_t palmas_id_irq_handler(int irq, void *_palmas_usb) | |||
93 | PALMAS_USB_ID_INT_LATCH_CLR, | 93 | PALMAS_USB_ID_INT_LATCH_CLR, |
94 | PALMAS_USB_ID_INT_EN_HI_CLR_ID_GND); | 94 | PALMAS_USB_ID_INT_EN_HI_CLR_ID_GND); |
95 | palmas_usb->linkstat = PALMAS_USB_STATE_ID; | 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 | dev_info(palmas_usb->dev, "USB-HOST cable is attached\n"); | 97 | dev_info(palmas_usb->dev, "USB-HOST cable is attached\n"); |
98 | } else if ((set & PALMAS_USB_ID_INT_SRC_ID_FLOAT) && | 98 | } else if ((set & PALMAS_USB_ID_INT_SRC_ID_FLOAT) && |
99 | (id_src & PALMAS_USB_ID_INT_SRC_ID_FLOAT)) { | 99 | (id_src & PALMAS_USB_ID_INT_SRC_ID_FLOAT)) { |
@@ -101,17 +101,17 @@ static irqreturn_t palmas_id_irq_handler(int irq, void *_palmas_usb) | |||
101 | PALMAS_USB_ID_INT_LATCH_CLR, | 101 | PALMAS_USB_ID_INT_LATCH_CLR, |
102 | PALMAS_USB_ID_INT_EN_HI_CLR_ID_FLOAT); | 102 | PALMAS_USB_ID_INT_EN_HI_CLR_ID_FLOAT); |
103 | palmas_usb->linkstat = PALMAS_USB_STATE_DISCONNECT; | 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 | dev_info(palmas_usb->dev, "USB-HOST cable is detached\n"); | 105 | dev_info(palmas_usb->dev, "USB-HOST cable is detached\n"); |
106 | } else if ((palmas_usb->linkstat == PALMAS_USB_STATE_ID) && | 106 | } else if ((palmas_usb->linkstat == PALMAS_USB_STATE_ID) && |
107 | (!(set & PALMAS_USB_ID_INT_SRC_ID_GND))) { | 107 | (!(set & PALMAS_USB_ID_INT_SRC_ID_GND))) { |
108 | palmas_usb->linkstat = PALMAS_USB_STATE_DISCONNECT; | 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 | dev_info(palmas_usb->dev, "USB-HOST cable is detached\n"); | 110 | dev_info(palmas_usb->dev, "USB-HOST cable is detached\n"); |
111 | } else if ((palmas_usb->linkstat == PALMAS_USB_STATE_DISCONNECT) && | 111 | } else if ((palmas_usb->linkstat == PALMAS_USB_STATE_DISCONNECT) && |
112 | (id_src & PALMAS_USB_ID_INT_SRC_ID_GND)) { | 112 | (id_src & PALMAS_USB_ID_INT_SRC_ID_GND)) { |
113 | palmas_usb->linkstat = PALMAS_USB_STATE_ID; | 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 | dev_info(palmas_usb->dev, " USB-HOST cable is attached\n"); | 115 | dev_info(palmas_usb->dev, " USB-HOST cable is attached\n"); |
116 | } | 116 | } |
117 | 117 | ||
@@ -187,15 +187,20 @@ static int palmas_usb_probe(struct platform_device *pdev) | |||
187 | 187 | ||
188 | platform_set_drvdata(pdev, palmas_usb); | 188 | platform_set_drvdata(pdev, palmas_usb); |
189 | 189 | ||
190 | palmas_usb->edev.supported_cable = palmas_extcon_cable; | 190 | palmas_usb->edev = devm_extcon_dev_allocate(&pdev->dev, |
191 | palmas_usb->edev.dev.parent = palmas_usb->dev; | 191 | palmas_extcon_cable); |
192 | palmas_usb->edev.name = kstrdup(node->name, GFP_KERNEL); | 192 | if (IS_ERR(palmas_usb->edev)) { |
193 | palmas_usb->edev.mutually_exclusive = mutually_exclusive; | 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 | if (status) { | 201 | if (status) { |
197 | dev_err(&pdev->dev, "failed to register extcon device\n"); | 202 | dev_err(&pdev->dev, "failed to register extcon device\n"); |
198 | kfree(palmas_usb->edev.name); | 203 | kfree(palmas_usb->edev->name); |
199 | return status; | 204 | return status; |
200 | } | 205 | } |
201 | 206 | ||
@@ -209,7 +214,7 @@ static int palmas_usb_probe(struct platform_device *pdev) | |||
209 | if (status < 0) { | 214 | if (status < 0) { |
210 | dev_err(&pdev->dev, "can't get IRQ %d, err %d\n", | 215 | dev_err(&pdev->dev, "can't get IRQ %d, err %d\n", |
211 | palmas_usb->id_irq, status); | 216 | palmas_usb->id_irq, status); |
212 | kfree(palmas_usb->edev.name); | 217 | kfree(palmas_usb->edev->name); |
213 | return status; | 218 | return status; |
214 | } | 219 | } |
215 | } | 220 | } |
@@ -224,7 +229,7 @@ static int palmas_usb_probe(struct platform_device *pdev) | |||
224 | if (status < 0) { | 229 | if (status < 0) { |
225 | dev_err(&pdev->dev, "can't get IRQ %d, err %d\n", | 230 | dev_err(&pdev->dev, "can't get IRQ %d, err %d\n", |
226 | palmas_usb->vbus_irq, status); | 231 | palmas_usb->vbus_irq, status); |
227 | kfree(palmas_usb->edev.name); | 232 | kfree(palmas_usb->edev->name); |
228 | return status; | 233 | return status; |
229 | } | 234 | } |
230 | } | 235 | } |
@@ -238,7 +243,7 @@ static int palmas_usb_remove(struct platform_device *pdev) | |||
238 | { | 243 | { |
239 | struct palmas_usb *palmas_usb = platform_get_drvdata(pdev); | 244 | struct palmas_usb *palmas_usb = platform_get_drvdata(pdev); |
240 | 245 | ||
241 | kfree(palmas_usb->edev.name); | 246 | kfree(palmas_usb->edev->name); |
242 | 247 | ||
243 | return 0; | 248 | return 0; |
244 | } | 249 | } |