* [PATCH V2] powerpc/MPIC: Add get_version API both for internal and external use
@ 2013-03-26 5:28 Jia Hongtao
2013-03-29 7:44 ` Jia Hongtao-B38951
2013-03-29 21:51 ` Scott Wood
0 siblings, 2 replies; 5+ messages in thread
From: Jia Hongtao @ 2013-03-26 5:28 UTC (permalink / raw)
To: linuxppc-dev, galak; +Cc: B07421, hongtao.jia
MPIC version is useful information for both mpic_alloc() and mpic_init().
The patch provide an API to get MPIC version for reusing the code.
Also, some other IP block may need MPIC version for their own use.
The API for external use is also provided.
Signed-off-by: Jia Hongtao <hongtao.jia@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
Changes for V2:
* Using mpic_get_version() to implement mpic_primary_get_version()
arch/powerpc/include/asm/mpic.h | 3 +++
arch/powerpc/sysdev/mpic.c | 26 +++++++++++++++++++-------
2 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/arch/powerpc/include/asm/mpic.h b/arch/powerpc/include/asm/mpic.h
index c0f9ef9..7d1222d 100644
--- a/arch/powerpc/include/asm/mpic.h
+++ b/arch/powerpc/include/asm/mpic.h
@@ -393,6 +393,9 @@ struct mpic
#define MPIC_REGSET_STANDARD MPIC_REGSET(0) /* Original MPIC */
#define MPIC_REGSET_TSI108 MPIC_REGSET(1) /* Tsi108/109 PIC */
+/* Get the version of primary MPIC */
+extern u32 mpic_primary_get_version(void);
+
/* Allocate the controller structure and setup the linux irq descs
* for the range if interrupts passed in. No HW initialization is
* actually performed.
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index d30e6a6..c893a4b 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1165,10 +1165,27 @@ static struct irq_domain_ops mpic_host_ops = {
.xlate = mpic_host_xlate,
};
+static u32 mpic_get_version(struct mpic *mpic)
+{
+ u32 brr1;
+
+ brr1 = _mpic_read(mpic->reg_type, &mpic->thiscpuregs,
+ MPIC_FSL_BRR1);
+
+ return brr1 & MPIC_FSL_BRR1_VER;
+}
+
/*
* Exported functions
*/
+u32 mpic_primary_get_version(void)
+{
+ struct mpic *mpic = mpic_primary;
+
+ return mpic_get_version(mpic);
+}
+
struct mpic * __init mpic_alloc(struct device_node *node,
phys_addr_t phys_addr,
unsigned int flags,
@@ -1315,7 +1332,6 @@ struct mpic * __init mpic_alloc(struct device_node *node,
mpic_map(mpic, mpic->paddr, &mpic->tmregs, MPIC_INFO(TIMER_BASE), 0x1000);
if (mpic->flags & MPIC_FSL) {
- u32 brr1;
int ret;
/*
@@ -1326,9 +1342,7 @@ struct mpic * __init mpic_alloc(struct device_node *node,
mpic_map(mpic, mpic->paddr, &mpic->thiscpuregs,
MPIC_CPU_THISBASE, 0x1000);
- brr1 = _mpic_read(mpic->reg_type, &mpic->thiscpuregs,
- MPIC_FSL_BRR1);
- fsl_version = brr1 & MPIC_FSL_BRR1_VER;
+ fsl_version = mpic_get_version(mpic);
/* Error interrupt mask register (EIMR) is required for
* handling individual device error interrupts. EIMR
@@ -1518,9 +1532,7 @@ void __init mpic_init(struct mpic *mpic)
mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0xf);
if (mpic->flags & MPIC_FSL) {
- u32 brr1 = _mpic_read(mpic->reg_type, &mpic->thiscpuregs,
- MPIC_FSL_BRR1);
- u32 version = brr1 & MPIC_FSL_BRR1_VER;
+ u32 version = mpic_get_version(mpic);
/*
* Timer group B is present at the latest in MPIC 3.1 (e.g.
--
1.8.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* RE: [PATCH V2] powerpc/MPIC: Add get_version API both for internal and external use
2013-03-26 5:28 [PATCH V2] powerpc/MPIC: Add get_version API both for internal and external use Jia Hongtao
@ 2013-03-29 7:44 ` Jia Hongtao-B38951
2013-03-29 21:51 ` Scott Wood
1 sibling, 0 replies; 5+ messages in thread
From: Jia Hongtao-B38951 @ 2013-03-29 7:44 UTC (permalink / raw)
To: linuxppc-dev@lists.ozlabs.org, galak@kernel.crashing.org,
Wood Scott-B07421
Cc: Li Yang-R58472
Hi Kumar and Scott,
Any comments on these two patches?
Thanks.
-Hongtao.
> -----Original Message-----
> From: Jia Hongtao-B38951
> Sent: Tuesday, March 26, 2013 1:28 PM
> To: linuxppc-dev@lists.ozlabs.org; galak@kernel.crashing.org
> Cc: Wood Scott-B07421; Li Yang-R58472; Jia Hongtao-B38951
> Subject: [PATCH V2] powerpc/MPIC: Add get_version API both for internal
> and external use
>=20
> MPIC version is useful information for both mpic_alloc() and mpic_init().
> The patch provide an API to get MPIC version for reusing the code.
> Also, some other IP block may need MPIC version for their own use.
> The API for external use is also provided.
>=20
> Signed-off-by: Jia Hongtao <hongtao.jia@freescale.com>
> Signed-off-by: Li Yang <leoli@freescale.com>
> ---
> Changes for V2:
> * Using mpic_get_version() to implement mpic_primary_get_version()
>=20
> arch/powerpc/include/asm/mpic.h | 3 +++
> arch/powerpc/sysdev/mpic.c | 26 +++++++++++++++++++-------
> 2 files changed, 22 insertions(+), 7 deletions(-)
>=20
> diff --git a/arch/powerpc/include/asm/mpic.h
> b/arch/powerpc/include/asm/mpic.h index c0f9ef9..7d1222d 100644
> --- a/arch/powerpc/include/asm/mpic.h
> +++ b/arch/powerpc/include/asm/mpic.h
> @@ -393,6 +393,9 @@ struct mpic
> #define MPIC_REGSET_STANDARD MPIC_REGSET(0) /* Original
> MPIC */
> #define MPIC_REGSET_TSI108 MPIC_REGSET(1) /* Tsi108/109
> PIC */
>=20
> +/* Get the version of primary MPIC */
> +extern u32 mpic_primary_get_version(void);
> +
> /* Allocate the controller structure and setup the linux irq descs
> * for the range if interrupts passed in. No HW initialization is
> * actually performed.
> diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
> index d30e6a6..c893a4b 100644
> --- a/arch/powerpc/sysdev/mpic.c
> +++ b/arch/powerpc/sysdev/mpic.c
> @@ -1165,10 +1165,27 @@ static struct irq_domain_ops mpic_host_ops =3D {
> .xlate =3D mpic_host_xlate,
> };
>=20
> +static u32 mpic_get_version(struct mpic *mpic) {
> + u32 brr1;
> +
> + brr1 =3D _mpic_read(mpic->reg_type, &mpic->thiscpuregs,
> + MPIC_FSL_BRR1);
> +
> + return brr1 & MPIC_FSL_BRR1_VER;
> +}
> +
> /*
> * Exported functions
> */
>=20
> +u32 mpic_primary_get_version(void)
> +{
> + struct mpic *mpic =3D mpic_primary;
> +
> + return mpic_get_version(mpic);
> +}
> +
> struct mpic * __init mpic_alloc(struct device_node *node,
> phys_addr_t phys_addr,
> unsigned int flags,
> @@ -1315,7 +1332,6 @@ struct mpic * __init mpic_alloc(struct device_node
> *node,
> mpic_map(mpic, mpic->paddr, &mpic->tmregs, MPIC_INFO(TIMER_BASE),
> 0x1000);
>=20
> if (mpic->flags & MPIC_FSL) {
> - u32 brr1;
> int ret;
>=20
> /*
> @@ -1326,9 +1342,7 @@ struct mpic * __init mpic_alloc(struct device_node
> *node,
> mpic_map(mpic, mpic->paddr, &mpic->thiscpuregs,
> MPIC_CPU_THISBASE, 0x1000);
>=20
> - brr1 =3D _mpic_read(mpic->reg_type, &mpic->thiscpuregs,
> - MPIC_FSL_BRR1);
> - fsl_version =3D brr1 & MPIC_FSL_BRR1_VER;
> + fsl_version =3D mpic_get_version(mpic);
>=20
> /* Error interrupt mask register (EIMR) is required for
> * handling individual device error interrupts. EIMR @@ -
> 1518,9 +1532,7 @@ void __init mpic_init(struct mpic *mpic)
> mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0xf);
>=20
> if (mpic->flags & MPIC_FSL) {
> - u32 brr1 =3D _mpic_read(mpic->reg_type, &mpic->thiscpuregs,
> - MPIC_FSL_BRR1);
> - u32 version =3D brr1 & MPIC_FSL_BRR1_VER;
> + u32 version =3D mpic_get_version(mpic);
>=20
> /*
> * Timer group B is present at the latest in MPIC 3.1 (e.g.
> --
> 1.8.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH V2] powerpc/MPIC: Add get_version API both for internal and external use
2013-03-26 5:28 [PATCH V2] powerpc/MPIC: Add get_version API both for internal and external use Jia Hongtao
2013-03-29 7:44 ` Jia Hongtao-B38951
@ 2013-03-29 21:51 ` Scott Wood
2013-03-29 21:55 ` Scott Wood
1 sibling, 1 reply; 5+ messages in thread
From: Scott Wood @ 2013-03-29 21:51 UTC (permalink / raw)
To: Jia Hongtao; +Cc: hongtao.jia, B07421, linuxppc-dev
On 03/26/2013 12:28:10 AM, Jia Hongtao wrote:
> MPIC version is useful information for both mpic_alloc() and =20
> mpic_init().
> The patch provide an API to get MPIC version for reusing the code.
> Also, some other IP block may need MPIC version for their own use.
> The API for external use is also provided.
>=20
> Signed-off-by: Jia Hongtao <hongtao.jia@freescale.com>
> Signed-off-by: Li Yang <leoli@freescale.com>
> ---
> Changes for V2:
> * Using mpic_get_version() to implement mpic_primary_get_version()
>=20
> arch/powerpc/include/asm/mpic.h | 3 +++
> arch/powerpc/sysdev/mpic.c | 26 +++++++++++++++++++-------
> 2 files changed, 22 insertions(+), 7 deletions(-)
>=20
> diff --git a/arch/powerpc/include/asm/mpic.h =20
> b/arch/powerpc/include/asm/mpic.h
> index c0f9ef9..7d1222d 100644
> --- a/arch/powerpc/include/asm/mpic.h
> +++ b/arch/powerpc/include/asm/mpic.h
> @@ -393,6 +393,9 @@ struct mpic
> #define MPIC_REGSET_STANDARD MPIC_REGSET(0) /* =20
> Original MPIC */
> #define MPIC_REGSET_TSI108 MPIC_REGSET(1) /* =20
> Tsi108/109 PIC */
>=20
> +/* Get the version of primary MPIC */
> +extern u32 mpic_primary_get_version(void);
> +
> /* Allocate the controller structure and setup the linux irq descs
> * for the range if interrupts passed in. No HW initialization is
> * actually performed.
> diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
> index d30e6a6..c893a4b 100644
> --- a/arch/powerpc/sysdev/mpic.c
> +++ b/arch/powerpc/sysdev/mpic.c
> @@ -1165,10 +1165,27 @@ static struct irq_domain_ops mpic_host_ops =3D {
> .xlate =3D mpic_host_xlate,
> };
>=20
> +static u32 mpic_get_version(struct mpic *mpic)
> +{
> + u32 brr1;
> +
> + brr1 =3D _mpic_read(mpic->reg_type, &mpic->thiscpuregs,
> + MPIC_FSL_BRR1);
> +
> + return brr1 & MPIC_FSL_BRR1_VER;
> +}
> +
> /*
> * Exported functions
> */
>=20
> +u32 mpic_primary_get_version(void)
> +{
> + struct mpic *mpic =3D mpic_primary;
> +
> + return mpic_get_version(mpic);
> +}
So this just crashes if there is no mpic_primary or it's a non-FSL MPIC?
-Scott=
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH V2] powerpc/MPIC: Add get_version API both for internal and external use
2013-03-29 21:51 ` Scott Wood
@ 2013-03-29 21:55 ` Scott Wood
2013-04-02 6:19 ` Jia Hongtao-B38951
0 siblings, 1 reply; 5+ messages in thread
From: Scott Wood @ 2013-03-29 21:55 UTC (permalink / raw)
To: Scott Wood; +Cc: linuxppc-dev, hongtao.jia, B07421
On 03/29/2013 04:51:59 PM, Scott Wood wrote:
> On 03/26/2013 12:28:10 AM, Jia Hongtao wrote:
>> diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
>> index d30e6a6..c893a4b 100644
>> --- a/arch/powerpc/sysdev/mpic.c
>> +++ b/arch/powerpc/sysdev/mpic.c
>> @@ -1165,10 +1165,27 @@ static struct irq_domain_ops mpic_host_ops =3D =20
>> {
>> .xlate =3D mpic_host_xlate,
>> };
>>=20
>> +static u32 mpic_get_version(struct mpic *mpic)
>> +{
>> + u32 brr1;
>> +
>> + brr1 =3D _mpic_read(mpic->reg_type, &mpic->thiscpuregs,
>> + MPIC_FSL_BRR1);
>> +
>> + return brr1 & MPIC_FSL_BRR1_VER;
>> +}
>> +
>> /*
>> * Exported functions
>> */
>>=20
>> +u32 mpic_primary_get_version(void)
>> +{
>> + struct mpic *mpic =3D mpic_primary;
>> +
>> + return mpic_get_version(mpic);
>> +}
>=20
> So this just crashes if there is no mpic_primary or it's a non-FSL =20
> MPIC?
...and since it's specifically checking for the FSL version, "fsl" =20
should be in the name.
-Scott=
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH V2] powerpc/MPIC: Add get_version API both for internal and external use
2013-03-29 21:55 ` Scott Wood
@ 2013-04-02 6:19 ` Jia Hongtao-B38951
0 siblings, 0 replies; 5+ messages in thread
From: Jia Hongtao-B38951 @ 2013-04-02 6:19 UTC (permalink / raw)
To: Wood Scott-B07421; +Cc: linuxppc-dev@lists.ozlabs.org, Li Yang-R58472
> -----Original Message-----
> From: Wood Scott-B07421
> Sent: Saturday, March 30, 2013 5:55 AM
> To: Wood Scott-B07421
> Cc: Jia Hongtao-B38951; linuxppc-dev@lists.ozlabs.org;
> galak@kernel.crashing.org; Wood Scott-B07421; Li Yang-R58472; Jia
> Hongtao-B38951
> Subject: Re: [PATCH V2] powerpc/MPIC: Add get_version API both for
> internal and external use
>=20
> On 03/29/2013 04:51:59 PM, Scott Wood wrote:
> > On 03/26/2013 12:28:10 AM, Jia Hongtao wrote:
> >> diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
> >> index d30e6a6..c893a4b 100644
> >> --- a/arch/powerpc/sysdev/mpic.c
> >> +++ b/arch/powerpc/sysdev/mpic.c
> >> @@ -1165,10 +1165,27 @@ static struct irq_domain_ops mpic_host_ops =3D
> >> {
> >> .xlate =3D mpic_host_xlate,
> >> };
> >>
> >> +static u32 mpic_get_version(struct mpic *mpic) {
> >> + u32 brr1;
> >> +
> >> + brr1 =3D _mpic_read(mpic->reg_type, &mpic->thiscpuregs,
> >> + MPIC_FSL_BRR1);
> >> +
> >> + return brr1 & MPIC_FSL_BRR1_VER;
> >> +}
> >> +
> >> /*
> >> * Exported functions
> >> */
> >>
> >> +u32 mpic_primary_get_version(void)
> >> +{
> >> + struct mpic *mpic =3D mpic_primary;
> >> +
> >> + return mpic_get_version(mpic);
> >> +}
> >
> > So this just crashes if there is no mpic_primary or it's a non-FSL
> > MPIC?
>=20
> ...and since it's specifically checking for the FSL version, "fsl"
> should be in the name.
>=20
> -Scott
Right, I will update it with next version.
- Hongtao.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-04-02 6:19 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-26 5:28 [PATCH V2] powerpc/MPIC: Add get_version API both for internal and external use Jia Hongtao
2013-03-29 7:44 ` Jia Hongtao-B38951
2013-03-29 21:51 ` Scott Wood
2013-03-29 21:55 ` Scott Wood
2013-04-02 6:19 ` Jia Hongtao-B38951
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).