From: Magnus Damm <magnus.damm@gmail.com>
To: linux-sh@vger.kernel.org
Subject: [PATCH] sh: extend INTC with optional ioremap() support
Date: Wed, 10 Feb 2010 11:17:39 +0000 [thread overview]
Message-ID: <20100210111739.11145.92334.sendpatchset@rxone.opensource.se> (raw)
From: Magnus Damm <damm@opensource.se>
Add the member "io_window" to intc_desc to allow
passing a physical memory window to the INTC code.
The INTC code will ioremap the window if present.
Required to support INTCS on SH-Mobile G-series.
Signed-off-by: Magnus Damm <damm@opensource.se>
---
drivers/sh/intc.c | 14 ++++++++++++++
include/linux/sh_intc.h | 3 +++
2 files changed, 17 insertions(+)
--- 0006/drivers/sh/intc.c
+++ work/drivers/sh/intc.c 2010-02-10 19:31:14.000000000 +0900
@@ -45,6 +45,8 @@ struct intc_handle_int {
struct intc_desc_int {
struct list_head list;
+ unsigned long virt_base;
+ unsigned long phys_base;
struct sys_device sysdev;
pm_message_t state;
unsigned long *reg;
@@ -425,6 +427,9 @@ static unsigned int __init intc_get_reg(
{
unsigned int k;
+ address -= d->phys_base;
+ address += d->virt_base;
+
for (k = 0; k < d->nr_reg; k++) {
if (d->reg[k] = address)
return k;
@@ -774,6 +779,9 @@ static unsigned int __init save_reg(stru
unsigned int smp)
{
if (value) {
+ value -= d->phys_base;
+ value += d->virt_base;
+
d->reg[cnt] = value;
#ifdef CONFIG_SMP
d->smp[cnt] = smp;
@@ -800,6 +808,12 @@ void __init register_intc_controller(str
INIT_LIST_HEAD(&d->list);
list_add(&d->list, &intc_list);
+ if (desc->io_window) {
+ d->phys_base = desc->io_window->start;
+ d->virt_base = (unsigned long)ioremap_nocache(d->phys_base,
+ resource_size(desc->io_window));
+ }
+
d->nr_reg = hw->mask_regs ? hw->nr_mask_regs * 2 : 0;
d->nr_reg += hw->prio_regs ? hw->nr_prio_regs * 2 : 0;
d->nr_reg += hw->sense_regs ? hw->nr_sense_regs : 0;
--- 0006/include/linux/sh_intc.h
+++ work/include/linux/sh_intc.h 2010-02-10 19:31:14.000000000 +0900
@@ -1,6 +1,8 @@
#ifndef __SH_INTC_H
#define __SH_INTC_H
+#include <linux/ioport.h>
+
typedef unsigned char intc_enum;
struct intc_vect {
@@ -71,6 +73,7 @@ struct intc_hw_desc {
struct intc_desc {
char *name;
+ struct resource *io_window;
intc_enum force_enable;
struct intc_hw_desc hw;
};
next reply other threads:[~2010-02-10 11:17 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-10 11:17 Magnus Damm [this message]
2010-02-10 12:55 ` [PATCH] sh: extend INTC with optional ioremap() support Paul Mundt
2010-02-10 13:14 ` Magnus Damm
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100210111739.11145.92334.sendpatchset@rxone.opensource.se \
--to=magnus.damm@gmail.com \
--cc=linux-sh@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.