* [PATCH 1/2] [POWERPC] rtc_cmos_setup: assign interrupts only if there is i8259 PIC
@ 2008-05-05 18:55 Anton Vorontsov
2008-05-06 8:06 ` Gabriel Paubert
2008-05-06 8:19 ` Gerhard Pircher
0 siblings, 2 replies; 5+ messages in thread
From: Anton Vorontsov @ 2008-05-05 18:55 UTC (permalink / raw)
To: Kumar Gala; +Cc: linuxppc-dev
Sometimes (particularly on MPC8610HPCD) we want IRQ-less CMOS RTC for
the boards without (or disabled) i8259 PICs.
We lookup the device tree for "chrp,iic" compatible devices, and if not
found we do not assign RTC IRQ.
Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
---
arch/powerpc/sysdev/rtc_cmos_setup.c | 21 +++++++++++++++------
1 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/arch/powerpc/sysdev/rtc_cmos_setup.c b/arch/powerpc/sysdev/rtc_cmos_setup.c
index c09ddc0..e5d0bcb 100644
--- a/arch/powerpc/sysdev/rtc_cmos_setup.c
+++ b/arch/powerpc/sysdev/rtc_cmos_setup.c
@@ -21,6 +21,7 @@ static int __init add_rtc(void)
struct device_node *np;
struct platform_device *pd;
struct resource res[2];
+ unsigned int num_res = 1;
int ret;
memset(&res, 0, sizeof(res));
@@ -41,14 +42,22 @@ static int __init add_rtc(void)
if (res[0].start != RTC_PORT(0))
return -EINVAL;
- /* Use a fixed interrupt value of 8 since on PPC if we are using this
- * its off an i8259 which we ensure has interrupt numbers 0..15. */
- res[1].start = 8;
- res[1].end = 8;
- res[1].flags = IORESOURCE_IRQ;
+ np = of_find_compatible_node(NULL, NULL, "chrp,iic");
+ if (np) {
+ of_node_put(np);
+ /*
+ * Use a fixed interrupt value of 8 since on PPC if we are
+ * using this its off an i8259 which we ensure has interrupt
+ * numbers 0..15.
+ */
+ res[1].start = 8;
+ res[1].end = 8;
+ res[1].flags = IORESOURCE_IRQ;
+ num_res++;
+ }
pd = platform_device_register_simple("rtc_cmos", -1,
- &res[0], 2);
+ &res[0], num_res);
if (IS_ERR(pd))
return PTR_ERR(pd);
--
1.5.5.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] [POWERPC] rtc_cmos_setup: assign interrupts only if there is i8259 PIC
2008-05-05 18:55 [PATCH 1/2] [POWERPC] rtc_cmos_setup: assign interrupts only if there is i8259 PIC Anton Vorontsov
@ 2008-05-06 8:06 ` Gabriel Paubert
2008-06-03 12:21 ` Anton Vorontsov
2008-05-06 8:19 ` Gerhard Pircher
1 sibling, 1 reply; 5+ messages in thread
From: Gabriel Paubert @ 2008-05-06 8:06 UTC (permalink / raw)
To: Anton Vorontsov; +Cc: linuxppc-dev
On Mon, May 05, 2008 at 10:55:38PM +0400, Anton Vorontsov wrote:
> Sometimes (particularly on MPC8610HPCD) we want IRQ-less CMOS RTC for
> the boards without (or disabled) i8259 PICs.
>
> We lookup the device tree for "chrp,iic" compatible devices, and if not
> found we do not assign RTC IRQ.
I suspect this will break on machines which have an RTC and the
interrupt line is not connected.
These are PreP machines like MVME2[467]xxx (I have a bunch of them,
stilll running 2.2 kernels but on a private network).
Interrupt 8 is connected, but not to the RTC...
I have no problems with the patch going in for now, it will have
to be revisited whenever (if ever) support for these machines is added
to the kernel (what is really needed to support these machines is a
residual data->device tree converter).
Gabriel
>
> Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
> ---
> arch/powerpc/sysdev/rtc_cmos_setup.c | 21 +++++++++++++++------
> 1 files changed, 15 insertions(+), 6 deletions(-)
>
> diff --git a/arch/powerpc/sysdev/rtc_cmos_setup.c b/arch/powerpc/sysdev/rtc_cmos_setup.c
> index c09ddc0..e5d0bcb 100644
> --- a/arch/powerpc/sysdev/rtc_cmos_setup.c
> +++ b/arch/powerpc/sysdev/rtc_cmos_setup.c
> @@ -21,6 +21,7 @@ static int __init add_rtc(void)
> struct device_node *np;
> struct platform_device *pd;
> struct resource res[2];
> + unsigned int num_res = 1;
> int ret;
>
> memset(&res, 0, sizeof(res));
> @@ -41,14 +42,22 @@ static int __init add_rtc(void)
> if (res[0].start != RTC_PORT(0))
> return -EINVAL;
>
> - /* Use a fixed interrupt value of 8 since on PPC if we are using this
> - * its off an i8259 which we ensure has interrupt numbers 0..15. */
> - res[1].start = 8;
> - res[1].end = 8;
> - res[1].flags = IORESOURCE_IRQ;
> + np = of_find_compatible_node(NULL, NULL, "chrp,iic");
> + if (np) {
> + of_node_put(np);
> + /*
> + * Use a fixed interrupt value of 8 since on PPC if we are
> + * using this its off an i8259 which we ensure has interrupt
> + * numbers 0..15.
> + */
> + res[1].start = 8;
> + res[1].end = 8;
> + res[1].flags = IORESOURCE_IRQ;
> + num_res++;
> + }
>
> pd = platform_device_register_simple("rtc_cmos", -1,
> - &res[0], 2);
> + &res[0], num_res);
>
> if (IS_ERR(pd))
> return PTR_ERR(pd);
> --
> 1.5.5.1
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] [POWERPC] rtc_cmos_setup: assign interrupts only if there is i8259 PIC
2008-05-05 18:55 [PATCH 1/2] [POWERPC] rtc_cmos_setup: assign interrupts only if there is i8259 PIC Anton Vorontsov
2008-05-06 8:06 ` Gabriel Paubert
@ 2008-05-06 8:19 ` Gerhard Pircher
2008-06-03 12:21 ` Anton Vorontsov
1 sibling, 1 reply; 5+ messages in thread
From: Gerhard Pircher @ 2008-05-06 8:19 UTC (permalink / raw)
To: Anton Vorontsov, galak; +Cc: linuxppc-dev
-------- Original-Nachricht --------
> Datum: Mon, 5 May 2008 22:55:38 +0400
> Von: Anton Vorontsov <avorontsov@ru.mvista.com>
> An: Kumar Gala <galak@kernel.crashing.org>
> CC: linuxppc-dev@ozlabs.org
> Betreff: [PATCH 1/2] [POWERPC] rtc_cmos_setup: assign interrupts only if there is i8259 PIC
> Sometimes (particularly on MPC8610HPCD) we want IRQ-less CMOS RTC for
> the boards without (or disabled) i8259 PICs.
>
> We lookup the device tree for "chrp,iic" compatible devices, and if not
> found we do not assign RTC IRQ.
>
> Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
> ---
> arch/powerpc/sysdev/rtc_cmos_setup.c | 21 +++++++++++++++------
> 1 files changed, 15 insertions(+), 6 deletions(-)
>
> diff --git a/arch/powerpc/sysdev/rtc_cmos_setup.c
> b/arch/powerpc/sysdev/rtc_cmos_setup.c
> index c09ddc0..e5d0bcb 100644
> --- a/arch/powerpc/sysdev/rtc_cmos_setup.c
> +++ b/arch/powerpc/sysdev/rtc_cmos_setup.c
> @@ -21,6 +21,7 @@ static int __init add_rtc(void)
> struct device_node *np;
> struct platform_device *pd;
> struct resource res[2];
> + unsigned int num_res = 1;
> int ret;
>
> memset(&res, 0, sizeof(res));
> @@ -41,14 +42,22 @@ static int __init add_rtc(void)
> if (res[0].start != RTC_PORT(0))
> return -EINVAL;
>
> - /* Use a fixed interrupt value of 8 since on PPC if we are using this
> - * its off an i8259 which we ensure has interrupt numbers 0..15. */
> - res[1].start = 8;
> - res[1].end = 8;
> - res[1].flags = IORESOURCE_IRQ;
> + np = of_find_compatible_node(NULL, NULL, "chrp,iic");
Could you add a check for "pnpPNP,000" (PNP ID for i8259), as not all
platforms use the CHRP names?
Gerhard
--
249 Spiele für nur 1 Preis. Die GMX Spieleflatrate schon ab 9,90 Euro.
Neu: Asterix bei den Olympischen Spielen: http://flat.games.gmx.de
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] [POWERPC] rtc_cmos_setup: assign interrupts only if there is i8259 PIC
2008-05-06 8:06 ` Gabriel Paubert
@ 2008-06-03 12:21 ` Anton Vorontsov
0 siblings, 0 replies; 5+ messages in thread
From: Anton Vorontsov @ 2008-06-03 12:21 UTC (permalink / raw)
To: Gabriel Paubert; +Cc: linuxppc-dev
On Tue, May 06, 2008 at 10:06:02AM +0200, Gabriel Paubert wrote:
> On Mon, May 05, 2008 at 10:55:38PM +0400, Anton Vorontsov wrote:
> > Sometimes (particularly on MPC8610HPCD) we want IRQ-less CMOS RTC for
> > the boards without (or disabled) i8259 PICs.
> >
> > We lookup the device tree for "chrp,iic" compatible devices, and if not
> > found we do not assign RTC IRQ.
>
> I suspect this will break on machines which have an RTC and the
> interrupt line is not connected.
This code is already broken this way. Yes, I only fixed it half-way, and
there is no easy way to fix it further, since rtc nodes do no specify
interrupts = <>, even if they do use them.
It means that if we'll start honour interrupts = <>, this will break
existing firmwares.
> These are PreP machines like MVME2[467]xxx (I have a bunch of them,
> stilll running 2.2 kernels but on a private network).
> Interrupt 8 is connected, but not to the RTC...
>
> I have no problems with the patch going in for now, it will have
> to be revisited whenever (if ever) support for these machines is added
> to the kernel (what is really needed to support these machines is a
> residual data->device tree converter).
>
> Gabriel
>
>
>
> >
> > Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
> > ---
> > arch/powerpc/sysdev/rtc_cmos_setup.c | 21 +++++++++++++++------
> > 1 files changed, 15 insertions(+), 6 deletions(-)
> >
> > diff --git a/arch/powerpc/sysdev/rtc_cmos_setup.c b/arch/powerpc/sysdev/rtc_cmos_setup.c
> > index c09ddc0..e5d0bcb 100644
> > --- a/arch/powerpc/sysdev/rtc_cmos_setup.c
> > +++ b/arch/powerpc/sysdev/rtc_cmos_setup.c
> > @@ -21,6 +21,7 @@ static int __init add_rtc(void)
> > struct device_node *np;
> > struct platform_device *pd;
> > struct resource res[2];
> > + unsigned int num_res = 1;
> > int ret;
> >
> > memset(&res, 0, sizeof(res));
> > @@ -41,14 +42,22 @@ static int __init add_rtc(void)
> > if (res[0].start != RTC_PORT(0))
> > return -EINVAL;
> >
> > - /* Use a fixed interrupt value of 8 since on PPC if we are using this
> > - * its off an i8259 which we ensure has interrupt numbers 0..15. */
> > - res[1].start = 8;
> > - res[1].end = 8;
> > - res[1].flags = IORESOURCE_IRQ;
> > + np = of_find_compatible_node(NULL, NULL, "chrp,iic");
> > + if (np) {
> > + of_node_put(np);
> > + /*
> > + * Use a fixed interrupt value of 8 since on PPC if we are
> > + * using this its off an i8259 which we ensure has interrupt
> > + * numbers 0..15.
> > + */
> > + res[1].start = 8;
> > + res[1].end = 8;
> > + res[1].flags = IORESOURCE_IRQ;
> > + num_res++;
> > + }
> >
> > pd = platform_device_register_simple("rtc_cmos", -1,
> > - &res[0], 2);
> > + &res[0], num_res);
> >
> > if (IS_ERR(pd))
> > return PTR_ERR(pd);
> > --
> > 1.5.5.1
> >
> > _______________________________________________
> > Linuxppc-dev mailing list
> > Linuxppc-dev@ozlabs.org
> > https://ozlabs.org/mailman/listinfo/linuxppc-dev
--
Anton Vorontsov
email: cbouatmailru@gmail.com
irc://irc.freenode.net/bd2
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] [POWERPC] rtc_cmos_setup: assign interrupts only if there is i8259 PIC
2008-05-06 8:19 ` Gerhard Pircher
@ 2008-06-03 12:21 ` Anton Vorontsov
0 siblings, 0 replies; 5+ messages in thread
From: Anton Vorontsov @ 2008-06-03 12:21 UTC (permalink / raw)
To: Gerhard Pircher; +Cc: linuxppc-dev
On Tue, May 06, 2008 at 10:19:14AM +0200, Gerhard Pircher wrote:
>
> -------- Original-Nachricht --------
> > Datum: Mon, 5 May 2008 22:55:38 +0400
> > Von: Anton Vorontsov <avorontsov@ru.mvista.com>
> > An: Kumar Gala <galak@kernel.crashing.org>
> > CC: linuxppc-dev@ozlabs.org
> > Betreff: [PATCH 1/2] [POWERPC] rtc_cmos_setup: assign interrupts only if there is i8259 PIC
>
> > Sometimes (particularly on MPC8610HPCD) we want IRQ-less CMOS RTC for
> > the boards without (or disabled) i8259 PICs.
> >
> > We lookup the device tree for "chrp,iic" compatible devices, and if not
> > found we do not assign RTC IRQ.
> >
> > Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
> > ---
> > arch/powerpc/sysdev/rtc_cmos_setup.c | 21 +++++++++++++++------
> > 1 files changed, 15 insertions(+), 6 deletions(-)
> >
> > diff --git a/arch/powerpc/sysdev/rtc_cmos_setup.c
> > b/arch/powerpc/sysdev/rtc_cmos_setup.c
> > index c09ddc0..e5d0bcb 100644
> > --- a/arch/powerpc/sysdev/rtc_cmos_setup.c
> > +++ b/arch/powerpc/sysdev/rtc_cmos_setup.c
> > @@ -21,6 +21,7 @@ static int __init add_rtc(void)
> > struct device_node *np;
> > struct platform_device *pd;
> > struct resource res[2];
> > + unsigned int num_res = 1;
> > int ret;
> >
> > memset(&res, 0, sizeof(res));
> > @@ -41,14 +42,22 @@ static int __init add_rtc(void)
> > if (res[0].start != RTC_PORT(0))
> > return -EINVAL;
> >
> > - /* Use a fixed interrupt value of 8 since on PPC if we are using this
> > - * its off an i8259 which we ensure has interrupt numbers 0..15. */
> > - res[1].start = 8;
> > - res[1].end = 8;
> > - res[1].flags = IORESOURCE_IRQ;
> > + np = of_find_compatible_node(NULL, NULL, "chrp,iic");
> Could you add a check for "pnpPNP,000" (PNP ID for i8259), as not all
> platforms use the CHRP names?
Ok, will do.
Thanks,
--
Anton Vorontsov
email: cbouatmailru@gmail.com
irc://irc.freenode.net/bd2
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-06-03 12:21 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-05 18:55 [PATCH 1/2] [POWERPC] rtc_cmos_setup: assign interrupts only if there is i8259 PIC Anton Vorontsov
2008-05-06 8:06 ` Gabriel Paubert
2008-06-03 12:21 ` Anton Vorontsov
2008-05-06 8:19 ` Gerhard Pircher
2008-06-03 12:21 ` Anton Vorontsov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).