[1/8] gpiolib: Add support for removing registered consumer lookup table
diff mbox

Message ID 1430818368-26790-1-git-send-email-shobhit.kumar@intel.com
State New
Headers show

Commit Message

Kumar, Shobhit May 5, 2015, 9:32 a.m. UTC
In case we unload and load a driver module again that is registering a
lookup table, without this it will result in multiple entries. Provide
an option to remove the lookup table on driver unload

v2: Ccing maintainers
v3: Correct the subject line (Lee jones)

Cc: Samuel Ortiz <sameo@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
 drivers/gpio/gpiolib.c       | 13 +++++++++++++
 include/linux/gpio/machine.h |  1 +
 2 files changed, 14 insertions(+)

Comments

Lee Jones May 5, 2015, 10:45 a.m. UTC | #1
This is not how we submit subsequent patch-sets.

Please submit them as a whole, seperately from the first submission
and with versioning information i.e. [PATCH v2 X/Y] Stuff ...

> In case we unload and load a driver module again that is registering a
> lookup table, without this it will result in multiple entries. Provide
> an option to remove the lookup table on driver unload
> 
> v2: Ccing maintainers
> v3: Correct the subject line (Lee jones)

Change logs should go underneth the '---' and above the diffstat found
below.

> Cc: Samuel Ortiz <sameo@linux.intel.com>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Alexandre Courbot <gnurou@gmail.com>
> Cc: Thierry Reding <thierry.reding@gmail.com>
> Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
> Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
> ---
>  drivers/gpio/gpiolib.c       | 13 +++++++++++++
>  include/linux/gpio/machine.h |  1 +
>  2 files changed, 14 insertions(+)
> 
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> index 59eaa23..2420af9 100644
> --- a/drivers/gpio/gpiolib.c
> +++ b/drivers/gpio/gpiolib.c
> @@ -1658,6 +1658,19 @@ void gpiod_add_lookup_table(struct gpiod_lookup_table *table)
>  	mutex_unlock(&gpio_lookup_lock);
>  }
>  
> +/**
> + * gpiod_remove_lookup_table() - unregister GPIO device consumers
> + * @table: table of consumers to unregister
> + */
> +void gpiod_remove_lookup_table(struct gpiod_lookup_table *table)
> +{
> +	mutex_lock(&gpio_lookup_lock);
> +
> +	list_del(&table->list);
> +
> +	mutex_unlock(&gpio_lookup_lock);
> +}
> +
>  static struct gpio_desc *of_find_gpio(struct device *dev, const char *con_id,
>  				      unsigned int idx,
>  				      enum gpio_lookup_flags *flags)
> diff --git a/include/linux/gpio/machine.h b/include/linux/gpio/machine.h
> index e270614..c0d712d 100644
> --- a/include/linux/gpio/machine.h
> +++ b/include/linux/gpio/machine.h
> @@ -57,5 +57,6 @@ struct gpiod_lookup_table {
>  }
>  
>  void gpiod_add_lookup_table(struct gpiod_lookup_table *table);
> +void gpiod_remove_lookup_table(struct gpiod_lookup_table *table);
>  
>  #endif /* __LINUX_GPIO_MACHINE_H */
Daniel Vetter May 5, 2015, 3:44 p.m. UTC | #2
On Tue, May 05, 2015 at 11:45:05AM +0100, Lee Jones wrote:
> This is not how we submit subsequent patch-sets.

It is unfortunately how we handle patches on dri-devel&intel-gfx to be
able to cope with massive mail load. If everyone who submits to intel-gfx
would always resend the entire series for minor updates of som patches
we'd completely drown in the resulting flood.

> Please submit them as a whole, seperately from the first submission
> and with versioning information i.e. [PATCH v2 X/Y] Stuff ...
> 
> > In case we unload and load a driver module again that is registering a
> > lookup table, without this it will result in multiple entries. Provide
> > an option to remove the lookup table on driver unload
> > 
> > v2: Ccing maintainers
> > v3: Correct the subject line (Lee jones)
> 
> Change logs should go underneth the '---' and above the diffstat found
> below.

Again just style differences between subsystems, I generally want to have
those above the ---.
-Daniel
> 
> > Cc: Samuel Ortiz <sameo@linux.intel.com>
> > Cc: Linus Walleij <linus.walleij@linaro.org>
> > Cc: Alexandre Courbot <gnurou@gmail.com>
> > Cc: Thierry Reding <thierry.reding@gmail.com>
> > Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
> > Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
> > ---
> >  drivers/gpio/gpiolib.c       | 13 +++++++++++++
> >  include/linux/gpio/machine.h |  1 +
> >  2 files changed, 14 insertions(+)
> > 
> > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> > index 59eaa23..2420af9 100644
> > --- a/drivers/gpio/gpiolib.c
> > +++ b/drivers/gpio/gpiolib.c
> > @@ -1658,6 +1658,19 @@ void gpiod_add_lookup_table(struct gpiod_lookup_table *table)
> >  	mutex_unlock(&gpio_lookup_lock);
> >  }
> >  
> > +/**
> > + * gpiod_remove_lookup_table() - unregister GPIO device consumers
> > + * @table: table of consumers to unregister
> > + */
> > +void gpiod_remove_lookup_table(struct gpiod_lookup_table *table)
> > +{
> > +	mutex_lock(&gpio_lookup_lock);
> > +
> > +	list_del(&table->list);
> > +
> > +	mutex_unlock(&gpio_lookup_lock);
> > +}
> > +
> >  static struct gpio_desc *of_find_gpio(struct device *dev, const char *con_id,
> >  				      unsigned int idx,
> >  				      enum gpio_lookup_flags *flags)
> > diff --git a/include/linux/gpio/machine.h b/include/linux/gpio/machine.h
> > index e270614..c0d712d 100644
> > --- a/include/linux/gpio/machine.h
> > +++ b/include/linux/gpio/machine.h
> > @@ -57,5 +57,6 @@ struct gpiod_lookup_table {
> >  }
> >  
> >  void gpiod_add_lookup_table(struct gpiod_lookup_table *table);
> > +void gpiod_remove_lookup_table(struct gpiod_lookup_table *table);
> >  
> >  #endif /* __LINUX_GPIO_MACHINE_H */
> 
> -- 
> Lee Jones
> Linaro STMicroelectronics Landing Team Lead
> Linaro.org ? Open source software for ARM SoCs
> Follow Linaro: Facebook | Twitter | Blog
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Lee Jones May 7, 2015, 7:25 a.m. UTC | #3
On Tue, 05 May 2015, Daniel Vetter wrote:

> On Tue, May 05, 2015 at 11:45:05AM +0100, Lee Jones wrote:
> > This is not how we submit subsequent patch-sets.
> 
> It is unfortunately how we handle patches on dri-devel&intel-gfx to be
> able to cope with massive mail load. If everyone who submits to intel-gfx
> would always resend the entire series for minor updates of som patches
> we'd completely drown in the resulting flood.

For one or two simple fix-ups in the set perhaps, but when submitting
the entire set it needs to be threaded as a separate block, rather
than seeing current and superseded patches inter-woven.  This
submission is already a rat's nest and I'm struggling to see which
patches are which.  I'm really not looking forward to v3 and v4!
Attaching one version to another is a good way to keep control if you
really are over-whelmed.  For your use-case I would expect to see the
following, which is achieved using --in-reply-to:

[PATCH 0/2] Here is what I did...
  [PATCH 1/2] Clean up and tests
  [PATCH 2/2] Implementation
    [PATCH v2 0/3] Here is a reroll
      [PATCH v2 1/3] Clean up
      [PATCH v2 2/3] New tests
      [PATCH v2 3/3] Implementation

The version numbers also need to be present and aren't in this
re-submission.

> > Please submit them as a whole, seperately from the first submission
> > and with versioning information i.e. [PATCH v2 X/Y] Stuff ...
> > 
> > > In case we unload and load a driver module again that is registering a
> > > lookup table, without this it will result in multiple entries. Provide
> > > an option to remove the lookup table on driver unload
> > > 
> > > v2: Ccing maintainers
> > > v3: Correct the subject line (Lee jones)
> > 
> > Change logs should go underneth the '---' and above the diffstat found
> > below.
> 
> Again just style differences between subsystems, I generally want to have
> those above the ---.

For all commits?  Then I'm guessing your Git history is all but
unreadable.  In the kernel, unless the changelog holds valuable
historic information which influance key design decisions, we put the
patch changelog *below* the '---'.

Please read Documentation/SubmittingPatches:

       "14) The canonical patch format

       [...]

       The "---" marker line serves the essential purpose of marking
       for patch handling tools where the changelog message ends.

       [...]

       Other comments relevant only to the moment or the maintainer,
       not suitable for the permanent changelog, should also go here.
       A good example of such comments might be *"patch changelogs"*
       which describe what has changed between the v1 and v2 version
       of the patch."

> > > Cc: Samuel Ortiz <sameo@linux.intel.com>
> > > Cc: Linus Walleij <linus.walleij@linaro.org>
> > > Cc: Alexandre Courbot <gnurou@gmail.com>
> > > Cc: Thierry Reding <thierry.reding@gmail.com>
> > > Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
> > > Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
> > > ---
> > >  drivers/gpio/gpiolib.c       | 13 +++++++++++++
> > >  include/linux/gpio/machine.h |  1 +
> > >  2 files changed, 14 insertions(+)
> > > 
> > > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> > > index 59eaa23..2420af9 100644
> > > --- a/drivers/gpio/gpiolib.c
> > > +++ b/drivers/gpio/gpiolib.c
> > > @@ -1658,6 +1658,19 @@ void gpiod_add_lookup_table(struct gpiod_lookup_table *table)
> > >  	mutex_unlock(&gpio_lookup_lock);
> > >  }
> > >  
> > > +/**
> > > + * gpiod_remove_lookup_table() - unregister GPIO device consumers
> > > + * @table: table of consumers to unregister
> > > + */
> > > +void gpiod_remove_lookup_table(struct gpiod_lookup_table *table)
> > > +{
> > > +	mutex_lock(&gpio_lookup_lock);
> > > +
> > > +	list_del(&table->list);
> > > +
> > > +	mutex_unlock(&gpio_lookup_lock);
> > > +}
> > > +
> > >  static struct gpio_desc *of_find_gpio(struct device *dev, const char *con_id,
> > >  				      unsigned int idx,
> > >  				      enum gpio_lookup_flags *flags)
> > > diff --git a/include/linux/gpio/machine.h b/include/linux/gpio/machine.h
> > > index e270614..c0d712d 100644
> > > --- a/include/linux/gpio/machine.h
> > > +++ b/include/linux/gpio/machine.h
> > > @@ -57,5 +57,6 @@ struct gpiod_lookup_table {
> > >  }
> > >  
> > >  void gpiod_add_lookup_table(struct gpiod_lookup_table *table);
> > > +void gpiod_remove_lookup_table(struct gpiod_lookup_table *table);
> > >  
> > >  #endif /* __LINUX_GPIO_MACHINE_H */
> > 
>

Patch
diff mbox

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 59eaa23..2420af9 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -1658,6 +1658,19 @@  void gpiod_add_lookup_table(struct gpiod_lookup_table *table)
 	mutex_unlock(&gpio_lookup_lock);
 }
 
+/**
+ * gpiod_remove_lookup_table() - unregister GPIO device consumers
+ * @table: table of consumers to unregister
+ */
+void gpiod_remove_lookup_table(struct gpiod_lookup_table *table)
+{
+	mutex_lock(&gpio_lookup_lock);
+
+	list_del(&table->list);
+
+	mutex_unlock(&gpio_lookup_lock);
+}
+
 static struct gpio_desc *of_find_gpio(struct device *dev, const char *con_id,
 				      unsigned int idx,
 				      enum gpio_lookup_flags *flags)
diff --git a/include/linux/gpio/machine.h b/include/linux/gpio/machine.h
index e270614..c0d712d 100644
--- a/include/linux/gpio/machine.h
+++ b/include/linux/gpio/machine.h
@@ -57,5 +57,6 @@  struct gpiod_lookup_table {
 }
 
 void gpiod_add_lookup_table(struct gpiod_lookup_table *table);
+void gpiod_remove_lookup_table(struct gpiod_lookup_table *table);
 
 #endif /* __LINUX_GPIO_MACHINE_H */