diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2010-02-05 20:51:23 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2010-02-05 20:51:23 +0000 |
commit | 5dd3a9bf5326194c7328b0da0eb256cdb3056ee9 (patch) | |
tree | 9105413cd2b1455b29a571a6c4252de50fe37f19 /sys/arch/loongson/loongson/yeeloong_machdep.c | |
parent | a0e63efdb88447db80c33fccc16f89ad6b0723dc (diff) |
Blind support for the EMTEC Gdium Liberty netbook. Per-platform configuration
is moved to specific files, and a pointer to the key configuration structure
is now kept in struct sys_config.
bonito(4) interrupt handling is split, to allow PCI+Legacy interrupt systems
(Lemote Yeelong) and PCI-only Legacy-free systems (Gdium) to coexist
peacefully.
Diffstat (limited to 'sys/arch/loongson/loongson/yeeloong_machdep.c')
-rw-r--r-- | sys/arch/loongson/loongson/yeeloong_machdep.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/sys/arch/loongson/loongson/yeeloong_machdep.c b/sys/arch/loongson/loongson/yeeloong_machdep.c new file mode 100644 index 00000000000..1f812872159 --- /dev/null +++ b/sys/arch/loongson/loongson/yeeloong_machdep.c @@ -0,0 +1,84 @@ +/* $OpenBSD: yeeloong_machdep.c,v 1.1 2010/02/05 20:51:22 miod Exp $ */ + +/* + * Copyright (c) 2009, 2010 Miodrag Vallat. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * Lemote Yeeloong specific code and configuration data. + */ + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/device.h> + +#include <machine/autoconf.h> + +#include <dev/pci/pcireg.h> + +#include <loongson/dev/bonitovar.h> +#include <loongson/dev/bonito_irq.h> + +int yeeloong_intr_map(int, int, int); + +const struct bonito_config yeeloong_bonito = { + .bc_adbase = 11, + + .bc_gpioIE = LOONGSON_INTRMASK_GPIO, + .bc_intEdge = LOONGSON_INTRMASK_PCI_SYSERR | + LOONGSON_INTRMASK_PCI_PARERR, + .bc_intSteer = 0, + .bc_intPol = LOONGSON_INTRMASK_DRAM_PARERR | + LOONGSON_INTRMASK_PCI_SYSERR | LOONGSON_INTRMASK_PCI_PARERR | + LOONGSON_INTRMASK_INT0 | LOONGSON_INTRMASK_INT1, + + .bc_intr_map = yeeloong_intr_map +}; + +int +yeeloong_intr_map(int dev, int fn, int pin) +{ + switch (dev) { + /* onboard devices, only pin A is wired */ + case 6: + case 7: + case 8: + case 9: + if (pin == PCI_INTERRUPT_PIN_A) + return BONITO_DIRECT_IRQ(LOONGSON_INTR_PCIA + + (dev - 6)); + break; + /* PCI slot */ + case 10: + return BONITO_DIRECT_IRQ(LOONGSON_INTR_PCIA + + (pin - PCI_INTERRUPT_PIN_A)); + /* Geode chip */ + case 14: + switch (fn) { + case 1: /* Flash */ + return BONITO_ISA_IRQ(6); + case 2: /* AC97 */ + return BONITO_ISA_IRQ(9); + case 4: /* OHCI */ + case 5: /* EHCI */ + return BONITO_ISA_IRQ(11); + } + break; + default: + break; + } + + return -1; +} |