* [PATCH v2 0/2] media: ir-kbd-i2c: convert to devm_i2c_new_dummy_device & minor cleanup
@ 2019-07-30 17:55 Wolfram Sang
2019-07-30 17:55 ` [PATCH v2 1/2] media: ir-kbd-i2c: convert to i2c_new_dummy_device() Wolfram Sang
2019-07-30 17:55 ` [PATCH v2 2/2] media: ir-kbd-i2c: remove outdated comments Wolfram Sang
0 siblings, 2 replies; 5+ messages in thread
From: Wolfram Sang @ 2019-07-30 17:55 UTC (permalink / raw)
To: linux-i2c; +Cc: Sean Young, linux-media, Wolfram Sang
This series is part of a tree-wide movement to replace the I2C API call
'i2c_new_dummy' which returns NULL with its new counterpart returning an
ERRPTR.
It was manually converted and only build tested. A small cleanup was
added while working on this driver. Looking for ack/rev/test for this
series.
The series is based on v5.3-rc2.
Happy hacking,
Wolfram
Wolfram Sang (2):
media: ir-kbd-i2c: convert to i2c_new_dummy_device()
media: ir-kbd-i2c: remove outdated comments
drivers/media/i2c/ir-kbd-i2c.c | 17 +++++------------
1 file changed, 5 insertions(+), 12 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 1/2] media: ir-kbd-i2c: convert to i2c_new_dummy_device()
2019-07-30 17:55 [PATCH v2 0/2] media: ir-kbd-i2c: convert to devm_i2c_new_dummy_device & minor cleanup Wolfram Sang
@ 2019-07-30 17:55 ` Wolfram Sang
2019-08-03 16:17 ` Mauro Carvalho Chehab
2019-07-30 17:55 ` [PATCH v2 2/2] media: ir-kbd-i2c: remove outdated comments Wolfram Sang
1 sibling, 1 reply; 5+ messages in thread
From: Wolfram Sang @ 2019-07-30 17:55 UTC (permalink / raw)
To: linux-i2c
Cc: Sean Young, linux-media, Wolfram Sang, Mauro Carvalho Chehab,
linux-kernel
Convert this driver to use the new i2c_new_dummy_device() call and bail
out if the dummy device cannot be registered to make failure more
visible to the user.
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
Change since v1:
* reworded commit message because there was no NULL ptr access
drivers/media/i2c/ir-kbd-i2c.c | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/drivers/media/i2c/ir-kbd-i2c.c b/drivers/media/i2c/ir-kbd-i2c.c
index 876d7587a1da..f46717052efc 100644
--- a/drivers/media/i2c/ir-kbd-i2c.c
+++ b/drivers/media/i2c/ir-kbd-i2c.c
@@ -885,9 +885,12 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
INIT_DELAYED_WORK(&ir->work, ir_work);
if (probe_tx) {
- ir->tx_c = i2c_new_dummy(client->adapter, 0x70);
- if (!ir->tx_c) {
+ ir->tx_c = devm_i2c_new_dummy_device(&client->dev,
+ client->adapter, 0x70);
+ if (IS_ERR(ir->tx_c)) {
dev_err(&client->dev, "failed to setup tx i2c address");
+ err = PTR_ERR(ir->tx_c);
+ goto err_out_free;
} else if (!zilog_init(ir)) {
ir->carrier = 38000;
ir->duty_cycle = 40;
@@ -904,9 +907,6 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
return 0;
err_out_free:
- if (ir->tx_c)
- i2c_unregister_device(ir->tx_c);
-
/* Only frees rc if it were allocated internally */
rc_free_device(rc);
return err;
@@ -919,9 +919,6 @@ static int ir_remove(struct i2c_client *client)
/* kill outstanding polls */
cancel_delayed_work_sync(&ir->work);
- if (ir->tx_c)
- i2c_unregister_device(ir->tx_c);
-
/* unregister device */
rc_unregister_device(ir->rc);
--
2.20.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2 2/2] media: ir-kbd-i2c: remove outdated comments
2019-07-30 17:55 [PATCH v2 0/2] media: ir-kbd-i2c: convert to devm_i2c_new_dummy_device & minor cleanup Wolfram Sang
2019-07-30 17:55 ` [PATCH v2 1/2] media: ir-kbd-i2c: convert to i2c_new_dummy_device() Wolfram Sang
@ 2019-07-30 17:55 ` Wolfram Sang
1 sibling, 0 replies; 5+ messages in thread
From: Wolfram Sang @ 2019-07-30 17:55 UTC (permalink / raw)
To: linux-i2c
Cc: Sean Young, linux-media, Wolfram Sang, Mauro Carvalho Chehab,
linux-kernel
The "free memory" comment is obsolete since 2013 and the other ones
explain the obvious. Just remove the comments.
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
Change since v1:
* none
drivers/media/i2c/ir-kbd-i2c.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/drivers/media/i2c/ir-kbd-i2c.c b/drivers/media/i2c/ir-kbd-i2c.c
index f46717052efc..30fde0e025c9 100644
--- a/drivers/media/i2c/ir-kbd-i2c.c
+++ b/drivers/media/i2c/ir-kbd-i2c.c
@@ -916,13 +916,9 @@ static int ir_remove(struct i2c_client *client)
{
struct IR_i2c *ir = i2c_get_clientdata(client);
- /* kill outstanding polls */
cancel_delayed_work_sync(&ir->work);
-
- /* unregister device */
rc_unregister_device(ir->rc);
- /* free memory */
return 0;
}
--
2.20.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 1/2] media: ir-kbd-i2c: convert to i2c_new_dummy_device()
2019-07-30 17:55 ` [PATCH v2 1/2] media: ir-kbd-i2c: convert to i2c_new_dummy_device() Wolfram Sang
@ 2019-08-03 16:17 ` Mauro Carvalho Chehab
2019-08-04 2:57 ` Sean Young
0 siblings, 1 reply; 5+ messages in thread
From: Mauro Carvalho Chehab @ 2019-08-03 16:17 UTC (permalink / raw)
To: Wolfram Sang; +Cc: linux-i2c, Sean Young, linux-media, linux-kernel
Em Tue, 30 Jul 2019 19:55:54 +0200
Wolfram Sang <wsa+renesas@sang-engineering.com> escreveu:
> Convert this driver to use the new i2c_new_dummy_device() call and bail
> out if the dummy device cannot be registered to make failure more
> visible to the user.
>
Please don't do that.
At first glance, devm_* sounds a good idea, but we had enough issues
using it on media system.
I don't mind mind much if some SoC specific would use it, but doing
it on generic drivers is a very bad idea. We have removed almost all
devm_* calls from the media system.
The problem with devm is that it the de-allocation routines aren't
called during device unbind. They happen a way later, only when the
device itself is physically removed, or the driver is removed.
That caused lots of headaches to debug memory lifetime issues on
media.
> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
> ---
>
> Change since v1:
>
> * reworded commit message because there was no NULL ptr access
>
> drivers/media/i2c/ir-kbd-i2c.c | 13 +++++--------
> 1 file changed, 5 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/media/i2c/ir-kbd-i2c.c b/drivers/media/i2c/ir-kbd-i2c.c
> index 876d7587a1da..f46717052efc 100644
> --- a/drivers/media/i2c/ir-kbd-i2c.c
> +++ b/drivers/media/i2c/ir-kbd-i2c.c
> @@ -885,9 +885,12 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
> INIT_DELAYED_WORK(&ir->work, ir_work);
>
> if (probe_tx) {
> - ir->tx_c = i2c_new_dummy(client->adapter, 0x70);
> - if (!ir->tx_c) {
> + ir->tx_c = devm_i2c_new_dummy_device(&client->dev,
> + client->adapter, 0x70);
> + if (IS_ERR(ir->tx_c)) {
> dev_err(&client->dev, "failed to setup tx i2c address");
> + err = PTR_ERR(ir->tx_c);
> + goto err_out_free;
> } else if (!zilog_init(ir)) {
> ir->carrier = 38000;
> ir->duty_cycle = 40;
> @@ -904,9 +907,6 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
> return 0;
>
> err_out_free:
> - if (ir->tx_c)
> - i2c_unregister_device(ir->tx_c);
> -
> /* Only frees rc if it were allocated internally */
> rc_free_device(rc);
> return err;
> @@ -919,9 +919,6 @@ static int ir_remove(struct i2c_client *client)
> /* kill outstanding polls */
> cancel_delayed_work_sync(&ir->work);
>
> - if (ir->tx_c)
> - i2c_unregister_device(ir->tx_c);
> -
> /* unregister device */
> rc_unregister_device(ir->rc);
>
Thanks,
Mauro
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 1/2] media: ir-kbd-i2c: convert to i2c_new_dummy_device()
2019-08-03 16:17 ` Mauro Carvalho Chehab
@ 2019-08-04 2:57 ` Sean Young
0 siblings, 0 replies; 5+ messages in thread
From: Sean Young @ 2019-08-04 2:57 UTC (permalink / raw)
To: Mauro Carvalho Chehab; +Cc: Wolfram Sang, linux-i2c, linux-media, linux-kernel
On Sat, Aug 03, 2019 at 01:17:49PM -0300, Mauro Carvalho Chehab wrote:
> Em Tue, 30 Jul 2019 19:55:54 +0200
> Wolfram Sang <wsa+renesas@sang-engineering.com> escreveu:
>
> > Convert this driver to use the new i2c_new_dummy_device() call and bail
> > out if the dummy device cannot be registered to make failure more
> > visible to the user.
> >
>
> Please don't do that.
>
> At first glance, devm_* sounds a good idea, but we had enough issues
> using it on media system.
>
> I don't mind mind much if some SoC specific would use it, but doing
> it on generic drivers is a very bad idea. We have removed almost all
> devm_* calls from the media system.
>
> The problem with devm is that it the de-allocation routines aren't
> called during device unbind. They happen a way later, only when the
> device itself is physically removed, or the driver is removed.
Yes, good point.
> That caused lots of headaches to debug memory lifetime issues on
> media.
Indeed this becomes much more complex. Explicit freeing is much better.
Thanks,
Sean
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-08-04 2:57 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-07-30 17:55 [PATCH v2 0/2] media: ir-kbd-i2c: convert to devm_i2c_new_dummy_device & minor cleanup Wolfram Sang
2019-07-30 17:55 ` [PATCH v2 1/2] media: ir-kbd-i2c: convert to i2c_new_dummy_device() Wolfram Sang
2019-08-03 16:17 ` Mauro Carvalho Chehab
2019-08-04 2:57 ` Sean Young
2019-07-30 17:55 ` [PATCH v2 2/2] media: ir-kbd-i2c: remove outdated comments Wolfram Sang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.