Messages in this thread | | | Date | Wed, 7 May 2014 15:22:13 -0700 | From | Andrew Morton <> | Subject | Re: [PATCH] rtc: add support for maxim dallas rtc ds1343 and ds1344 |
| |
On Wed, 7 May 2014 23:15:29 +0100 Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:
> On Wed, 7 May 2014 14:42:48 -0700 > Andrew Morton <akpm@linux-foundation.org> wrote: > > > On Wed, 7 May 2014 00:33:56 +0530 Raghavendra Ganiga <ravi23ganiga@gmail.com> wrote: > > > > > This is a patch to add support for > > > maxim dallas rtc ds1343 and ds1344 > > > > > > ... > > > > > > +static int ds1343_ioctl(struct device *dev, unsigned int cmd, unsigned long arg) > > > +{ > > > + switch (cmd) { > > > +#ifdef RTC_SET_CHARGE > > > + case RTC_SET_CHARGE: > > > + { > > > + int val; > > > + > > > + if (copy_from_user(&val, (int __user *)arg, sizeof(int))) > > > + return -EFAULT; > > > + > > > + return regmap_write(priv->map, DS1343_TRICKLE_REG, val); > > > + } > > > + break; > > > +#endif > > > + } > > > > Why is RTC_SET_CHARGE defined only for m32r? It seems pretty generic? > > > > > + return -ENOIOCTLCMD; > > > +} > > > > It's possible that this should be -ENOTTY. I always forget the rule, > > but Alan never forgets anything ;) > > I forget lots 8) > > -ENOTTY if it will be returned to user space, -ENOIOCTLCMD is used by > some core code internally as a way for the sub drivers to tell the core > "I didn't handle this, maybe you have a default method ?"
Ah OK, thanks.
drivers/rtc/rtc-dev.c does
default: /* Finally try the driver's ioctl interface */ if (ops->ioctl) { err = ops->ioctl(rtc->dev.parent, cmd, arg); if (err == -ENOIOCTLCMD) err = -ENOTTY; } else err = -ENOTTY;
so ENOIOCTLCMD is appropriate here.
Even though rtc is upside down - it prioritises the core's ioctl parsing ahead of the drivers'.
| |