diff options
author | Roland Dreier | 2005-06-27 23:36:45 +0200 |
---|---|---|
committer | Linus Torvalds | 2005-06-28 00:11:46 +0200 |
commit | 80fd8238734c852a8ed1ea39f8444a2df33bd161 (patch) | |
tree | d29f8f1a13c879ba991bf39096df8c009b406268 /drivers/infiniband/hw/mthca/mthca_cmd.c | |
parent | [PATCH] IB/mthca: Fix memory leak on error path (diff) | |
download | kernel-qcow2-linux-80fd8238734c852a8ed1ea39f8444a2df33bd161.tar.gz kernel-qcow2-linux-80fd8238734c852a8ed1ea39f8444a2df33bd161.tar.xz kernel-qcow2-linux-80fd8238734c852a8ed1ea39f8444a2df33bd161.zip |
[PATCH] IB/mthca: Encapsulate command interface init
Encapsulate mthca command interface initialization/cleanup.
Signed-off-by: Roland Dreier <roland@topspin.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/infiniband/hw/mthca/mthca_cmd.c')
-rw-r--r-- | drivers/infiniband/hw/mthca/mthca_cmd.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/mthca/mthca_cmd.c b/drivers/infiniband/hw/mthca/mthca_cmd.c index cd9ed958d92f..78d4891720e9 100644 --- a/drivers/infiniband/hw/mthca/mthca_cmd.c +++ b/drivers/infiniband/hw/mthca/mthca_cmd.c @@ -431,6 +431,27 @@ static int mthca_cmd_imm(struct mthca_dev *dev, timeout, status); } +int mthca_cmd_init(struct mthca_dev *dev) +{ + sema_init(&dev->cmd.hcr_sem, 1); + sema_init(&dev->cmd.poll_sem, 1); + dev->cmd.use_events = 0; + + dev->hcr = ioremap(pci_resource_start(dev->pdev, 0) + MTHCA_HCR_BASE, + MTHCA_HCR_SIZE); + if (!dev->hcr) { + mthca_err(dev, "Couldn't map command register."); + return -ENOMEM; + } + + return 0; +} + +void mthca_cmd_cleanup(struct mthca_dev *dev) +{ + iounmap(dev->hcr); +} + /* * Switch to using events to issue FW commands (should be called after * event queue to command events has been initialized). |