From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 11/27] clocksource: sh_cmt: Add support for multiple channels per device
Date: Mon, 17 Feb 2014 09:58:06 +0000 [thread overview]
Message-ID: <3050110.8B4nKkQ5Sd@avalon> (raw)
In-Reply-To: <CANqRtoQ=QJ0YVjp+8y+H9OTk=iRf6Jdeg_J9PMyYa-9WbgfXyA@mail.gmail.com>
Hi Magnus,
On Monday 17 February 2014 11:07:06 Magnus Damm wrote:
> On Mon, Feb 17, 2014 at 10:48 AM, Laurent Pinchart wrote:
> > On Monday 17 February 2014 10:41:31 Magnus Damm wrote:
> >> On Mon, Feb 17, 2014 at 3:18 AM, Laurent Pinchart wrote:
> >> > On Saturday 15 February 2014 13:46:54 Thomas Gleixner wrote:
> >> >> On Fri, 14 Feb 2014, Laurent Pinchart wrote:
> >> >> > CMT hardware devices can support multiple channels, with global
> >> >> > registers and per-channel registers. The sh_cmt driver currently
> >> >> > models the hardware with one Linux device per channel. This model
> >> >> > makes it difficult to handle global registers in a clean way.
> >> >> >
> >> >> > Add support for a new model that uses one Linux device per timer
> >> >> > with multiple channels per device. This requires changes to platform
> >> >> > data, add new channel configuration fields.
> >> >> >
> >> >> > Support for the legacy model is kept and will be removed after all
> >> >> > platforms switch to the new model.
> >> >> >
> >> >> > Signed-off-by: Laurent Pinchart
> >> >> > <laurent.pinchart+renesas@ideasonboard.com>
> >> >> > ---
> >> >> >
> >> >> > drivers/clocksource/sh_cmt.c | 299 ++++++++++++++++++++++++--------
> >> >> > include/linux/sh_timer.h | 9 ++
> >> >> > 2 files changed, 239 insertions(+), 69 deletions(-)
> >> >> >
> >> >> > diff --git a/drivers/clocksource/sh_cmt.c
> >> >> > b/drivers/clocksource/sh_cmt.c
> >> >> > index 5280231..8390f0f 100644
> >> >> > --- a/drivers/clocksource/sh_cmt.c
> >> >> > +++ b/drivers/clocksource/sh_cmt.c
> >
> > [snip]
> >
> >> >> > @@ -85,11 +94,15 @@ struct sh_cmt_info {
> >> >> >
> >> >> > struct sh_cmt_channel {
> >> >> > struct sh_cmt_device *cmt;
> >> >> >
> >> >> > - unsigned int index;
> >> >> > - void __iomem *base;
> >> >> > + unsigned int index; /* Index in the documentation */
> >> >> > + unsigned int hwidx; /* Real hardware index */
> >> >> > +
> >> >> > + void __iomem *iostart;
> >> >> > + void __iomem *ioctrl;
> >> >> >
> >> >> > struct irqaction irqaction;
> >> >>
> >> >> While you are at it, can you please get rid of that irqaction and use
> >> >> request_irq() ?
> >> >
> >> > The driver claims it can't use request_irq() because the function is
> >> > not available for early platform devices. If the situation has changed
> >> > I'd gladly get rid of irqaction.
> >>
> >> With the risk of stating the obvious, this depends on how early the
> >> early platform device stuff is being run. The actual location may not
> >> be the same on SH and ARM for instance.
> >>
> >> On ARM we are doing all we can to initialize these devices as late as
> >> ever possible in the MULTIPLAFORM (DT reference) case. Once we manage
> >> to remove the legacy ARM case then there is one less user of early
> >> platform timers.
> >>
> >> One perhaps reasonable way forward could be to use request_irq() in
> >> case of DT and leave the legacy platform data case to rely on
> >> irqaction.
> >
> > The whole point of switching from setup_irq() to request_irq() is to
> > simplify the code. Adding request_irq() as an option would go in the
> > opposite direction.
>
> The point of switching to setup_irq() was not very clear to me. I
> think it is fine to switch to using it over time, and I'm open to any
> alternative ways forward. Usually moving in incremental steps means
> more crap in the short term, but if someone could come up with a way
> that involves little crap then I'm all for that! =)
I've had a quick look at request_irq(). The function is defined as a static
inline in include/linux/interrupt.h:
static inline int __must_check
request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)
{
return request_threaded_irq(irq, handler, NULL, flags, name, dev);
}
request_threaded_irq() is implemented in kernel/irq/manage.c. I've removed the
code paths that would never be taken when called by the sh_cmt driver, due to
- handler not being NULL
- thread_fn being NULL
- CONFIG_DEBUG_SHIRQ_FIXME not being set
- IRQF_SHARED not being set
int request_threaded_irq(unsigned int irq, irq_handler_t handler,
irq_handler_t thread_fn, unsigned long irqflags,
const char *devname, void *dev_id)
{
struct irqaction *action;
struct irq_desc *desc;
int retval;
desc = irq_to_desc(irq);
if (!desc)
return -EINVAL;
if (!irq_settings_can_request(desc) ||
WARN_ON(irq_settings_is_per_cpu_devid(desc)))
return -EINVAL;
action = kzalloc(sizeof(struct irqaction), GFP_KERNEL);
if (!action)
return -ENOMEM;
action->handler = handler;
action->thread_fn = thread_fn;
action->flags = irqflags;
action->name = devname;
action->dev_id = dev_id;
chip_bus_lock(desc);
retval = __setup_irq(irq, desc, action);
chip_bus_sync_unlock(desc);
if (retval)
kfree(action);
return retval;
}
setup_irq() is implemented in the same file as
int setup_irq(unsigned int irq, struct irqaction *act)
{
int retval;
struct irq_desc *desc = irq_to_desc(irq);
if (WARN_ON(irq_settings_is_per_cpu_devid(desc)))
return -EINVAL;
chip_bus_lock(desc);
retval = __setup_irq(irq, desc, act);
chip_bus_sync_unlock(desc);
return retval;
}
The only two differences between request_irq() and setup_irq() would thus be
- the extra !irq_settings_can_request(desc) check
- the extra kzalloc() call
The former should only be true for chained IRQ handlers, which isn't the case
here. The latter is just a kmalloc + kmap_atomic + memset as far as I can
tell.
It thus seems safe to replace setup_irq() with request_irq().
--
Regards,
Laurent Pinchart
WARNING: multiple messages have this Message-ID (diff)
From: laurent.pinchart@ideasonboard.com (Laurent Pinchart)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 11/27] clocksource: sh_cmt: Add support for multiple channels per device
Date: Mon, 17 Feb 2014 10:58:06 +0100 [thread overview]
Message-ID: <3050110.8B4nKkQ5Sd@avalon> (raw)
In-Reply-To: <CANqRtoQ=QJ0YVjp+8y+H9OTk=iRf6Jdeg_J9PMyYa-9WbgfXyA@mail.gmail.com>
Hi Magnus,
On Monday 17 February 2014 11:07:06 Magnus Damm wrote:
> On Mon, Feb 17, 2014 at 10:48 AM, Laurent Pinchart wrote:
> > On Monday 17 February 2014 10:41:31 Magnus Damm wrote:
> >> On Mon, Feb 17, 2014 at 3:18 AM, Laurent Pinchart wrote:
> >> > On Saturday 15 February 2014 13:46:54 Thomas Gleixner wrote:
> >> >> On Fri, 14 Feb 2014, Laurent Pinchart wrote:
> >> >> > CMT hardware devices can support multiple channels, with global
> >> >> > registers and per-channel registers. The sh_cmt driver currently
> >> >> > models the hardware with one Linux device per channel. This model
> >> >> > makes it difficult to handle global registers in a clean way.
> >> >> >
> >> >> > Add support for a new model that uses one Linux device per timer
> >> >> > with multiple channels per device. This requires changes to platform
> >> >> > data, add new channel configuration fields.
> >> >> >
> >> >> > Support for the legacy model is kept and will be removed after all
> >> >> > platforms switch to the new model.
> >> >> >
> >> >> > Signed-off-by: Laurent Pinchart
> >> >> > <laurent.pinchart+renesas@ideasonboard.com>
> >> >> > ---
> >> >> >
> >> >> > drivers/clocksource/sh_cmt.c | 299 ++++++++++++++++++++++++--------
> >> >> > include/linux/sh_timer.h | 9 ++
> >> >> > 2 files changed, 239 insertions(+), 69 deletions(-)
> >> >> >
> >> >> > diff --git a/drivers/clocksource/sh_cmt.c
> >> >> > b/drivers/clocksource/sh_cmt.c
> >> >> > index 5280231..8390f0f 100644
> >> >> > --- a/drivers/clocksource/sh_cmt.c
> >> >> > +++ b/drivers/clocksource/sh_cmt.c
> >
> > [snip]
> >
> >> >> > @@ -85,11 +94,15 @@ struct sh_cmt_info {
> >> >> >
> >> >> > struct sh_cmt_channel {
> >> >> > struct sh_cmt_device *cmt;
> >> >> >
> >> >> > - unsigned int index;
> >> >> > - void __iomem *base;
> >> >> > + unsigned int index; /* Index in the documentation */
> >> >> > + unsigned int hwidx; /* Real hardware index */
> >> >> > +
> >> >> > + void __iomem *iostart;
> >> >> > + void __iomem *ioctrl;
> >> >> >
> >> >> > struct irqaction irqaction;
> >> >>
> >> >> While you are at it, can you please get rid of that irqaction and use
> >> >> request_irq() ?
> >> >
> >> > The driver claims it can't use request_irq() because the function is
> >> > not available for early platform devices. If the situation has changed
> >> > I'd gladly get rid of irqaction.
> >>
> >> With the risk of stating the obvious, this depends on how early the
> >> early platform device stuff is being run. The actual location may not
> >> be the same on SH and ARM for instance.
> >>
> >> On ARM we are doing all we can to initialize these devices as late as
> >> ever possible in the MULTIPLAFORM (DT reference) case. Once we manage
> >> to remove the legacy ARM case then there is one less user of early
> >> platform timers.
> >>
> >> One perhaps reasonable way forward could be to use request_irq() in
> >> case of DT and leave the legacy platform data case to rely on
> >> irqaction.
> >
> > The whole point of switching from setup_irq() to request_irq() is to
> > simplify the code. Adding request_irq() as an option would go in the
> > opposite direction.
>
> The point of switching to setup_irq() was not very clear to me. I
> think it is fine to switch to using it over time, and I'm open to any
> alternative ways forward. Usually moving in incremental steps means
> more crap in the short term, but if someone could come up with a way
> that involves little crap then I'm all for that! =)
I've had a quick look at request_irq(). The function is defined as a static
inline in include/linux/interrupt.h:
static inline int __must_check
request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)
{
return request_threaded_irq(irq, handler, NULL, flags, name, dev);
}
request_threaded_irq() is implemented in kernel/irq/manage.c. I've removed the
code paths that would never be taken when called by the sh_cmt driver, due to
- handler not being NULL
- thread_fn being NULL
- CONFIG_DEBUG_SHIRQ_FIXME not being set
- IRQF_SHARED not being set
int request_threaded_irq(unsigned int irq, irq_handler_t handler,
irq_handler_t thread_fn, unsigned long irqflags,
const char *devname, void *dev_id)
{
struct irqaction *action;
struct irq_desc *desc;
int retval;
desc = irq_to_desc(irq);
if (!desc)
return -EINVAL;
if (!irq_settings_can_request(desc) ||
WARN_ON(irq_settings_is_per_cpu_devid(desc)))
return -EINVAL;
action = kzalloc(sizeof(struct irqaction), GFP_KERNEL);
if (!action)
return -ENOMEM;
action->handler = handler;
action->thread_fn = thread_fn;
action->flags = irqflags;
action->name = devname;
action->dev_id = dev_id;
chip_bus_lock(desc);
retval = __setup_irq(irq, desc, action);
chip_bus_sync_unlock(desc);
if (retval)
kfree(action);
return retval;
}
setup_irq() is implemented in the same file as
int setup_irq(unsigned int irq, struct irqaction *act)
{
int retval;
struct irq_desc *desc = irq_to_desc(irq);
if (WARN_ON(irq_settings_is_per_cpu_devid(desc)))
return -EINVAL;
chip_bus_lock(desc);
retval = __setup_irq(irq, desc, act);
chip_bus_sync_unlock(desc);
return retval;
}
The only two differences between request_irq() and setup_irq() would thus be
- the extra !irq_settings_can_request(desc) check
- the extra kzalloc() call
The former should only be true for chained IRQ handlers, which isn't the case
here. The latter is just a kmalloc + kmap_atomic + memset as far as I can
tell.
It thus seems safe to replace setup_irq() with request_irq().
--
Regards,
Laurent Pinchart
WARNING: multiple messages have this Message-ID (diff)
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Magnus Damm <magnus.damm@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>,
SH-Linux <linux-sh@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
Daniel Lezcano <daniel.lezcano@linaro.org>
Subject: Re: [PATCH 11/27] clocksource: sh_cmt: Add support for multiple channels per device
Date: Mon, 17 Feb 2014 10:58:06 +0100 [thread overview]
Message-ID: <3050110.8B4nKkQ5Sd@avalon> (raw)
In-Reply-To: <CANqRtoQ=QJ0YVjp+8y+H9OTk=iRf6Jdeg_J9PMyYa-9WbgfXyA@mail.gmail.com>
Hi Magnus,
On Monday 17 February 2014 11:07:06 Magnus Damm wrote:
> On Mon, Feb 17, 2014 at 10:48 AM, Laurent Pinchart wrote:
> > On Monday 17 February 2014 10:41:31 Magnus Damm wrote:
> >> On Mon, Feb 17, 2014 at 3:18 AM, Laurent Pinchart wrote:
> >> > On Saturday 15 February 2014 13:46:54 Thomas Gleixner wrote:
> >> >> On Fri, 14 Feb 2014, Laurent Pinchart wrote:
> >> >> > CMT hardware devices can support multiple channels, with global
> >> >> > registers and per-channel registers. The sh_cmt driver currently
> >> >> > models the hardware with one Linux device per channel. This model
> >> >> > makes it difficult to handle global registers in a clean way.
> >> >> >
> >> >> > Add support for a new model that uses one Linux device per timer
> >> >> > with multiple channels per device. This requires changes to platform
> >> >> > data, add new channel configuration fields.
> >> >> >
> >> >> > Support for the legacy model is kept and will be removed after all
> >> >> > platforms switch to the new model.
> >> >> >
> >> >> > Signed-off-by: Laurent Pinchart
> >> >> > <laurent.pinchart+renesas@ideasonboard.com>
> >> >> > ---
> >> >> >
> >> >> > drivers/clocksource/sh_cmt.c | 299 ++++++++++++++++++++++++--------
> >> >> > include/linux/sh_timer.h | 9 ++
> >> >> > 2 files changed, 239 insertions(+), 69 deletions(-)
> >> >> >
> >> >> > diff --git a/drivers/clocksource/sh_cmt.c
> >> >> > b/drivers/clocksource/sh_cmt.c
> >> >> > index 5280231..8390f0f 100644
> >> >> > --- a/drivers/clocksource/sh_cmt.c
> >> >> > +++ b/drivers/clocksource/sh_cmt.c
> >
> > [snip]
> >
> >> >> > @@ -85,11 +94,15 @@ struct sh_cmt_info {
> >> >> >
> >> >> > struct sh_cmt_channel {
> >> >> > struct sh_cmt_device *cmt;
> >> >> >
> >> >> > - unsigned int index;
> >> >> > - void __iomem *base;
> >> >> > + unsigned int index; /* Index in the documentation */
> >> >> > + unsigned int hwidx; /* Real hardware index */
> >> >> > +
> >> >> > + void __iomem *iostart;
> >> >> > + void __iomem *ioctrl;
> >> >> >
> >> >> > struct irqaction irqaction;
> >> >>
> >> >> While you are at it, can you please get rid of that irqaction and use
> >> >> request_irq() ?
> >> >
> >> > The driver claims it can't use request_irq() because the function is
> >> > not available for early platform devices. If the situation has changed
> >> > I'd gladly get rid of irqaction.
> >>
> >> With the risk of stating the obvious, this depends on how early the
> >> early platform device stuff is being run. The actual location may not
> >> be the same on SH and ARM for instance.
> >>
> >> On ARM we are doing all we can to initialize these devices as late as
> >> ever possible in the MULTIPLAFORM (DT reference) case. Once we manage
> >> to remove the legacy ARM case then there is one less user of early
> >> platform timers.
> >>
> >> One perhaps reasonable way forward could be to use request_irq() in
> >> case of DT and leave the legacy platform data case to rely on
> >> irqaction.
> >
> > The whole point of switching from setup_irq() to request_irq() is to
> > simplify the code. Adding request_irq() as an option would go in the
> > opposite direction.
>
> The point of switching to setup_irq() was not very clear to me. I
> think it is fine to switch to using it over time, and I'm open to any
> alternative ways forward. Usually moving in incremental steps means
> more crap in the short term, but if someone could come up with a way
> that involves little crap then I'm all for that! =)
I've had a quick look at request_irq(). The function is defined as a static
inline in include/linux/interrupt.h:
static inline int __must_check
request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)
{
return request_threaded_irq(irq, handler, NULL, flags, name, dev);
}
request_threaded_irq() is implemented in kernel/irq/manage.c. I've removed the
code paths that would never be taken when called by the sh_cmt driver, due to
- handler not being NULL
- thread_fn being NULL
- CONFIG_DEBUG_SHIRQ_FIXME not being set
- IRQF_SHARED not being set
int request_threaded_irq(unsigned int irq, irq_handler_t handler,
irq_handler_t thread_fn, unsigned long irqflags,
const char *devname, void *dev_id)
{
struct irqaction *action;
struct irq_desc *desc;
int retval;
desc = irq_to_desc(irq);
if (!desc)
return -EINVAL;
if (!irq_settings_can_request(desc) ||
WARN_ON(irq_settings_is_per_cpu_devid(desc)))
return -EINVAL;
action = kzalloc(sizeof(struct irqaction), GFP_KERNEL);
if (!action)
return -ENOMEM;
action->handler = handler;
action->thread_fn = thread_fn;
action->flags = irqflags;
action->name = devname;
action->dev_id = dev_id;
chip_bus_lock(desc);
retval = __setup_irq(irq, desc, action);
chip_bus_sync_unlock(desc);
if (retval)
kfree(action);
return retval;
}
setup_irq() is implemented in the same file as
int setup_irq(unsigned int irq, struct irqaction *act)
{
int retval;
struct irq_desc *desc = irq_to_desc(irq);
if (WARN_ON(irq_settings_is_per_cpu_devid(desc)))
return -EINVAL;
chip_bus_lock(desc);
retval = __setup_irq(irq, desc, act);
chip_bus_sync_unlock(desc);
return retval;
}
The only two differences between request_irq() and setup_irq() would thus be
- the extra !irq_settings_can_request(desc) check
- the extra kzalloc() call
The former should only be true for chained IRQ handlers, which isn't the case
here. The latter is just a kmalloc + kmap_atomic + memset as far as I can
tell.
It thus seems safe to replace setup_irq() with request_irq().
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2014-02-17 9:58 UTC|newest]
Thread overview: 168+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-14 0:59 [PATCH 00/27] Renesas CMT (Compare Match Timer) DT bindings Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 01/27] clocksource: sh_cmt: Split channel fields from sh_cmt_priv Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 02/27] clocksource: sh_cmt: Rename struct sh_cmt_priv to sh_cmt_device Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 03/27] clocksource: sh_cmt: Split channel setup to separate function Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 04/27] clocksource: sh_cmt: Rename mapbase/mapbase_str to mapbase_ch/mapbase Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 05/27] clocksource: sh_cmt: Add memory base to sh_cmt_channel structure Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 06/27] clocksource: sh_cmt: Add index to struct sh_cmt_channel Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 07/27] clocksource: sh_cmt: Replace kmalloc + memset with kzalloc Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 08/27] clocksource: sh_cmt: Allocate channels dynamically Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 09/27] clocksource: sh_cmt: Split static information from sh_cmt_device Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 10/27] clocksource: sh_cmt: Replace hardcoded register values with macros Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 11/27] clocksource: sh_cmt: Add support for multiple channels per device Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-15 12:46 ` Thomas Gleixner
2014-02-15 12:46 ` Thomas Gleixner
2014-02-15 12:46 ` Thomas Gleixner
2014-02-16 18:18 ` Laurent Pinchart
2014-02-16 18:18 ` Laurent Pinchart
2014-02-16 18:18 ` Laurent Pinchart
2014-02-17 1:41 ` Magnus Damm
2014-02-17 1:41 ` Magnus Damm
2014-02-17 1:41 ` Magnus Damm
2014-02-17 1:48 ` Laurent Pinchart
2014-02-17 1:48 ` Laurent Pinchart
2014-02-17 1:48 ` Laurent Pinchart
2014-02-17 2:07 ` Magnus Damm
2014-02-17 2:07 ` Magnus Damm
2014-02-17 2:07 ` Magnus Damm
2014-02-17 9:58 ` Laurent Pinchart [this message]
2014-02-17 9:58 ` Laurent Pinchart
2014-02-17 9:58 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 12/27] clocksource: sh_cmt: Acquire default clock in the non-legacy case Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 13/27] clocksource: sh_cmt: Remove FSF mail address from GPL notice Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 14/27] clocksource: sh_cmt: Sort headers alphabetically Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 15/27] sh: Switch to new style CMT device Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 16/27] ARM: shmobile: sh7372: " Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 17/27] ARM: shmobile: sh73a0: " Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 18/27] ARM: shmobile: r8a73a4: " Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 19/27] ARM: shmobile: r8a7740: " Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 20/27] ARM: shmobile: r8a7790: " Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` [PATCH 21/27] ARM: shmobile: r8a7791: " Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 0:59 ` Laurent Pinchart
2014-02-14 1:00 ` [PATCH 22/27] clocksource: sh_cmt: Drop support for legacy platform data Laurent Pinchart
2014-02-14 1:00 ` Laurent Pinchart
2014-02-14 1:00 ` Laurent Pinchart
2014-02-14 1:00 ` [PATCH 23/27] clocksource: sh_cmt: Add DT support Laurent Pinchart
2014-02-14 1:00 ` Laurent Pinchart
2014-02-14 1:00 ` Laurent Pinchart
2014-02-14 9:18 ` Geert Uytterhoeven
2014-02-14 9:18 ` Geert Uytterhoeven
2014-02-14 9:18 ` Geert Uytterhoeven
2014-02-14 14:35 ` Laurent Pinchart
2014-02-14 14:35 ` Laurent Pinchart
2014-02-14 14:35 ` Laurent Pinchart
2014-02-14 10:58 ` Mark Rutland
2014-02-14 10:58 ` Mark Rutland
2014-02-14 10:58 ` Mark Rutland
2014-02-14 15:53 ` Laurent Pinchart
2014-02-14 15:53 ` Laurent Pinchart
2014-02-14 15:53 ` Laurent Pinchart
2014-02-14 15:59 ` Josh Cartwright
2014-02-14 15:59 ` Josh Cartwright
2014-02-14 15:59 ` Josh Cartwright
2014-02-14 16:15 ` Laurent Pinchart
2014-02-14 16:15 ` Laurent Pinchart
2014-02-14 16:15 ` Laurent Pinchart
2014-02-14 16:01 ` Magnus Damm
2014-02-14 16:01 ` Magnus Damm
2014-02-14 16:01 ` Magnus Damm
2014-02-14 16:12 ` Laurent Pinchart
2014-02-14 16:12 ` Laurent Pinchart
2014-02-14 16:12 ` Laurent Pinchart
2014-02-14 17:22 ` Magnus Damm
2014-02-14 17:22 ` Magnus Damm
2014-02-14 17:22 ` Magnus Damm
2014-02-17 1:45 ` Laurent Pinchart
2014-02-17 1:45 ` Laurent Pinchart
2014-02-17 1:45 ` Laurent Pinchart
2014-02-17 1:48 ` Magnus Damm
2014-02-17 1:48 ` Magnus Damm
2014-02-17 1:48 ` Magnus Damm
2014-02-17 21:43 ` Laurent Pinchart
2014-02-17 21:43 ` Laurent Pinchart
2014-02-17 21:43 ` Laurent Pinchart
2014-02-18 0:51 ` Magnus Damm
2014-02-18 0:51 ` Magnus Damm
2014-02-18 0:51 ` Magnus Damm
2014-02-18 11:45 ` Laurent Pinchart
2014-02-18 11:45 ` Laurent Pinchart
2014-02-18 11:45 ` Laurent Pinchart
2014-02-14 1:00 ` [PATCH 24/27] ARM: shmobile: r8a7790: Add CMT devices to DT Laurent Pinchart
2014-02-14 1:00 ` Laurent Pinchart
2014-02-14 1:00 ` Laurent Pinchart
2014-02-14 1:00 ` [PATCH 25/27] ARM: shmobile: r8a7791: " Laurent Pinchart
2014-02-14 1:00 ` Laurent Pinchart
2014-02-14 1:00 ` Laurent Pinchart
2014-02-14 1:00 ` [PATCH 26/27] ARM: shmobile: lager-reference: Enable CMT0 in device tree Laurent Pinchart
2014-02-14 1:00 ` Laurent Pinchart
2014-02-14 1:00 ` Laurent Pinchart
2014-02-14 13:45 ` Sergei Shtylyov
2014-02-14 13:45 ` Sergei Shtylyov
2014-02-14 13:45 ` Sergei Shtylyov
2014-02-14 13:48 ` Laurent Pinchart
2014-02-14 13:48 ` Laurent Pinchart
2014-02-14 13:48 ` Laurent Pinchart
2014-02-14 14:13 ` Sergei Shtylyov
2014-02-14 14:13 ` Sergei Shtylyov
2014-02-14 14:13 ` Sergei Shtylyov
2014-02-14 14:22 ` Laurent Pinchart
2014-02-14 14:22 ` Laurent Pinchart
2014-02-14 14:22 ` Laurent Pinchart
2014-02-14 14:36 ` Sergei Shtylyov
2014-02-14 14:36 ` Sergei Shtylyov
2014-02-14 14:36 ` Sergei Shtylyov
2014-02-14 16:26 ` Laurent Pinchart
2014-02-14 16:26 ` Laurent Pinchart
2014-02-14 16:26 ` Laurent Pinchart
2014-02-14 18:56 ` Sergei Shtylyov
2014-02-14 19:56 ` Sergei Shtylyov
2014-02-14 19:56 ` Sergei Shtylyov
2014-02-14 1:00 ` [PATCH 27/27] ARM: shmobile: koelsch-reference: " Laurent Pinchart
2014-02-14 1:00 ` Laurent Pinchart
2014-02-14 1:00 ` Laurent Pinchart
2014-02-14 13:47 ` Sergei Shtylyov
2014-02-14 13:47 ` Sergei Shtylyov
2014-02-14 13:47 ` Sergei Shtylyov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3050110.8B4nKkQ5Sd@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.