Home | History | Annotate | Download | only in include
      1 /* SPDX-License-Identifier: GPL-2.0+ */
      2 /*
      3  * (C) Copyright 2000-2004
      4  * Wolfgang Denk, DENX Software Engineering, wd (at) denx.de.
      5  */
      6 
      7 #ifndef _PCMCIA_H
      8 #define _PCMCIA_H
      9 
     10 #include <common.h>
     11 #include <config.h>
     12 
     13 /*
     14  * Allow configuration to select PCMCIA slot,
     15  * or try to generate a useful default
     16  */
     17 #if defined(CONFIG_CMD_PCMCIA)
     18 
     19 #if !defined(CONFIG_PCMCIA_SLOT_A) && !defined(CONFIG_PCMCIA_SLOT_B)
     20 # error "PCMCIA Slot not configured"
     21 #endif /* !defined(CONFIG_PCMCIA_SLOT_A) && !defined(CONFIG_PCMCIA_SLOT_B) */
     22 
     23 /* Make sure exactly one slot is defined - we support only one for now */
     24 #if !defined(CONFIG_PCMCIA_SLOT_A) && !defined(CONFIG_PCMCIA_SLOT_B)
     25 #error Neither CONFIG_PCMCIA_SLOT_A nor CONFIG_PCMCIA_SLOT_B configured
     26 #endif
     27 #if defined(CONFIG_PCMCIA_SLOT_A) && defined(CONFIG_PCMCIA_SLOT_B)
     28 #error Both CONFIG_PCMCIA_SLOT_A and CONFIG_PCMCIA_SLOT_B configured
     29 #endif
     30 
     31 #ifndef PCMCIA_SOCKETS_NO
     32 #define PCMCIA_SOCKETS_NO	1
     33 #endif
     34 #ifndef PCMCIA_MEM_WIN_NO
     35 #define PCMCIA_MEM_WIN_NO	4
     36 #endif
     37 #define PCMCIA_IO_WIN_NO	2
     38 
     39 /* define _slot_ to be able to optimize macros */
     40 #ifdef CONFIG_PCMCIA_SLOT_A
     41 # define _slot_			0
     42 # define PCMCIA_SLOT_MSG	"slot A"
     43 # define PCMCIA_SLOT_x		PCMCIA_PSLOT_A
     44 #else
     45 # define _slot_			1
     46 # define PCMCIA_SLOT_MSG	"slot B"
     47 # define PCMCIA_SLOT_x		PCMCIA_PSLOT_B
     48 #endif
     49 
     50 /*
     51  * This structure is used to address each window in the PCMCIA controller.
     52  *
     53  * Keep in mind that we assume that pcmcia_win_t[n+1] is mapped directly
     54  * after pcmcia_win_t[n]...
     55  */
     56 
     57 typedef struct {
     58 	ulong	br;
     59 	ulong	or;
     60 } pcmcia_win_t;
     61 
     62 /**********************************************************************/
     63 
     64 /*
     65  * CIS Tupel codes
     66  */
     67 #define CISTPL_NULL		0x00
     68 #define CISTPL_DEVICE		0x01
     69 #define CISTPL_LONGLINK_CB	0x02
     70 #define CISTPL_INDIRECT		0x03
     71 #define CISTPL_CONFIG_CB	0x04
     72 #define CISTPL_CFTABLE_ENTRY_CB 0x05
     73 #define CISTPL_LONGLINK_MFC	0x06
     74 #define CISTPL_BAR		0x07
     75 #define CISTPL_PWR_MGMNT	0x08
     76 #define CISTPL_EXTDEVICE	0x09
     77 #define CISTPL_CHECKSUM		0x10
     78 #define CISTPL_LONGLINK_A	0x11
     79 #define CISTPL_LONGLINK_C	0x12
     80 #define CISTPL_LINKTARGET	0x13
     81 #define CISTPL_NO_LINK		0x14
     82 #define CISTPL_VERS_1		0x15
     83 #define CISTPL_ALTSTR		0x16
     84 #define CISTPL_DEVICE_A		0x17
     85 #define CISTPL_JEDEC_C		0x18
     86 #define CISTPL_JEDEC_A		0x19
     87 #define CISTPL_CONFIG		0x1a
     88 #define CISTPL_CFTABLE_ENTRY	0x1b
     89 #define CISTPL_DEVICE_OC	0x1c
     90 #define CISTPL_DEVICE_OA	0x1d
     91 #define CISTPL_DEVICE_GEO	0x1e
     92 #define CISTPL_DEVICE_GEO_A	0x1f
     93 #define CISTPL_MANFID		0x20
     94 #define CISTPL_FUNCID		0x21
     95 #define CISTPL_FUNCE		0x22
     96 #define CISTPL_SWIL		0x23
     97 #define CISTPL_END		0xff
     98 
     99 /*
    100  * CIS Function ID codes
    101  */
    102 #define CISTPL_FUNCID_MULTI	0x00
    103 #define CISTPL_FUNCID_MEMORY	0x01
    104 #define CISTPL_FUNCID_SERIAL	0x02
    105 #define CISTPL_FUNCID_PARALLEL	0x03
    106 #define CISTPL_FUNCID_FIXED	0x04
    107 #define CISTPL_FUNCID_VIDEO	0x05
    108 #define CISTPL_FUNCID_NETWORK	0x06
    109 #define CISTPL_FUNCID_AIMS	0x07
    110 #define CISTPL_FUNCID_SCSI	0x08
    111 
    112 /*
    113  * Fixed Disk FUNCE codes
    114  */
    115 #define CISTPL_IDE_INTERFACE	0x01
    116 
    117 #define CISTPL_FUNCE_IDE_IFACE	0x01
    118 #define CISTPL_FUNCE_IDE_MASTER	0x02
    119 #define CISTPL_FUNCE_IDE_SLAVE	0x03
    120 
    121 /* First feature byte */
    122 #define CISTPL_IDE_SILICON	0x04
    123 #define CISTPL_IDE_UNIQUE	0x08
    124 #define CISTPL_IDE_DUAL		0x10
    125 
    126 /* Second feature byte */
    127 #define CISTPL_IDE_HAS_SLEEP	0x01
    128 #define CISTPL_IDE_HAS_STANDBY	0x02
    129 #define CISTPL_IDE_HAS_IDLE	0x04
    130 #define CISTPL_IDE_LOW_POWER	0x08
    131 #define CISTPL_IDE_REG_INHIBIT	0x10
    132 #define CISTPL_IDE_HAS_INDEX	0x20
    133 #define CISTPL_IDE_IOIS16	0x40
    134 
    135 #endif
    136 
    137 #endif /* _PCMCIA_H */
    138