Commit 48a97352 authored by Jens Taprogge's avatar Jens Taprogge Committed by Greg Kroah-Hartman

staging: ipack: Add support for IPACK_MEM16_SPACE.

Signed-off-by: default avatarJens Taprogge <jens.taprogge@taprogge.org>
Signed-off-by: default avatarSamuel Iglesias Gonsalvez <siglesias@igalia.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent fe4a3ed0
...@@ -33,6 +33,7 @@ static const size_t tpci200_space_size[IPACK_SPACE_COUNT] = { ...@@ -33,6 +33,7 @@ static const size_t tpci200_space_size[IPACK_SPACE_COUNT] = {
[IPACK_ID_SPACE] = TPCI200_ID_SPACE_SIZE, [IPACK_ID_SPACE] = TPCI200_ID_SPACE_SIZE,
[IPACK_INT_SPACE] = TPCI200_INT_SPACE_SIZE, [IPACK_INT_SPACE] = TPCI200_INT_SPACE_SIZE,
[IPACK_MEM8_SPACE] = TPCI200_MEM8_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] = { static const size_t tpci200_space_interval[IPACK_SPACE_COUNT] = {
...@@ -40,6 +41,7 @@ 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_ID_SPACE] = TPCI200_ID_SPACE_INTERVAL,
[IPACK_INT_SPACE] = TPCI200_INT_SPACE_INTERVAL, [IPACK_INT_SPACE] = TPCI200_INT_SPACE_INTERVAL,
[IPACK_MEM8_SPACE] = TPCI200_MEM8_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) static struct tpci200_board *check_slot(struct ipack_device *dev)
...@@ -94,6 +96,7 @@ static void tpci200_unregister(struct tpci200_board *tpci200) ...@@ -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_IP_INTERFACE_BAR);
pci_release_region(tpci200->info->pdev, TPCI200_IO_ID_INT_SPACES_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_MEM8_SPACE_BAR);
pci_release_region(tpci200->info->pdev, TPCI200_CFG_MEM_BAR); pci_release_region(tpci200->info->pdev, TPCI200_CFG_MEM_BAR);
...@@ -282,6 +285,17 @@ static int tpci200_register(struct tpci200_board *tpci200) ...@@ -282,6 +285,17 @@ static int tpci200_register(struct tpci200_board *tpci200)
goto out_release_ioid_int_space; 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 */ /* Map internal tpci200 driver user space */
tpci200->info->interface_regs = tpci200->info->interface_regs =
ioremap_nocache(pci_resource_start(tpci200->info->pdev, ioremap_nocache(pci_resource_start(tpci200->info->pdev,
...@@ -300,6 +314,9 @@ static int tpci200_register(struct tpci200_board *tpci200) ...@@ -300,6 +314,9 @@ static int tpci200_register(struct tpci200_board *tpci200)
tpci200->mod_mem[IPACK_MEM8_SPACE] = tpci200->mod_mem[IPACK_MEM8_SPACE] =
pci_resource_start(tpci200->info->pdev, pci_resource_start(tpci200->info->pdev,
TPCI200_MEM8_SPACE_BAR); 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 /* Set the default parameters of the slot
* INT0 disabled, level sensitive * INT0 disabled, level sensitive
...@@ -326,6 +343,8 @@ static int tpci200_register(struct tpci200_board *tpci200) ...@@ -326,6 +343,8 @@ static int tpci200_register(struct tpci200_board *tpci200)
return 0; return 0;
out_release_mem8_space:
pci_release_region(tpci200->info->pdev, TPCI200_MEM8_SPACE_BAR);
out_release_ioid_int_space: out_release_ioid_int_space:
pci_release_region(tpci200->info->pdev, TPCI200_IO_ID_INT_SPACES_BAR); pci_release_region(tpci200->info->pdev, TPCI200_IO_ID_INT_SPACES_BAR);
out_release_ip_space: out_release_ip_space:
......
...@@ -36,6 +36,7 @@ enum ipack_space { ...@@ -36,6 +36,7 @@ enum ipack_space {
IPACK_ID_SPACE, IPACK_ID_SPACE,
IPACK_INT_SPACE, IPACK_INT_SPACE,
IPACK_MEM8_SPACE, IPACK_MEM8_SPACE,
IPACK_MEM16_SPACE,
/* Dummy for counting the number of entries. Must remain the last /* Dummy for counting the number of entries. Must remain the last
* entry */ * entry */
IPACK_SPACE_COUNT, IPACK_SPACE_COUNT,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment