diff options
author | Lee Jones <lee.jones@linaro.org> | 2013-05-23 11:25:10 -0400 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2013-06-13 06:11:42 -0400 |
commit | 22f9ee756bfd9ce9b066e2f90cf9f002aa7d1d44 (patch) | |
tree | 348c32309062c85868a155b5d95cc0b5ca338040 /drivers/mfd/cros_ec.c | |
parent | 1cee87fdf1f8b99585891e7defa1d08fef3c1451 (diff) |
mfd: cros_ec: Convert to managed resources for allocating memory
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/mfd/cros_ec.c')
-rw-r--r-- | drivers/mfd/cros_ec.c | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/drivers/mfd/cros_ec.c b/drivers/mfd/cros_ec.c index 10cd14e35eb0..1f36885d674b 100644 --- a/drivers/mfd/cros_ec.c +++ b/drivers/mfd/cros_ec.c | |||
@@ -104,23 +104,19 @@ int cros_ec_register(struct cros_ec_device *ec_dev) | |||
104 | ec_dev->command_sendrecv = cros_ec_command_sendrecv; | 104 | ec_dev->command_sendrecv = cros_ec_command_sendrecv; |
105 | 105 | ||
106 | if (ec_dev->din_size) { | 106 | if (ec_dev->din_size) { |
107 | ec_dev->din = kmalloc(ec_dev->din_size, GFP_KERNEL); | 107 | ec_dev->din = devm_kzalloc(dev, ec_dev->din_size, GFP_KERNEL); |
108 | if (!ec_dev->din) { | 108 | if (!ec_dev->din) |
109 | err = -ENOMEM; | 109 | return -ENOMEM; |
110 | goto fail_din; | ||
111 | } | ||
112 | } | 110 | } |
113 | if (ec_dev->dout_size) { | 111 | if (ec_dev->dout_size) { |
114 | ec_dev->dout = kmalloc(ec_dev->dout_size, GFP_KERNEL); | 112 | ec_dev->dout = devm_kzalloc(dev, ec_dev->dout_size, GFP_KERNEL); |
115 | if (!ec_dev->dout) { | 113 | if (!ec_dev->dout) |
116 | err = -ENOMEM; | 114 | return -ENOMEM; |
117 | goto fail_dout; | ||
118 | } | ||
119 | } | 115 | } |
120 | 116 | ||
121 | if (!ec_dev->irq) { | 117 | if (!ec_dev->irq) { |
122 | dev_dbg(dev, "no valid IRQ: %d\n", ec_dev->irq); | 118 | dev_dbg(dev, "no valid IRQ: %d\n", ec_dev->irq); |
123 | goto fail_irq; | 119 | return err; |
124 | } | 120 | } |
125 | 121 | ||
126 | err = request_threaded_irq(ec_dev->irq, NULL, ec_irq_thread, | 122 | err = request_threaded_irq(ec_dev->irq, NULL, ec_irq_thread, |
@@ -128,7 +124,7 @@ int cros_ec_register(struct cros_ec_device *ec_dev) | |||
128 | "chromeos-ec", ec_dev); | 124 | "chromeos-ec", ec_dev); |
129 | if (err) { | 125 | if (err) { |
130 | dev_err(dev, "request irq %d: error %d\n", ec_dev->irq, err); | 126 | dev_err(dev, "request irq %d: error %d\n", ec_dev->irq, err); |
131 | goto fail_irq; | 127 | return err; |
132 | } | 128 | } |
133 | 129 | ||
134 | err = mfd_add_devices(dev, 0, cros_devs, | 130 | err = mfd_add_devices(dev, 0, cros_devs, |
@@ -145,11 +141,7 @@ int cros_ec_register(struct cros_ec_device *ec_dev) | |||
145 | 141 | ||
146 | fail_mfd: | 142 | fail_mfd: |
147 | free_irq(ec_dev->irq, ec_dev); | 143 | free_irq(ec_dev->irq, ec_dev); |
148 | fail_irq: | 144 | |
149 | kfree(ec_dev->dout); | ||
150 | fail_dout: | ||
151 | kfree(ec_dev->din); | ||
152 | fail_din: | ||
153 | return err; | 145 | return err; |
154 | } | 146 | } |
155 | EXPORT_SYMBOL(cros_ec_register); | 147 | EXPORT_SYMBOL(cros_ec_register); |
@@ -158,8 +150,6 @@ int cros_ec_remove(struct cros_ec_device *ec_dev) | |||
158 | { | 150 | { |
159 | mfd_remove_devices(ec_dev->dev); | 151 | mfd_remove_devices(ec_dev->dev); |
160 | free_irq(ec_dev->irq, ec_dev); | 152 | free_irq(ec_dev->irq, ec_dev); |
161 | kfree(ec_dev->dout); | ||
162 | kfree(ec_dev->din); | ||
163 | 153 | ||
164 | return 0; | 154 | return 0; |
165 | } | 155 | } |