* [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-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-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: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).