Subject: Re: aupcmcia on OMSAL400 work
To: KIYOHARA Takashi <kiyohara@kk.iij4u.or.jp>
From: Garrett D'Amore <garrett_damore@tadpole.com>
List: port-evbmips
Date: 03/24/2006 10:20:11
Go for it. There are still bugs in aupcmcia, but apparently it works ok
for some classes of device. IDE/CF works okay, but my "an" card has
problems (CIS corrupt, but works fine on other NetBSD systems.)
I think there may be problems with 8-bit reads. I need to investigate
further. (IDE uses 16-bit accesses.)
KIYOHARA Takashi wrote:
> Hi! all,
>
>
> aupcmcia on OMSAL400 work. I'm tested wd via wdc at pcmcia. My OMSAL400
> is booted root on wd0a. fdisk(8) and disklabel(8) is OK!
>
> aupcmcia0 at aubus0 addr 0x0: Alchemy PCMCIA, 1 slots
> pcmcia0 at aupcmcia0 socket 0 irq 35, CF connector Type2 on Static BUS#3
>
> ... snip ...
>
> wdc0 at pcmcia0 function 0: <TRANSCEND, TS512MCF80>
> wdc0: i/o mapped mode
> slot 0 interrupting on irq 35
> ../../../../dev/pcmcia/wdc_pcmcia.c: 322: May we sleep? <-- see kern/33137
> config_pending_incr(9) is necessary for us perhaps.
> or use delay(9)?
> atabus0 at wdc0 channel 0
> wd0 at atabus0 drive 0: <TRANSCEND>
> wd0: drive supports 1-sector PIO transfers, LBA addressing
> wd0: 488 MB, 993 cyl, 16 head, 63 sec, 512 bytes/sect x 1000944 sectors
> wd0: drive supports PIO mode 4
> root device: wd0
> dump device (default wd0b):
> file system (default generic):
> root on wd0a dumps on wd0b
> slot 0 interrupting on irq 35
> slot 0 interrupting on irq 35
> mountroot: trying ffs...
> root file system type: ffs
>
>
> I will commit it next week end if it is unquestionable.
>
> Thanks,
> --
> kiyohara
>
>
> ------------------------------------------------------------------------
>
> ? compile/OMSAL400
> Index: alchemy/omsal400.c
> ===================================================================
> RCS file: /cvsroot/src/sys/arch/evbmips/alchemy/omsal400.c,v
> retrieving revision 1.3
> diff -u -r1.3 omsal400.c
> --- alchemy/omsal400.c 1 Mar 2006 20:21:41 -0000 1.3
> +++ alchemy/omsal400.c 24 Mar 2006 17:45:43 -0000
> @@ -41,6 +41,8 @@
> #include <sys/param.h>
> #include <machine/bus.h>
> #include <machine/locore.h>
> +#include <mips/alchemy/dev/augpiovar.h>
> +#include <mips/alchemy/dev/aupcmciavar.h>
> #include <evbmips/alchemy/obiovar.h>
> #include <evbmips/alchemy/board.h>
> #include <evbmips/alchemy/omsal400reg.h>
> @@ -55,11 +57,27 @@
> pci_intr_handle_t *);
> static void omsal400_poweroff(void);
> static void omsal400_reboot(void);
> +static bus_addr_t omsal400_slot_offset(int);
> +static int omsal400_slot_irq(int, int);
> +static void omsal400_slot_enable(int);
> +static void omsal400_slot_disable(int);
> +static int omsal400_slot_status(int);
> +static const char *omsal400_slot_name(int);
>
> static const struct obiodev omsal400_devices[] = {
> { NULL },
> };
>
> +static struct aupcmcia_machdep omsal400_pcmcia = {
> + 1, /* nslots */
> + omsal400_slot_offset,
> + omsal400_slot_irq,
> + omsal400_slot_enable,
> + omsal400_slot_disable,
> + omsal400_slot_status,
> + omsal400_slot_name,
> +};
> +
> static struct alchemy_board omsal400_info = {
> "Plathome Open Micro Sever AL400/AMD Alchemy Au1550",
> omsal400_devices,
> @@ -67,6 +85,7 @@
> omsal400_pci_intr_map,
> omsal400_reboot,
> omsal400_poweroff,
> + &omsal400_pcmcia,
> };
>
> const struct alchemy_board *
> @@ -162,3 +181,67 @@
> printf("\n- poweroff -\n");
> /* XXX */
> }
> +
> +
> +int
> +omsal400_slot_irq(int slot, int which)
> +{
> + static const int irqmap[1/*slot*/][2/*which*/] = {
> + { 35, 32 }, /* Slot 0: CF connector Type2 */
> + };
> +
> + if ((slot >= 1) || (which >= 2))
> + return -1;
> +
> + return (irqmap[slot][which]);
> +}
> +
> +bus_addr_t
> +omsal400_slot_offset(int slot)
> +{
> +
> + switch (slot) {
> + case 0:
> + return (0); /* offset 0 */
> + }
> + return (bus_addr_t)-1;
> +}
> +
> +void
> +omsal400_slot_enable(int slot)
> +{
> +
> + /* nothing todo */
> +}
> +
> +void
> +omsal400_slot_disable(int slot)
> +{
> +
> + /* nothing todo */
> +}
> +
> +int
> +omsal400_slot_status(int slot)
> +{
> + uint16_t inserted = 0;
> +
> + switch (slot) {
> + case 0:
> + inserted = !AUGPIO_READ(5); /* pin 5 */
> + break;
> + }
> +
> + return (inserted);
> +}
> +
> +const char *
> +omsal400_slot_name(int slot)
> +{
> + switch (slot) {
> + case 0:
> + return "CF connector Type2 on Static BUS#3";
> + default:
> + return "???";
> + }
> +}
> Index: conf/OMSAL400
> ===================================================================
> RCS file: /cvsroot/src/sys/arch/evbmips/conf/OMSAL400,v
> retrieving revision 1.2
> diff -u -r1.2 OMSAL400
> --- conf/OMSAL400 27 Feb 2006 20:50:48 -0000 1.2
> +++ conf/OMSAL400 24 Mar 2006 17:45:43 -0000
> @@ -19,6 +19,9 @@
> aupci* at aubus? addr ?
> pci* at aupci?
>
> +aupcmcia* at aubus? addr ?
> +pcmcia* at aupcmcia?
> +
> # Note that this is just fairly random selection of PCI devices.
> # Only the hptide controller is actually on-board.
>
> @@ -34,3 +37,11 @@
> # USB
> usb* at ohci?
> usb* at ehci?
> +
> +# PCMCIA IDE controllers
> +wdc* at pcmcia? function ?
> +
> +# ATA (IDE) bus support
> +atabus* at ata?
> +
> +wd* at atabus? drive ? flags 0x0000
>
--
Garrett D'Amore, Principal Software Engineer
Tadpole Computer / Computing Technologies Division,
General Dynamics C4 Systems
http://www.tadpolecomputer.com/
Phone: 951 325-2134 Fax: 951 325-2191