Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
W
White Rabbit Switch - Software
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
86
Issues
86
List
Board
Labels
Milestones
Merge Requests
4
Merge Requests
4
CI / CD
CI / CD
Pipelines
Schedules
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
White Rabbit Switch - Software
Commits
96a207cd
Commit
96a207cd
authored
Nov 29, 2016
by
Grzegorz Daniluk
Committed by
Adam Wujek
Dec 01, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kernel/wr_rtu: get IRQ number from the VIC domain
parent
ccfc120a
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
4 deletions
+30
-4
wr_rtu.c
kernel/wr_rtu/wr_rtu.c
+30
-4
No files found.
kernel/wr_rtu/wr_rtu.c
View file @
96a207cd
...
@@ -39,6 +39,7 @@
...
@@ -39,6 +39,7 @@
#include <linux/wait.h>
#include <linux/wait.h>
#include <linux/spinlock.h>
#include <linux/spinlock.h>
#include <linux/io.h>
#include <linux/io.h>
#include <linux/irqdomain.h>
/*
/*
* Ugly trick to be able to use headers that have been moved out
* Ugly trick to be able to use headers that have been moved out
...
@@ -70,6 +71,13 @@ static struct RTU_WB __iomem *regs;
...
@@ -70,6 +71,13 @@ static struct RTU_WB __iomem *regs;
#define wr_rtu_readl(r) __raw_readl(®s->r);
#define wr_rtu_readl(r) __raw_readl(®s->r);
#define wr_rtu_writel(val, r) __raw_writel(val, ®s->r);
#define wr_rtu_writel(val, r) __raw_writel(val, ®s->r);
/**
* IRQ domain to be used. This is static here but in general it should be
* a module parameter or somehow configurable. For the time being we keep
* it hard-coded here.
*/
static
const
char
*
irqdomain_name
=
"htvic-wr-swi.0"
;
static
void
wr_rtu_enable_irq
(
void
)
static
void
wr_rtu_enable_irq
(
void
)
{
{
wr_rtu_writel
(
RTU_EIC_IER_NEMPTY
,
EIC_IER
);
wr_rtu_writel
(
RTU_EIC_IER_NEMPTY
,
EIC_IER
);
...
@@ -159,6 +167,15 @@ static struct miscdevice wr_rtu_misc = {
...
@@ -159,6 +167,15 @@ static struct miscdevice wr_rtu_misc = {
static
int
__init
wr_rtu_init
(
void
)
static
int
__init
wr_rtu_init
(
void
)
{
{
int
err
;
int
err
;
int
irq
;
struct
irq_domain
*
irqdomain
;
irqdomain
=
irq_find_host
((
struct
device_node
*
)
irqdomain_name
);
if
(
!
irqdomain
)
{
pr_err
(
"pstat: The IRQ domain %s does not exist
\n
"
,
irqdomain_name
);
return
-
EINVAL
;
}
// register misc device
// register misc device
err
=
misc_register
(
&
wr_rtu_misc
);
err
=
misc_register
(
&
wr_rtu_misc
);
...
@@ -182,9 +199,8 @@ static int __init wr_rtu_init(void)
...
@@ -182,9 +199,8 @@ static int __init wr_rtu_init(void)
// register interrupt handler
// register interrupt handler
wr_rtu_disable_irq
();
wr_rtu_disable_irq
();
err
=
request_irq
(
irq
=
irq_find_mapping
(
irqdomain
,
WR_RTU_IRQ
);
WRVIC_BASE_IRQ
+
WR_RTU_IRQ
,
err
=
request_irq
(
irq
,
wr_rtu_interrupt
,
wr_rtu_interrupt
,
IRQF_SHARED
,
IRQF_SHARED
,
"wr-rtu"
,
"wr-rtu"
,
(
void
*
)
regs
(
void
*
)
regs
...
@@ -209,10 +225,20 @@ static int __init wr_rtu_init(void)
...
@@ -209,10 +225,20 @@ static int __init wr_rtu_init(void)
static
void
__exit
wr_rtu_exit
(
void
)
static
void
__exit
wr_rtu_exit
(
void
)
{
{
int
irq
;
struct
irq_domain
*
irqdomain
;
// disable RTU interrupts
// disable RTU interrupts
wr_rtu_disable_irq
();
wr_rtu_disable_irq
();
// Unregister IRQ handler
// Unregister IRQ handler
free_irq
(
WRVIC_BASE_IRQ
+
WR_RTU_IRQ
,
(
void
*
)
regs
);
irqdomain
=
irq_find_host
((
struct
device_node
*
)
irqdomain_name
);
if
(
!
irqdomain
)
{
pr_err
(
"pstat: The IRQ domain %s does not exist
\n
"
,
irqdomain_name
);
}
else
{
irq
=
irq_find_mapping
(
irqdomain
,
WR_RTU_IRQ
);
free_irq
(
irq
,
(
void
*
)
regs
);
}
// Unmap RTU memory
// Unmap RTU memory
iounmap
(
regs
);
iounmap
(
regs
);
// Unregister misc device driver
// Unregister misc device driver
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment