Mercurial > ecos
changeset 339:35d0def615e6
Add support for Compaq dual-sleeve PCMCIA adaptor.
| author | gthomas |
|---|---|
| date | Fri, 20 Sep 2002 21:19:39 +0000 |
| parents | 5f6943a2e0a8 |
| children | 49efc418fb58 |
| files | packages/devs/pcmcia/arm/ipaq/current/ChangeLog packages/devs/pcmcia/arm/ipaq/current/src/ipaq_pcmcia.c packages/hal/arm/sa11x0/ipaq/current/ChangeLog packages/hal/arm/sa11x0/ipaq/current/include/ipaq.h |
| diffstat | 4 files changed, 82 insertions(+), 36 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/devs/pcmcia/arm/ipaq/current/ChangeLog +++ b/packages/devs/pcmcia/arm/ipaq/current/ChangeLog @@ -1,3 +1,8 @@ +2002-09-20 Gary Thomas <gthomas@ecoscentric.com> + + * src/ipaq_pcmcia.c: Additional setup required for Compaq dual + PCMCIA sleeve. + 2002-04-12 Gary Thomas <gthomas@redhat.com> * src/ipaq_pcmcia.c: Clean up warnings.
--- a/packages/devs/pcmcia/arm/ipaq/current/src/ipaq_pcmcia.c +++ b/packages/devs/pcmcia/arm/ipaq/current/src/ipaq_pcmcia.c @@ -9,6 +9,7 @@ // ------------------------------------------- // This file is part of eCos, the Embedded Configurable Operating System. // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. +// Copyright (C) 2002 Gary Thomas // // eCos is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free @@ -233,6 +234,13 @@ cf_hwr_change_state(struct cf_slot *slot slot->state = CF_SLOT_STATE_Reset; ipaq_EGPIO( SA1110_EIO_CF_RESET, SA1110_EIO_CF_RESET_DISABLE); do_delay(5); // At least 20 ms + // This is necessary for the two slot sleeve and doesn't seem to + // hurt on the single slot versions. Note: only 3.3V is ever used! + *(volatile unsigned short *)IPAQ_CF_CTRL = IPAQ_CF_CTRL_V5_DISABLE | + IPAQ_CF_CTRL_V3_ENABLE | + IPAQ_CF_CTRL_APOE_ENABLE | + IPAQ_CF_CTRL_SOE_ENABLE; + do_delay(5); // At least 20 ms // Wait until the card is ready to talk for (i = 0; i < 10; i++) { ptr = 0;
--- a/packages/hal/arm/sa11x0/ipaq/current/ChangeLog +++ b/packages/hal/arm/sa11x0/ipaq/current/ChangeLog @@ -1,3 +1,8 @@ +2002-09-20 Gary Thomas <gthomas@ecoscentric.com> + + * include/ipaq.h: Define "LinkUP Systems" PCMCIA controller. Used + on Compaq dual PCMCIA sleeve. + 2002-08-12 Mark Salter <msalter@redhat.com> * misc/redboot_ROM.ecm: Remove CYGSEM_REDBOOT_ARM_LINUX_BOOT.
--- a/packages/hal/arm/sa11x0/ipaq/current/include/ipaq.h +++ b/packages/hal/arm/sa11x0/ipaq/current/include/ipaq.h @@ -12,6 +12,7 @@ // ------------------------------------------- // This file is part of eCos, the Embedded Configurable Operating System. // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. +// Copyright (C) 2002 Gary Thomas // // eCos is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free @@ -72,8 +73,8 @@ extern void ipaq_EGPIO(unsigned long mas // // Signal assertion levels // -#define SA1110_LOGIC_ONE(m) (m & 0xFFFF) -#define SA1110_LOGIC_ZERO(m) (m & 0x0000) +#define _LOGIC_ONE(m) (m & 0xFFFF) +#define _LOGIC_ZERO(m) (m & 0x0000) // // iPAQ Extended GPIO definitions @@ -82,53 +83,53 @@ extern void ipaq_EGPIO(unsigned long mas #define SA1110_EIO_MIN 0x0080 #define SA1110_EIO_VPP 0x0001 -# define SA1110_EIO_VPP_OFF SA1110_LOGIC_ZERO(SA1110_EIO_VPP) -# define SA1110_EIO_VPP_ON SA1110_LOGIC_ONE(SA1110_EIO_VPP) +# define SA1110_EIO_VPP_OFF _LOGIC_ZERO(SA1110_EIO_VPP) +# define SA1110_EIO_VPP_ON _LOGIC_ONE(SA1110_EIO_VPP) #define SA1110_EIO_CF_RESET 0x0002 -# define SA1110_EIO_CF_RESET_DISABLE SA1110_LOGIC_ZERO(SA1110_EIO_CF_RESET) -# define SA1110_EIO_CF_RESET_ENABLE SA1110_LOGIC_ONE(SA1110_EIO_CF_RESET) +# define SA1110_EIO_CF_RESET_DISABLE _LOGIC_ZERO(SA1110_EIO_CF_RESET) +# define SA1110_EIO_CF_RESET_ENABLE _LOGIC_ONE(SA1110_EIO_CF_RESET) #define SA1110_EIO_OPT_RESET 0x0004 -# define SA1110_EIO_OPT_RESET_DISABLE SA1110_LOGIC_ZERO(SA1110_EIO_OPT_RESET) -# define SA1110_EIO_OPT_RESET_ENABLE SA1110_LOGIC_ONE(SA1110_EIO_OPT_RESET) +# define SA1110_EIO_OPT_RESET_DISABLE _LOGIC_ZERO(SA1110_EIO_OPT_RESET) +# define SA1110_EIO_OPT_RESET_ENABLE _LOGIC_ONE(SA1110_EIO_OPT_RESET) #define SA1110_EIO_CODEC_RESET 0x0008 // Active LOW -# define SA1110_EIO_CODEC_RESET_DISABLE SA1110_LOGIC_ONE(SA1110_EIO_CODEC_RESET) -# define SA1110_EIO_CODEC_RESET_ENABLE SA1110_LOGIC_ZERO(SA1110_EIO_CODEC_RESET) +# define SA1110_EIO_CODEC_RESET_DISABLE _LOGIC_ONE(SA1110_EIO_CODEC_RESET) +# define SA1110_EIO_CODEC_RESET_ENABLE _LOGIC_ZERO(SA1110_EIO_CODEC_RESET) #define SA1110_EIO_OPT_PWR 0x0010 -# define SA1110_EIO_OPT_PWR_OFF SA1110_LOGIC_ZERO(SA1110_EIO_OPT_PWR) -# define SA1110_EIO_OPT_PWR_ON SA1110_LOGIC_ONE(SA1110_EIO_OPT_PWR) +# define SA1110_EIO_OPT_PWR_OFF _LOGIC_ZERO(SA1110_EIO_OPT_PWR) +# define SA1110_EIO_OPT_PWR_ON _LOGIC_ONE(SA1110_EIO_OPT_PWR) #define SA1110_EIO_OPT 0x0020 -# define SA1110_EIO_OPT_OFF SA1110_LOGIC_ZERO(SA1110_EIO_OPT) -# define SA1110_EIO_OPT_ON SA1110_LOGIC_ONE(SA1110_EIO_OPT) +# define SA1110_EIO_OPT_OFF _LOGIC_ZERO(SA1110_EIO_OPT) +# define SA1110_EIO_OPT_ON _LOGIC_ONE(SA1110_EIO_OPT) #define SA1110_EIO_LCD_3V3 0x0040 -# define SA1110_EIO_LCD_3V3_OFF SA1110_LOGIC_ZERO(SA1110_EIO_LCD_3V3) -# define SA1110_EIO_LCD_3V3_ON SA1110_LOGIC_ONE(SA1110_EIO_LCD_3V3) +# define SA1110_EIO_LCD_3V3_OFF _LOGIC_ZERO(SA1110_EIO_LCD_3V3) +# define SA1110_EIO_LCD_3V3_ON _LOGIC_ONE(SA1110_EIO_LCD_3V3) #define SA1110_EIO_RS232 0x0080 -# define SA1110_EIO_RS232_OFF SA1110_LOGIC_ZERO(SA1110_EIO_RS232) -# define SA1110_EIO_RS232_ON SA1110_LOGIC_ONE(SA1110_EIO_RS232) +# define SA1110_EIO_RS232_OFF _LOGIC_ZERO(SA1110_EIO_RS232) +# define SA1110_EIO_RS232_ON _LOGIC_ONE(SA1110_EIO_RS232) #define SA1110_EIO_LCD_CTRL 0x0100 -# define SA1110_EIO_LCD_CTRL_OFF SA1110_LOGIC_ZERO(SA1110_EIO_LCD_CTRL) -# define SA1110_EIO_LCD_CTRL_ON SA1110_LOGIC_ONE(SA1110_EIO_LCD_CTRL) +# define SA1110_EIO_LCD_CTRL_OFF _LOGIC_ZERO(SA1110_EIO_LCD_CTRL) +# define SA1110_EIO_LCD_CTRL_ON _LOGIC_ONE(SA1110_EIO_LCD_CTRL) #define SA1110_EIO_IR 0x0200 -# define SA1110_EIO_IR_OFF SA1110_LOGIC_ZERO(SA1110_EIO_IR) -# define SA1110_EIO_IR_ON SA1110_LOGIC_ONE(SA1110_EIO_IR) +# define SA1110_EIO_IR_OFF _LOGIC_ZERO(SA1110_EIO_IR) +# define SA1110_EIO_IR_ON _LOGIC_ONE(SA1110_EIO_IR) #define SA1110_EIO_AMP 0x0400 -# define SA1110_EIO_AMP_OFF SA1110_LOGIC_ZERO(SA1110_EIO_AMP) -# define SA1110_EIO_AMP_ON SA1110_LOGIC_ONE(SA1110_EIO_AMP) +# define SA1110_EIO_AMP_OFF _LOGIC_ZERO(SA1110_EIO_AMP) +# define SA1110_EIO_AMP_ON _LOGIC_ONE(SA1110_EIO_AMP) #define SA1110_EIO_AUDIO 0x0800 -# define SA1110_EIO_AUDIO_OFF SA1110_LOGIC_ZERO(SA1110_EIO_AUDIO) -# define SA1110_EIO_AUDIO_ON SA1110_LOGIC_ONE(SA1110_EIO_AUDIO) +# define SA1110_EIO_AUDIO_OFF _LOGIC_ZERO(SA1110_EIO_AUDIO) +# define SA1110_EIO_AUDIO_ON _LOGIC_ONE(SA1110_EIO_AUDIO) #define SA1110_EIO_MUTE 0x1000 -# define SA1110_EIO_MUTE_OFF SA1110_LOGIC_ZERO(SA1110_EIO_MUTE) -# define SA1110_EIO_MUTE_ON SA1110_LOGIC_ONE(SA1110_EIO_MUTE) +# define SA1110_EIO_MUTE_OFF _LOGIC_ZERO(SA1110_EIO_MUTE) +# define SA1110_EIO_MUTE_ON _LOGIC_ONE(SA1110_EIO_MUTE) #define SA1110_EIO_IR_FSEL 0x2000 -# define SA1110_EIO_SIR SA1110_LOGIC_ZERO(SA1110_EIO_IR_FSEL) -# define SA1110_EIO_FIR SA1110_LOGIC_ONE(SA1110_EIO_IR_FSEL) +# define SA1110_EIO_SIR _LOGIC_ZERO(SA1110_EIO_IR_FSEL) +# define SA1110_EIO_FIR _LOGIC_ONE(SA1110_EIO_IR_FSEL) #define SA1110_EIO_LCD_5V 0x4000 -# define SA1110_EIO_LCD_5V_OFF SA1110_LOGIC_ZERO(SA1110_EIO_LCD_5V) -# define SA1110_EIO_LCD_5V_ON SA1110_LOGIC_ONE(SA1110_EIO_LCD_5V) +# define SA1110_EIO_LCD_5V_OFF _LOGIC_ZERO(SA1110_EIO_LCD_5V) +# define SA1110_EIO_LCD_5V_ON _LOGIC_ONE(SA1110_EIO_LCD_5V) #define SA1110_EIO_LCD_VDD 0x8000 -# define SA1110_EIO_LCD_VDD_OFF SA1110_LOGIC_ZERO(SA1110_EIO_LCD_VDD) -# define SA1110_EIO_LCD_VDD_ON SA1110_LOGIC_ONE(SA1110_EIO_LCD_VDD) +# define SA1110_EIO_LCD_VDD_OFF _LOGIC_ZERO(SA1110_EIO_LCD_VDD) +# define SA1110_EIO_LCD_VDD_ON _LOGIC_ONE(SA1110_EIO_LCD_VDD) // // Special purpose GPIO interrupt mappings @@ -140,8 +141,35 @@ extern void ipaq_EGPIO(unsigned long mas // GPIO layout // #define SA1110_GPIO_CF_DETECT 0x00020000 // 0 = Compact Flash detect -#define SA1110_GPIO_CF_PRESENT SA1110_LOGIC_ZERO(SA1110_GPIO_CF_DETECT) -#define SA1110_GPIO_CF_ABSENT SA1110_LOGIC_ONE(SA1110_GPIO_CF_DETECT) +#define SA1110_GPIO_CF_PRESENT _LOGIC_ZERO(SA1110_GPIO_CF_DETECT) +#define SA1110_GPIO_CF_ABSENT _LOGIC_ONE(SA1110_GPIO_CF_DETECT) +#define SA1110_GPIO_CF2_DETECT 0x00000200 // 0 = Second slot on 2-slot sleeve +#define SA1110_GPIO_CF2_PRESENT _LOGIC_ZERO(SA1110_GPIO_CF2_DETECT) +#define SA1110_GPIO_CF2_ABSENT _LOGIC_ONE(SA1110_GPIO_CF2_DETECT) + +// +// PCMCIA controller in external sleeve +// +#define IPAQ_CF_CTRL 0x1A000000 // Slot 0 (same as single slot) +#define IPAQ_CF2_CTRL 0x19000000 // Slot 1 +#define IPAQ_CF_CTRL_V5 0x0001 // 5v power enable +#define IPAQ_CF_CTRL_V5_ENABLE _LOGIC_ZERO(IPAQ_CF_CTRL_V5) +#define IPAQ_CF_CTRL_V5_DISABLE _LOGIC_ONE(IPAQ_CF_CTRL_V5) +#define IPAQ_CF_CTRL_V3 0x0002 // 3v power enable +#define IPAQ_CF_CTRL_V3_ENABLE _LOGIC_ZERO(IPAQ_CF_CTRL_V3) +#define IPAQ_CF_CTRL_V3_DISABLE _LOGIC_ONE(IPAQ_CF_CTRL_V3) +#define IPAQ_CF_CTRL_VCC 0x0004 // Vcc power enable +#define IPAQ_CF_CTRL_V12 0x0008 // 12v power enable +#define IPAQ_CF_CTRL_RESET 0x0010 // Reset card +#define IPAQ_CF_CTRL_APOE 0x0020 // Auto power off +#define IPAQ_CF_CTRL_APOE_ENABLE _LOGIC_ONE(IPAQ_CF_CTRL_APOE) +#define IPAQ_CF_CTRL_APOE_DISABLE _LOGIC_ZERO(IPAQ_CF_CTRL_APOE) +#define IPAQ_CF_CTRL_CFE 0x0040 // Compact Flash [addressing] enable +#define IPAQ_CF_CTRL_SOE 0x0080 // Enable signal outputs +#define IPAQ_CF_CTRL_SOE_ENABLE _LOGIC_ONE(IPAQ_CF_CTRL_SOE) +#define IPAQ_CF_CTRL_SOE_DISABLE _LOGIC_ZERO(IPAQ_CF_CTRL_SOE) +#define IPAQ_CF_CTRL_SSP 0x0100 // Slot polarity; slot0=0, slot1=1 + // // LCD Controller
