Release 4.10 arch/m68k/mac/baboon.c
/*
* Baboon Custom IC Management
*
* The Baboon custom IC controls the IDE, PCMCIA and media bay on the
* PowerBook 190. It multiplexes multiple interrupt sources onto the
* Nubus slot $C interrupt.
*/
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/irq.h>
#include <asm/macintosh.h>
#include <asm/macints.h>
#include <asm/mac_baboon.h>
/* #define DEBUG_IRQS */
int baboon_present;
static volatile struct baboon *baboon;
#if 0
extern int macide_ack_intr(struct ata_channel *);
#endif
/*
* Baboon initialization.
*/
void __init baboon_init(void)
{
if (macintosh_config->ident != MAC_MODEL_PB190) {
baboon = NULL;
baboon_present = 0;
return;
}
baboon = (struct baboon *) BABOON_BASE;
baboon_present = 1;
printk("Baboon detected at %p\n", baboon);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
pre-git | pre-git | 47 | 100.00% | 1 | 100.00% |
| Total | 47 | 100.00% | 1 | 100.00% |
/*
* Baboon interrupt handler. This works a lot like a VIA.
*/
static void baboon_irq(struct irq_desc *desc)
{
int irq_bit, irq_num;
unsigned char events;
#ifdef DEBUG_IRQS
printk("baboon_irq: mb_control %02X mb_ifr %02X mb_status %02X\n",
(uint) baboon->mb_control, (uint) baboon->mb_ifr,
(uint) baboon->mb_status);
#endif
events = baboon->mb_ifr & 0x07;
if (!events)
return;
irq_num = IRQ_BABOON_0;
irq_bit = 1;
do {
if (events & irq_bit) {
baboon->mb_ifr &= ~irq_bit;
generic_handle_irq(irq_num);
}
irq_bit <<= 1;
irq_num++;
} while(events >= irq_bit);
#if 0
if (baboon->mb_ifr & 0x02) macide_ack_intr(NULL);
/* for now we need to smash all interrupts */
baboon->mb_ifr &= ~events;
#endif
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
geert uytterhoeven | geert uytterhoeven | 118 | 100.00% | 1 | 100.00% |
| Total | 118 | 100.00% | 1 | 100.00% |
/*
* Register the Baboon interrupt dispatcher on nubus slot $C.
*/
void __init baboon_register_interrupts(void)
{
irq_set_chained_handler(IRQ_NUBUS_C, baboon_irq);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
adrian bunk | adrian bunk | 8 | 53.33% | 1 | 50.00% |
geert uytterhoeven | geert uytterhoeven | 7 | 46.67% | 1 | 50.00% |
| Total | 15 | 100.00% | 2 | 100.00% |
/*
* The means for masking individual Baboon interrupts remains a mystery.
* However, since we only use the IDE IRQ, we can just enable/disable all
* Baboon interrupts. If/when we handle more than one Baboon IRQ, we must
* either figure out how to mask them individually or else implement the
* same workaround that's used for NuBus slots (see nubus_disabled and
* via_nubus_irq_shutdown).
*/
void baboon_irq_enable(int irq)
{
#ifdef DEBUG_IRQUSE
printk("baboon_irq_enable(%d)\n", irq);
#endif
mac_irq_enable(irq_get_irq_data(IRQ_NUBUS_C));
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
pre-git | pre-git | 21 | 75.00% | 1 | 33.33% |
finn thain | finn thain | 7 | 25.00% | 2 | 66.67% |
| Total | 28 | 100.00% | 3 | 100.00% |
void baboon_irq_disable(int irq)
{
#ifdef DEBUG_IRQUSE
printk("baboon_irq_disable(%d)\n", irq);
#endif
mac_irq_disable(irq_get_irq_data(IRQ_NUBUS_C));
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
pre-git | pre-git | 21 | 75.00% | 1 | 33.33% |
finn thain | finn thain | 7 | 25.00% | 2 | 66.67% |
| Total | 28 | 100.00% | 3 | 100.00% |
Overall Contributors
| Person | Tokens | Prop | Commits | CommitProp |
geert uytterhoeven | geert uytterhoeven | 128 | 46.38% | 4 | 40.00% |
pre-git | pre-git | 117 | 42.39% | 1 | 10.00% |
finn thain | finn thain | 15 | 5.43% | 3 | 30.00% |
adrian bunk | adrian bunk | 10 | 3.62% | 1 | 10.00% |
martin dalecki | martin dalecki | 6 | 2.17% | 1 | 10.00% |
| Total | 276 | 100.00% | 10 | 100.00% |
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.