summaryrefslogtreecommitdiffstats
path: root/satasii.c
diff options
context:
space:
mode:
Diffstat (limited to 'satasii.c')
-rw-r--r--satasii.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/satasii.c b/satasii.c
index 9d05b2d..dbc4f4f 100644
--- a/satasii.c
+++ b/satasii.c
@@ -26,6 +26,8 @@
#define PCI_VENDOR_ID_SII 0x1095
+#define SATASII_MEMMAP_SIZE 0x100
+
uint8_t *sii_bar;
static uint16_t id;
@@ -40,6 +42,14 @@ const struct pcidev_status satas_sii[] = {
{},
};
+static int satasii_shutdown(void *data)
+{
+ physunmap(sii_bar, SATASII_MEMMAP_SIZE);
+ pci_cleanup(pacc);
+ release_io_perms();
+ return 0;
+}
+
int satasii_init(void)
{
uint32_t addr;
@@ -59,7 +69,8 @@ int satasii_init(void)
reg_offset = 0x50;
}
- sii_bar = physmap("SATA SIL registers", addr, 0x100) + reg_offset;
+ sii_bar = physmap("SATA SIL registers", addr, SATASII_MEMMAP_SIZE) +
+ reg_offset;
/* Check if ROM cycle are OK. */
if ((id != 0x0680) && (!(pci_mmio_readl(sii_bar) & (1 << 26))))
@@ -67,13 +78,8 @@ int satasii_init(void)
buses_supported = CHIP_BUSTYPE_PARALLEL;
- return 0;
-}
-
-int satasii_shutdown(void)
-{
- pci_cleanup(pacc);
- release_io_perms();
+ if (register_shutdown(satasii_shutdown, NULL))
+ return 1;
return 0;
}
OpenPOWER on IntegriCloud