mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-28 21:45:01 +08:00
staging: ipack: Add support for IPACK_MEM16_SPACE.
Signed-off-by: Jens Taprogge <jens.taprogge@taprogge.org> Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
fe4a3ed0d5
commit
48a97352e1
@ -33,6 +33,7 @@ static const size_t tpci200_space_size[IPACK_SPACE_COUNT] = {
|
||||
[IPACK_ID_SPACE] = TPCI200_ID_SPACE_SIZE,
|
||||
[IPACK_INT_SPACE] = TPCI200_INT_SPACE_SIZE,
|
||||
[IPACK_MEM8_SPACE] = TPCI200_MEM8_SPACE_SIZE,
|
||||
[IPACK_MEM16_SPACE] = TPCI200_MEM16_SPACE_SIZE,
|
||||
};
|
||||
|
||||
static const size_t tpci200_space_interval[IPACK_SPACE_COUNT] = {
|
||||
@ -40,6 +41,7 @@ static const size_t tpci200_space_interval[IPACK_SPACE_COUNT] = {
|
||||
[IPACK_ID_SPACE] = TPCI200_ID_SPACE_INTERVAL,
|
||||
[IPACK_INT_SPACE] = TPCI200_INT_SPACE_INTERVAL,
|
||||
[IPACK_MEM8_SPACE] = TPCI200_MEM8_SPACE_INTERVAL,
|
||||
[IPACK_MEM16_SPACE] = TPCI200_MEM16_SPACE_INTERVAL,
|
||||
};
|
||||
|
||||
static struct tpci200_board *check_slot(struct ipack_device *dev)
|
||||
@ -94,6 +96,7 @@ static void tpci200_unregister(struct tpci200_board *tpci200)
|
||||
|
||||
pci_release_region(tpci200->info->pdev, TPCI200_IP_INTERFACE_BAR);
|
||||
pci_release_region(tpci200->info->pdev, TPCI200_IO_ID_INT_SPACES_BAR);
|
||||
pci_release_region(tpci200->info->pdev, TPCI200_MEM16_SPACE_BAR);
|
||||
pci_release_region(tpci200->info->pdev, TPCI200_MEM8_SPACE_BAR);
|
||||
pci_release_region(tpci200->info->pdev, TPCI200_CFG_MEM_BAR);
|
||||
|
||||
@ -282,6 +285,17 @@ static int tpci200_register(struct tpci200_board *tpci200)
|
||||
goto out_release_ioid_int_space;
|
||||
}
|
||||
|
||||
/* Request MEM16 space (Bar 4) */
|
||||
res = pci_request_region(tpci200->info->pdev, TPCI200_MEM16_SPACE_BAR,
|
||||
"Carrier MEM16 space");
|
||||
if (res) {
|
||||
dev_err(&tpci200->info->pdev->dev,
|
||||
"(bn 0x%X, sn 0x%X) failed to allocate PCI resource for BAR 4!",
|
||||
tpci200->info->pdev->bus->number,
|
||||
tpci200->info->pdev->devfn);
|
||||
goto out_release_mem8_space;
|
||||
}
|
||||
|
||||
/* Map internal tpci200 driver user space */
|
||||
tpci200->info->interface_regs =
|
||||
ioremap_nocache(pci_resource_start(tpci200->info->pdev,
|
||||
@ -300,6 +314,9 @@ static int tpci200_register(struct tpci200_board *tpci200)
|
||||
tpci200->mod_mem[IPACK_MEM8_SPACE] =
|
||||
pci_resource_start(tpci200->info->pdev,
|
||||
TPCI200_MEM8_SPACE_BAR);
|
||||
tpci200->mod_mem[IPACK_MEM16_SPACE] =
|
||||
pci_resource_start(tpci200->info->pdev,
|
||||
TPCI200_MEM16_SPACE_BAR);
|
||||
|
||||
/* Set the default parameters of the slot
|
||||
* INT0 disabled, level sensitive
|
||||
@ -326,6 +343,8 @@ static int tpci200_register(struct tpci200_board *tpci200)
|
||||
|
||||
return 0;
|
||||
|
||||
out_release_mem8_space:
|
||||
pci_release_region(tpci200->info->pdev, TPCI200_MEM8_SPACE_BAR);
|
||||
out_release_ioid_int_space:
|
||||
pci_release_region(tpci200->info->pdev, TPCI200_IO_ID_INT_SPACES_BAR);
|
||||
out_release_ip_space:
|
||||
|
@ -36,6 +36,7 @@ enum ipack_space {
|
||||
IPACK_ID_SPACE,
|
||||
IPACK_INT_SPACE,
|
||||
IPACK_MEM8_SPACE,
|
||||
IPACK_MEM16_SPACE,
|
||||
/* Dummy for counting the number of entries. Must remain the last
|
||||
* entry */
|
||||
IPACK_SPACE_COUNT,
|
||||
|
Loading…
Reference in New Issue
Block a user