mirror of
https://github.com/torvalds/linux.git
synced 2024-11-16 09:02:00 +00:00
staging: vme: get rid of struct vme_device_id and slots
Previously, the device-driver matching mechanism depended on the vme_device_id structure due to the need for a bind table per driver. This method of matching is no longer used so this patch merges the fields of struct vme_device_id into struct vme_dev. Since this also renders the slot field meaningless, it has also been removed in this patch. Signed-off-by: Manohar Vanga <manohar.vanga@cern.ch> Cc: Martyn Welch <martyn.welch@ge.com> Reviewed-by: Emilio G. Cota <cota@braap.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
5d6abf379d
commit
a916a391d3
@ -668,7 +668,7 @@ err_nocard:
|
||||
|
||||
static int vme_user_match(struct vme_dev *vdev)
|
||||
{
|
||||
if (vdev->id.num >= USER_BUS_MAX)
|
||||
if (vdev->num >= USER_BUS_MAX)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
@ -1377,16 +1377,14 @@ static int __vme_register_driver_bus(struct vme_driver *drv,
|
||||
err = -ENOMEM;
|
||||
goto err_devalloc;
|
||||
}
|
||||
vdev->id.num = i;
|
||||
vdev->id.bus = bridge->num;
|
||||
vdev->id.slot = i + 1;
|
||||
vdev->num = i;
|
||||
vdev->bridge = bridge;
|
||||
vdev->dev.platform_data = drv;
|
||||
vdev->dev.release = vme_dev_release;
|
||||
vdev->dev.parent = bridge->parent;
|
||||
vdev->dev.bus = &vme_bus_type;
|
||||
dev_set_name(&vdev->dev, "%s.%u-%u", drv->name, vdev->id.bus,
|
||||
vdev->id.num);
|
||||
dev_set_name(&vdev->dev, "%s.%u-%u", drv->name, bridge->num,
|
||||
vdev->num);
|
||||
|
||||
err = device_register(&vdev->dev);
|
||||
if (err)
|
||||
|
@ -95,18 +95,6 @@ extern struct bus_type vme_bus_type;
|
||||
#define VME_SLOT_CURRENT -1
|
||||
#define VME_SLOT_ALL -2
|
||||
|
||||
/**
|
||||
* VME device identifier structure
|
||||
* @num: The device ID (ranges from 0 to N-1 for N devices)
|
||||
* @bus: The bus ID of the bus the device is on
|
||||
* @slot: The slot this device is plugged into
|
||||
*/
|
||||
struct vme_device_id {
|
||||
int num;
|
||||
int bus;
|
||||
int slot;
|
||||
};
|
||||
|
||||
/**
|
||||
* Structure representing a VME device
|
||||
* @id: The ID of the device (currently the bus and slot number)
|
||||
@ -116,7 +104,7 @@ struct vme_device_id {
|
||||
* @bridge_list: List of devices (per bridge)
|
||||
*/
|
||||
struct vme_dev {
|
||||
struct vme_device_id id;
|
||||
int num;
|
||||
struct vme_bridge *bridge;
|
||||
struct device dev;
|
||||
struct list_head drv_list;
|
||||
|
@ -51,23 +51,16 @@ probe routine is passed a 'struct vme_dev' pointer as an argument. The
|
||||
'struct vme_dev' structure looks like the following:
|
||||
|
||||
struct vme_dev {
|
||||
struct vme_device_id id;
|
||||
int num;
|
||||
struct vme_bridge *bridge;
|
||||
struct device dev;
|
||||
struct list_head drv_list;
|
||||
struct list_head bridge_list;
|
||||
};
|
||||
|
||||
The 'bridge' field contains a pointer to the bridge device. The 'id' field
|
||||
contains information useful for the probe function:
|
||||
|
||||
struct vme_device_id {
|
||||
int bus;
|
||||
int slot;
|
||||
int num;
|
||||
};
|
||||
|
||||
Here, 'bus' is the number of the bus the device being probed is on. 'slot'
|
||||
refers to the specific slot on the VME bus. The 'num' field refers to the
|
||||
sequential device ID for this specific driver.
|
||||
Here, the 'num' field refers to the sequential device ID for this specific
|
||||
driver. The bridge number (or bus number) can be accessed using
|
||||
dev->bridge->num.
|
||||
|
||||
A function is also provided to unregister the driver from the VME core and is
|
||||
usually called from the device driver's exit routine:
|
||||
@ -78,9 +71,11 @@ usually called from the device driver's exit routine:
|
||||
Resource management
|
||||
===================
|
||||
|
||||
Once a driver has registered with the VME core the provided probe routine will
|
||||
be called for each of the bus/slot combination that becomes valid as VME buses
|
||||
are themselves registered. The probe routine is passed a pointer to the devices
|
||||
Once a driver has registered with the VME core the provided match routine will
|
||||
be called the number of times specified during the registration. If a match
|
||||
succeeds, a non-zero value should be returned. A zero return value indicates
|
||||
failure. For all successful matches, the probe routine of the corresponding
|
||||
driver is called. The probe routine is passed a pointer to the devices
|
||||
device structure. This pointer should be saved, it will be required for
|
||||
requesting VME resources.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user