lkml.org 
[lkml]   [2010]   [Aug]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH 1/3] RTC:s35390a: Add Alarm interrupt support
    On Tue, Aug 17, 2010 at 10:48:39AM +0200, ext hvaibhav@ti.com wrote:
    >From: Vaibhav Hiremath <hvaibhav@ti.com>

    you need a description here.

    >Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>

    [snip]

    >+static void s35390a_work(struct work_struct *work)
    >+{
    >+ struct s35390a *s35390a;
    >+ struct i2c_client *client;
    >+ char buf[1];
    >+
    >+ s35390a = container_of(work, struct s35390a, work);
    >+ if (!s35390a)
    >+ return;

    container_of() will never return NULL. You can remove this check. You
    won't need this, actually after converting to threaded_irq, see below.

    >+static irqreturn_t s35390a_irq(int irq, void *client)
    >+{
    >+ struct s35390a *s35390a;

    all the other drivers will do:

    static irqreturn_t s35390a_irq(int irq, void *_s35390a)
    {
    struct s35390a *s35390a = _s35390a

    [...]

    >+ if (!client)
    >+ return IRQ_HANDLED;

    if client is NULL, you should let this oops.

    >+ schedule_work(&s35390a->work);

    please don't use workqueue. Use threaded IRQ.

    >@@ -261,15 +447,30 @@ static int s35390a_probe(struct i2c_client *client,
    > if (s35390a_get_datetime(client, &tm) < 0)
    > dev_warn(&client->dev, "clock needs to be set\n");
    >
    >+ INIT_WORK(&s35390a->work, s35390a_work);
    >+
    >+ if (client->irq > 0) {

    irq 0 is a valid number.

    >+ err = request_irq(client->irq, s35390a_irq, IRQF_TRIGGER_LOW,
    >+ client->name, client);

    instead of the i2c client, you can pass s35390. Also use
    request_threaded_irq();

    --
    balbi

    DefectiveByDesign.org


    \
     
     \ /
      Last update: 2010-08-17 11:31    [W:0.027 / U:0.496 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site