Eliminate even more duplication, and move some definitions into pcireg.h

This commit is contained in:
Warner Losh 2005-10-28 05:55:52 +00:00
parent 972072d384
commit 41ac33a2b6
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=151785
2 changed files with 19 additions and 45 deletions

View File

@ -493,21 +493,21 @@ cardbus_read_tuple_init(device_t cbdev, device_t child, uint32_t *start,
struct resource *res;
uint32_t space;
space = CARDBUS_CIS_SPACE(*start);
space = *start & PCIM_CIS_ASI_MASK;
switch (space) {
case CARDBUS_CIS_ASI_TUPLE:
case PCIM_CIS_ASI_TUPLE:
/* CIS in PCI config space need no initialization */
return ((struct resource*)~0UL);
case CARDBUS_CIS_ASI_BAR0:
case CARDBUS_CIS_ASI_BAR1:
case CARDBUS_CIS_ASI_BAR2:
case CARDBUS_CIS_ASI_BAR3:
case CARDBUS_CIS_ASI_BAR4:
case CARDBUS_CIS_ASI_BAR5:
*rid = PCIR_BAR(space - CARDBUS_CIS_ASI_BAR0);
case PCIM_CIS_ASI_BAR0:
case PCIM_CIS_ASI_BAR1:
case PCIM_CIS_ASI_BAR2:
case PCIM_CIS_ASI_BAR3:
case PCIM_CIS_ASI_BAR4:
case PCIM_CIS_ASI_BAR5:
*rid = PCIR_BAR(space - PCIM_CIS_ASI_BAR0);
break;
case CARDBUS_CIS_ASI_ROM:
*rid = CARDBUS_ROM_REG;
case PCIM_CIS_ASI_ROM:
*rid = PCIR_BIOS;
break;
default:
device_printf(cbdev, "Unable to read CIS: Unknown space: %d\n",
@ -523,7 +523,7 @@ cardbus_read_tuple_init(device_t cbdev, device_t child, uint32_t *start,
* This bit has a different meaning depending if we are dealing
* with a normal BAR or an Option ROM BAR.
*/
if (((testval & 0x1) == 0x1) && (*rid != CARDBUS_ROM_REG)) {
if (((testval & 0x1) == 0x1) && (*rid != PCIR_BIOS)) {
device_printf(cbdev, "CIS Space is IO, expecting memory.\n");
return (NULL);
}
@ -541,12 +541,12 @@ cardbus_read_tuple_init(device_t cbdev, device_t child, uint32_t *start,
return (NULL);
}
pci_write_config(child, *rid,
rman_get_start(res) | ((*rid == CARDBUS_ROM_REG) ?
CARDBUS_ROM_ENABLE : 0), 4);
rman_get_start(res) | ((*rid == PCIR_BIOS) ? PCIM_BIOS_ENABLE : 0),
4);
PCI_ENABLE_IO(cbdev, child, SYS_RES_MEMORY);
/* Flip to the right ROM image if CIS is in ROM */
if (space == CARDBUS_CIS_ASI_ROM) {
if (space == PCIM_CIS_ASI_ROM) {
bus_space_tag_t bt;
bus_space_handle_t bh;
uint32_t imagesize;
@ -559,7 +559,7 @@ cardbus_read_tuple_init(device_t cbdev, device_t child, uint32_t *start,
bt = rman_get_bustag(res);
bh = rman_get_bushandle(res);
imagenum = CARDBUS_CIS_ASI_ROM_IMAGE(*start);
imagenum = (*start & PCIM_CIS_ROM_MASK) >> 28;
for (romnum = 0;; romnum++) {
romsig = bus_space_read_2(bt, bh,
imagebase + CARDBUS_EXROM_SIGNATURE);
@ -611,9 +611,9 @@ cardbus_read_tuple_init(device_t cbdev, device_t child, uint32_t *start,
}
imagebase += imagesize;
}
*start = imagebase + CARDBUS_CIS_ADDR(*start);
*start = imagebase + (*start & PCIM_CIS_ADDR_MASK);
} else {
*start = CARDBUS_CIS_ADDR(*start);
*start = *start & PCIM_CIS_ADDR_MASK;
}
return (res);
@ -652,7 +652,7 @@ cardbus_parse_cis(device_t cbdev, device_t child,
bzero(tupledata, MAXTUPLESIZE);
expect_linktarget = TRUE;
if ((start = pci_read_config(child, CARDBUS_CIS_REG, 4)) == 0) {
if ((start = pci_read_config(child, PCIR_CIS, 4)) == 0) {
device_printf(cbdev, "CIS pointer is 0!\n");
return (ENXIO);
}

View File

@ -35,22 +35,6 @@
#define CARDBUS_SLOTMAX 0
#define CARDBUS_FUNCMAX 7
/* Cardbus configuration header registers */
#define CARDBUS_CIS_REG 0x28
# define CARDBUS_CIS_ASIMASK 0x07
# define CARDBUS_CIS_ADDRMASK 0x0ffffff8
# define CARDBUS_CIS_ASI_TUPLE 0x00
# define CARDBUS_CIS_ASI_BAR0 0x01
# define CARDBUS_CIS_ASI_BAR1 0x02
# define CARDBUS_CIS_ASI_BAR2 0x03
# define CARDBUS_CIS_ASI_BAR3 0x04
# define CARDBUS_CIS_ASI_BAR4 0x05
# define CARDBUS_CIS_ASI_BAR5 0x06
# define CARDBUS_CIS_ASI_ROM 0x07
#define CARDBUS_ROM_REG 0x30
# define CARDBUS_ROM_ENABLE 0x00000001
# define CARDBUS_ROM_ADDRMASK 0xfffff800
/* EXROM offsets for reading CIS */
#define CARDBUS_EXROM_SIGNATURE 0x00
#define CARDBUS_EXROM_DATA_PTR 0x18
@ -66,16 +50,6 @@
#define CARDBUS_EXROM_DATA_CODE_TYPE 0x14 /* Code Type */
#define CARDBUS_EXROM_DATA_INDICATOR 0x15 /* Indicator */
/* useful macros */
#define CARDBUS_CIS_ADDR(x) \
(CARDBUS_CIS_ADDRMASK & (x))
#define CARDBUS_CIS_SPACE(x) \
(CARDBUS_CIS_ASIMASK & (x))
#define CARDBUS_CIS_ASI_BAR(x) \
(((CARDBUS_CIS_ASIMASK & (x))-1)*4+0x10)
#define CARDBUS_CIS_ASI_ROM_IMAGE(x) \
(((x) >> 28) & 0xf)
#define CARDBUS_MAPREG_MEM_ADDR_MASK 0x0ffffff0
#define CARDBUS_MAPREG_MEM_ADDR(mr) \
((mr) & CARDBUS_MAPREG_MEM_ADDR_MASK)