-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 186799 b: refs/heads/master c: 3c2aabc h: refs/heads/master i: 186797: 5487c94 186795: dcd605d 186791: 32e41e7 186783: bcbac01 v: v3
- Loading branch information
Arthur Benilov
authored and
Greg Kroah-Hartman
committed
Mar 4, 2010
1 parent
48cf58c
commit 7ccd547
Showing
7 changed files
with
179 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 33e920d9ebaddbc9cf51cf6e1de7baa8d7b8d6dd | ||
refs/heads/master: 3c2aabc41da7e9f957bc826363115a54764fb396 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,3 +5,4 @@ obj-$(CONFIG_VME_BUS) += vme.o | |
|
||
obj-y += bridges/ | ||
obj-y += devices/ | ||
obj-y += boards/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
comment "VME Board Drivers" | ||
|
||
config VMIVME_7805 | ||
tristate "VMIVME-7805" | ||
help | ||
If you say Y here you get support for the VMIVME-7805 board. | ||
This board has an additional control interface to the Universe II | ||
chip. This driver has to be included if you want to access VME bus | ||
with VMIVME-7805 board. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# | ||
# Makefile for the VME board drivers. | ||
# | ||
|
||
obj-$(CONFIG_VMIVME_7805) += vme_vmivme7805.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
/* | ||
* Support for the VMIVME-7805 board access to the Universe II bridge. | ||
* | ||
* Author: Arthur Benilov <arthur.benilov@iba-group.com> | ||
* Copyright 2010 Ion Beam Application, Inc. | ||
* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License as published by the | ||
* Free Software Foundation; either version 2 of the License, or (at your | ||
* option) any later version. | ||
*/ | ||
|
||
#include <linux/version.h> | ||
#include <linux/module.h> | ||
#include <linux/types.h> | ||
#include <linux/errno.h> | ||
#include <linux/pci.h> | ||
#include <linux/poll.h> | ||
#include <linux/io.h> | ||
|
||
#include "vme_vmivme7805.h" | ||
|
||
static int __init vmic_init(void); | ||
static int vmic_probe(struct pci_dev *, const struct pci_device_id *); | ||
static void vmic_remove(struct pci_dev *); | ||
static void __exit vmic_exit(void); | ||
|
||
/** Base address to access FPGA register */ | ||
static void *vmic_base; | ||
|
||
static char driver_name[] = "vmivme_7805"; | ||
|
||
static struct pci_device_id vmic_ids[] = { | ||
{ PCI_DEVICE(PCI_VENDOR_ID_VMIC, PCI_DEVICE_ID_VTIMR) }, | ||
{ }, | ||
}; | ||
|
||
static struct pci_driver vmic_driver = { | ||
.name = driver_name, | ||
.id_table = vmic_ids, | ||
.probe = vmic_probe, | ||
.remove = vmic_remove, | ||
}; | ||
|
||
static int __init vmic_init(void) | ||
{ | ||
return pci_register_driver(&vmic_driver); | ||
} | ||
|
||
static int vmic_probe(struct pci_dev *pdev, const struct pci_device_id *id) | ||
{ | ||
int retval; | ||
u32 data; | ||
|
||
/* Enable the device */ | ||
retval = pci_enable_device(pdev); | ||
if (retval) { | ||
dev_err(&pdev->dev, "Unable to enable device\n"); | ||
goto err; | ||
} | ||
|
||
/* Map Registers */ | ||
retval = pci_request_regions(pdev, driver_name); | ||
if (retval) { | ||
dev_err(&pdev->dev, "Unable to reserve resources\n"); | ||
goto err_resource; | ||
} | ||
|
||
/* Map registers in BAR 0 */ | ||
vmic_base = ioremap_nocache(pci_resource_start(pdev, 0), 16); | ||
if (!vmic_base) { | ||
dev_err(&pdev->dev, "Unable to remap CRG region\n"); | ||
retval = -EIO; | ||
goto err_remap; | ||
} | ||
|
||
/* Clear the FPGA VME IF contents */ | ||
iowrite32(0, vmic_base + VME_CONTROL); | ||
|
||
/* Clear any initial BERR */ | ||
data = ioread32(vmic_base + VME_CONTROL) & 0x00000FFF; | ||
data |= BM_VME_CONTROL_BERRST; | ||
iowrite32(data, vmic_base + VME_CONTROL); | ||
|
||
/* Enable the vme interface and byte swapping */ | ||
data = ioread32(vmic_base + VME_CONTROL) & 0x00000FFF; | ||
data = data | BM_VME_CONTROL_MASTER_ENDIAN | | ||
BM_VME_CONTROL_SLAVE_ENDIAN | | ||
BM_VME_CONTROL_ABLE | | ||
BM_VME_CONTROL_BERRI | | ||
BM_VME_CONTROL_BPENA | | ||
BM_VME_CONTROL_VBENA; | ||
iowrite32(data, vmic_base + VME_CONTROL); | ||
|
||
return 0; | ||
|
||
err_remap: | ||
pci_release_regions(pdev); | ||
err_resource: | ||
pci_disable_device(pdev); | ||
err: | ||
return retval; | ||
} | ||
|
||
static void vmic_remove(struct pci_dev *pdev) | ||
{ | ||
iounmap(vmic_base); | ||
pci_release_regions(pdev); | ||
pci_disable_device(pdev); | ||
|
||
} | ||
|
||
static void __exit vmic_exit(void) | ||
{ | ||
pci_unregister_driver(&vmic_driver); | ||
} | ||
|
||
MODULE_DESCRIPTION("VMIVME-7805 board support driver"); | ||
MODULE_AUTHOR("Arthur Benilov <arthur.benilov@iba-group.com>"); | ||
MODULE_LICENSE("GPL"); | ||
|
||
module_init(vmic_init); | ||
module_exit(vmic_exit); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
/* | ||
* vmivme_7805.h | ||
* | ||
* Support for the VMIVME-7805 board access to the Universe II bridge. | ||
* | ||
* Author: Arthur Benilov <arthur.benilov@iba-group.com> | ||
* Copyright 2010 Ion Beam Application, Inc. | ||
* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License as published by the | ||
* Free Software Foundation; either version 2 of the License, or (at your | ||
* option) any later version. | ||
*/ | ||
|
||
|
||
#ifndef _VMIVME_7805_H | ||
#define _VMIVME_7805_H | ||
|
||
#ifndef PCI_VENDOR_ID_VMIC | ||
#define PCI_VENDOR_ID_VMIC 0x114A | ||
#endif | ||
|
||
#ifndef PCI_DEVICE_ID_VTIMR | ||
#define PCI_DEVICE_ID_VTIMR 0x0004 | ||
#endif | ||
|
||
#define VME_CONTROL 0x0000 | ||
#define BM_VME_CONTROL_MASTER_ENDIAN 0x0001 | ||
#define BM_VME_CONTROL_SLAVE_ENDIAN 0x0002 | ||
#define BM_VME_CONTROL_ABLE 0x0004 | ||
#define BM_VME_CONTROL_BERRI 0x0040 | ||
#define BM_VME_CONTROL_BERRST 0x0080 | ||
#define BM_VME_CONTROL_BPENA 0x0400 | ||
#define BM_VME_CONTROL_VBENA 0x0800 | ||
|
||
#endif /* _VMIVME_7805_H */ | ||
|