-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Russell Cattelan
authored and
Steven Whitehouse
committed
Oct 12, 2006
1 parent
9b120fa
commit c7c41b1
Showing
119 changed files
with
1,589 additions
and
1,117 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 411fdc1a711665cb4bd13df2a75213153d463375 | ||
refs/heads/master: 52ae7b7935a079aaba25da98fe90772d04109f26 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,54 +1,115 @@ | ||
/* | ||
* Renesas Solutions Highlander R7780RP-1 Support. | ||
* linux/arch/sh/boards/renesas/r7780rp/irq.c | ||
* | ||
* Copyright (C) 2000 Kazumoto Kojima | ||
* | ||
* Copyright (C) 2002 Atom Create Engineering Co., Ltd. | ||
* Copyright (C) 2006 Paul Mundt | ||
* Renesas Solutions Highlander R7780RP-1 Support. | ||
* | ||
* This file is subject to the terms and conditions of the GNU General Public | ||
* License. See the file "COPYING" in the main directory of this archive | ||
* for more details. | ||
* Modified for R7780RP-1 by | ||
* Atom Create Engineering Co., Ltd. 2002. | ||
*/ | ||
#include <linux/init.h> | ||
#include <linux/irq.h> | ||
#include <asm/io.h> | ||
#include <asm/irq.h> | ||
#include <asm/r7780rp/r7780rp.h> | ||
|
||
#ifdef CONFIG_SH_R7780MP | ||
static int mask_pos[] = {12, 11, 9, 14, 15, 8, 13, 6, 5, 4, 3, 2, 0, 0, 1, 0}; | ||
#else | ||
static int mask_pos[] = {15, 14, 13, 12, 11, 10, 9, 8, 7, 5, 6, 4, 0, 1, 2, 0}; | ||
#endif | ||
|
||
static void enable_r7780rp_irq(unsigned int irq) | ||
static void enable_r7780rp_irq(unsigned int irq); | ||
static void disable_r7780rp_irq(unsigned int irq); | ||
|
||
/* shutdown is same as "disable" */ | ||
#define shutdown_r7780rp_irq disable_r7780rp_irq | ||
|
||
static void ack_r7780rp_irq(unsigned int irq); | ||
static void end_r7780rp_irq(unsigned int irq); | ||
|
||
static unsigned int startup_r7780rp_irq(unsigned int irq) | ||
{ | ||
/* Set priority in IPR back to original value */ | ||
ctrl_outw(ctrl_inw(IRLCNTR1) | (1 << mask_pos[irq]), IRLCNTR1); | ||
enable_r7780rp_irq(irq); | ||
return 0; /* never anything pending */ | ||
} | ||
|
||
static void disable_r7780rp_irq(unsigned int irq) | ||
{ | ||
unsigned short val; | ||
unsigned short mask = 0xffff ^ (0x0001 << mask_pos[irq]); | ||
|
||
/* Set the priority in IPR to 0 */ | ||
ctrl_outw(ctrl_inw(IRLCNTR1) & (0xffff ^ (1 << mask_pos[irq])), | ||
IRLCNTR1); | ||
val = ctrl_inw(IRLCNTR1); | ||
val &= mask; | ||
ctrl_outw(val, IRLCNTR1); | ||
} | ||
|
||
static struct irq_chip r7780rp_irq_chip __read_mostly = { | ||
.name = "r7780rp", | ||
.mask = disable_r7780rp_irq, | ||
.unmask = enable_r7780rp_irq, | ||
.mask_ack = disable_r7780rp_irq, | ||
static void enable_r7780rp_irq(unsigned int irq) | ||
{ | ||
unsigned short val; | ||
unsigned short value = (0x0001 << mask_pos[irq]); | ||
|
||
/* Set priority in IPR back to original value */ | ||
val = ctrl_inw(IRLCNTR1); | ||
val |= value; | ||
ctrl_outw(val, IRLCNTR1); | ||
} | ||
|
||
static void ack_r7780rp_irq(unsigned int irq) | ||
{ | ||
disable_r7780rp_irq(irq); | ||
} | ||
|
||
static void end_r7780rp_irq(unsigned int irq) | ||
{ | ||
if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
enable_r7780rp_irq(irq); | ||
} | ||
|
||
static struct hw_interrupt_type r7780rp_irq_type = { | ||
.typename = "R7780RP-IRQ", | ||
.startup = startup_r7780rp_irq, | ||
.shutdown = shutdown_r7780rp_irq, | ||
.enable = enable_r7780rp_irq, | ||
.disable = disable_r7780rp_irq, | ||
.ack = ack_r7780rp_irq, | ||
.end = end_r7780rp_irq, | ||
}; | ||
|
||
static void make_r7780rp_irq(unsigned int irq) | ||
{ | ||
disable_irq_nosync(irq); | ||
irq_desc[irq].chip = &r7780rp_irq_type; | ||
disable_r7780rp_irq(irq); | ||
} | ||
|
||
/* | ||
* Initialize IRQ setting | ||
*/ | ||
void __init init_r7780rp_IRQ(void) | ||
{ | ||
int i; | ||
|
||
for (i = 0; i < 15; i++) { | ||
disable_irq_nosync(i); | ||
set_irq_chip_and_handler(i, &r7780rp_irq_chip, | ||
handle_level_irq); | ||
enable_r7780rp_irq(i); | ||
} | ||
/* IRL0=PCI Slot #A | ||
* IRL1=PCI Slot #B | ||
* IRL2=PCI Slot #C | ||
* IRL3=PCI Slot #D | ||
* IRL4=CF Card | ||
* IRL5=CF Card Insert | ||
* IRL6=M66596 | ||
* IRL7=SD Card | ||
* IRL8=Touch Panel | ||
* IRL9=SCI | ||
* IRL10=Serial | ||
* IRL11=Extention #A | ||
* IRL11=Extention #B | ||
* IRL12=Debug LAN | ||
* IRL13=Push Switch | ||
* IRL14=ZiggBee IO | ||
*/ | ||
|
||
for (i=0; i<15; i++) | ||
make_r7780rp_irq(i); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.