@@ -142,18 +142,18 @@ static int lm8333_probe(struct i2c_client *client)
142142 return - EINVAL ;
143143 }
144144
145- lm8333 = kzalloc (sizeof (* lm8333 ), GFP_KERNEL );
146- input = input_allocate_device ();
147- if (!lm8333 || !input ) {
148- err = - ENOMEM ;
149- goto free_mem ;
150- }
145+ lm8333 = devm_kzalloc (& client -> dev , sizeof (* lm8333 ), GFP_KERNEL );
146+ if (!lm8333 )
147+ return - ENOMEM ;
148+
149+ input = devm_input_allocate_device (& client -> dev );
150+ if (!input )
151+ return - ENOMEM ;
151152
152153 lm8333 -> client = client ;
153154 lm8333 -> input = input ;
154155
155156 input -> name = client -> name ;
156- input -> dev .parent = & client -> dev ;
157157 input -> id .bustype = BUS_I2C ;
158158
159159 input_set_capability (input , EV_MSC , MSC_SCAN );
@@ -162,7 +162,7 @@ static int lm8333_probe(struct i2c_client *client)
162162 LM8333_NUM_ROWS , LM8333_NUM_COLS ,
163163 lm8333 -> keycodes , input );
164164 if (err )
165- goto free_mem ;
165+ return err ;
166166
167167 if (pdata -> debounce_time ) {
168168 err = lm8333_write8 (lm8333 , LM8333_DEBOUNCE ,
@@ -178,34 +178,19 @@ static int lm8333_probe(struct i2c_client *client)
178178 dev_warn (& client -> dev , "Unable to set active time\n" );
179179 }
180180
181- err = request_threaded_irq (client -> irq , NULL , lm8333_irq_thread ,
182- IRQF_TRIGGER_FALLING | IRQF_ONESHOT ,
183- "lm8333" , lm8333 );
181+ err = devm_request_threaded_irq (& client -> dev , client -> irq ,
182+ NULL , lm8333_irq_thread ,
183+ IRQF_TRIGGER_FALLING | IRQF_ONESHOT ,
184+ "lm8333" , lm8333 );
184185 if (err )
185- goto free_mem ;
186+ return err ;
186187
187188 err = input_register_device (input );
188189 if (err )
189- goto free_irq ;
190+ return err ;
190191
191192 i2c_set_clientdata (client , lm8333 );
192193 return 0 ;
193-
194- free_irq :
195- free_irq (client -> irq , lm8333 );
196- free_mem :
197- input_free_device (input );
198- kfree (lm8333 );
199- return err ;
200- }
201-
202- static void lm8333_remove (struct i2c_client * client )
203- {
204- struct lm8333 * lm8333 = i2c_get_clientdata (client );
205-
206- free_irq (client -> irq , lm8333 );
207- input_unregister_device (lm8333 -> input );
208- kfree (lm8333 );
209194}
210195
211196static const struct i2c_device_id lm8333_id [] = {
@@ -219,7 +204,6 @@ static struct i2c_driver lm8333_driver = {
219204 .name = "lm8333" ,
220205 },
221206 .probe = lm8333_probe ,
222- .remove = lm8333_remove ,
223207 .id_table = lm8333_id ,
224208};
225209module_i2c_driver (lm8333_driver );
0 commit comments