mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 12:52:30 +00:00
irqchip: mips-gic: Provide VP ID accessor
Provide a gic_read_local_vp_id() function to read the VCNUM field of the GICs local VP_IDENT register. This will be used by a further patch to check that the value reported by the GIC matches up with the kernels calculation. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Acked-by: Jason Cooper <jason@lakedaemon.net> Cc: Andrew Bresticker <abrestic@chromium.org> Cc: Jason Cooper <jason@lakedaemon.net> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: James Hogan <james.hogan@imgtec.com> Cc: Marc Zyngier <marc.zyngier@arm.com> Cc: linux-mips@linux-mips.org Cc: linux-kernel@vger.kernel.org Patchwork: https://patchwork.linux-mips.org/patch/12334/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
d46812bb0b
commit
835d2b4529
@ -246,6 +246,14 @@ void gic_stop_count(void)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
unsigned gic_read_local_vp_id(void)
|
||||||
|
{
|
||||||
|
unsigned long ident;
|
||||||
|
|
||||||
|
ident = gic_read(GIC_REG(VPE_LOCAL, GIC_VP_IDENT));
|
||||||
|
return ident & GIC_VP_IDENT_VCNUM_MSK;
|
||||||
|
}
|
||||||
|
|
||||||
static bool gic_local_irq_is_routable(int intr)
|
static bool gic_local_irq_is_routable(int intr)
|
||||||
{
|
{
|
||||||
u32 vpe_ctl;
|
u32 vpe_ctl;
|
||||||
|
@ -103,6 +103,7 @@
|
|||||||
#define GIC_VPE_SWINT0_MAP_OFS 0x0054
|
#define GIC_VPE_SWINT0_MAP_OFS 0x0054
|
||||||
#define GIC_VPE_SWINT1_MAP_OFS 0x0058
|
#define GIC_VPE_SWINT1_MAP_OFS 0x0058
|
||||||
#define GIC_VPE_OTHER_ADDR_OFS 0x0080
|
#define GIC_VPE_OTHER_ADDR_OFS 0x0080
|
||||||
|
#define GIC_VP_IDENT_OFS 0x0088
|
||||||
#define GIC_VPE_WD_CONFIG0_OFS 0x0090
|
#define GIC_VPE_WD_CONFIG0_OFS 0x0090
|
||||||
#define GIC_VPE_WD_COUNT0_OFS 0x0094
|
#define GIC_VPE_WD_COUNT0_OFS 0x0094
|
||||||
#define GIC_VPE_WD_INITIAL0_OFS 0x0098
|
#define GIC_VPE_WD_INITIAL0_OFS 0x0098
|
||||||
@ -211,6 +212,10 @@
|
|||||||
#define GIC_VPE_SMASK_FDC_SHF 6
|
#define GIC_VPE_SMASK_FDC_SHF 6
|
||||||
#define GIC_VPE_SMASK_FDC_MSK (MSK(1) << GIC_VPE_SMASK_FDC_SHF)
|
#define GIC_VPE_SMASK_FDC_MSK (MSK(1) << GIC_VPE_SMASK_FDC_SHF)
|
||||||
|
|
||||||
|
/* GIC_VP_IDENT fields */
|
||||||
|
#define GIC_VP_IDENT_VCNUM_SHF 0
|
||||||
|
#define GIC_VP_IDENT_VCNUM_MSK (MSK(6) << GIC_VP_IDENT_VCNUM_SHF)
|
||||||
|
|
||||||
/* GIC nomenclature for Core Interrupt Pins. */
|
/* GIC nomenclature for Core Interrupt Pins. */
|
||||||
#define GIC_CPU_INT0 0 /* Core Interrupt 2 */
|
#define GIC_CPU_INT0 0 /* Core Interrupt 2 */
|
||||||
#define GIC_CPU_INT1 1 /* . */
|
#define GIC_CPU_INT1 1 /* . */
|
||||||
@ -278,4 +283,16 @@ static inline int gic_get_usm_range(struct resource *gic_usm_res)
|
|||||||
|
|
||||||
#endif /* CONFIG_MIPS_GIC */
|
#endif /* CONFIG_MIPS_GIC */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gic_read_local_vp_id() - read the local VPs VCNUM
|
||||||
|
*
|
||||||
|
* Read the VCNUM of the local VP from the GIC_VP_IDENT register and
|
||||||
|
* return it to the caller. This ID should be used to refer to the VP
|
||||||
|
* via the GICs VP-other region, or when calculating an offset to a
|
||||||
|
* bit representing the VP in interrupt masks.
|
||||||
|
*
|
||||||
|
* Return: The VCNUM value for the local VP.
|
||||||
|
*/
|
||||||
|
extern unsigned gic_read_local_vp_id(void);
|
||||||
|
|
||||||
#endif /* __LINUX_IRQCHIP_MIPS_GIC_H */
|
#endif /* __LINUX_IRQCHIP_MIPS_GIC_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user