On Sun, Dec 07, 2008 at 12:28:38PM -0800, David Brownell wrote:
> On Sunday 07 December 2008, Felipe Balbi wrote:
> > > +     platform_set_drvdata(pdev, keys);
> > > +     keys->pdev = pdev;
> > 
> > you could be holding only the device pointer.
> > 
> >         keys->dev = &pdev->dev;
> > 
> > then, if you really happen to need the pdev pointer you can use
> > 
> > to_platform_device(keys->dev);
> 
> True, that would be a bit simpler; the device handle is what's
> normally needed, e.g. for dev_dbg().  I'd take an update patch;
> but for now I'll avoid a re-test cycle.  :)

Here's an update patch for your input driver:

================ cut here ===================

diff --git a/drivers/input/keyboard/dm355evm_keys.c 
b/drivers/input/keyboard/dm355evm_keys.c
index ed36127..0871d9c 100644
--- a/drivers/input/keyboard/dm355evm_keys.c
+++ b/drivers/input/keyboard/dm355evm_keys.c
@@ -33,7 +33,7 @@
 struct dm355evm_keys {
        struct work_struct      work;
        struct input_dev        *input;
-       struct platform_device  *pdev;
+       struct device           *dev;
        int                     irq;
 };
 
@@ -128,7 +128,7 @@ static void dm355evm_keys_work(struct work_struct *work)
 
                status = dm355evm_msp_read(DM355EVM_MSP_INPUT_HIGH);
                if (status < 0) {
-                       dev_dbg(&keys->pdev->dev, "input high err %d\n",
+                       dev_dbg(keys->dev, "input high err %d\n",
                                        status);
                        break;
                }
@@ -136,7 +136,7 @@ static void dm355evm_keys_work(struct work_struct *work)
 
                status = dm355evm_msp_read(DM355EVM_MSP_INPUT_LOW);
                if (status < 0) {
-                       dev_dbg(&keys->pdev->dev, "input low err %d\n",
+                       dev_dbg(keys->dev, "input low err %d\n",
                                        status);
                        break;
                }
@@ -155,7 +155,7 @@ static void dm355evm_keys_work(struct work_struct *work)
                        keycode = dm355evm_keys[i].keycode;
                        break;
                }
-               dev_dbg(&keys->pdev->dev,
+               dev_dbg(keys->dev,
                        "input event 0x%04x--> keycode %d\n",
                        event, keycode);
 
@@ -200,7 +200,7 @@ static int __devinit dm355evm_keys_probe(struct 
platform_device *pdev)
        if (!keys)
                goto fail0;
        platform_set_drvdata(pdev, keys);
-       keys->pdev = pdev;
+       keys->dev = &pdev->dev;
 
        /* ... and input dev ... */
        input = input_allocate_device();
@@ -257,6 +257,7 @@ fail1:
 fail0:
        kfree(keys);
        dev_err(&pdev->dev, "can't register, err %d\n", status);
+
        return status;
 }
 
@@ -267,6 +268,7 @@ static int __devexit dm355evm_keys_remove(struct 
platform_device *pdev)
        free_irq(keys->irq, keys);
        input_unregister_device(keys->input);
        kfree(keys);
+
        return 0;
 }
 

-- 
balbi

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to