Skip to content

Commit

Permalink
[PATCH] powerpc: use a common vio_match_device routine
Browse files Browse the repository at this point in the history
This requires the compatible properties having vaules that are empty
strings instead of just being empty properties.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Stephen Rothwell authored and Paul Mackerras committed Apr 29, 2006
1 parent e10fa77 commit dd721ff
Show file tree
Hide file tree
Showing 5 changed files with 7 additions and 31 deletions.
3 changes: 2 additions & 1 deletion arch/powerpc/kernel/vio.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ static const struct vio_device_id *vio_match_device(
const struct vio_device_id *ids, const struct vio_dev *dev)
{
while (ids->type[0] != '\0') {
if (vio_bus_ops.match(ids, dev))
if ((strncmp(dev->type, ids->type, strlen(ids->type)) == 0) &&
device_is_compatible(dev->dev.platform_data, ids->compat))
return ids;
ids++;
}
Expand Down
10 changes: 5 additions & 5 deletions arch/powerpc/platforms/iseries/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -927,7 +927,7 @@ void dt_vdevices(struct iseries_flat_dt *dt)
snprintf(buf, sizeof(buf), "viocons@%08x", reg);
dt_start_node(dt, buf);
dt_prop_str(dt, "device_type", "serial");
dt_prop_empty(dt, "compatible");
dt_prop_str(dt, "compatible", "");
dt_prop_u32(dt, "reg", reg);
dt_end_node(dt);
reg++;
Expand All @@ -949,7 +949,7 @@ void dt_vdevices(struct iseries_flat_dt *dt)
snprintf(buf, 32, "vlan@%08x", reg + i);
dt_start_node(dt, buf);
dt_prop_str(dt, "device_type", "vlan");
dt_prop_empty(dt, "compatible");
dt_prop_str(dt, "compatible", "");
dt_prop_u32(dt, "reg", reg + i);
dt_prop_u32(dt, "linux,unit_address", i);

Expand All @@ -970,7 +970,7 @@ void dt_vdevices(struct iseries_flat_dt *dt)
snprintf(buf, 32, "viodasd@%08x", reg + i);
dt_start_node(dt, buf);
dt_prop_str(dt, "device_type", "viodasd");
dt_prop_empty(dt, "compatible");
dt_prop_str(dt, "compatible", "");
dt_prop_u32(dt, "reg", reg + i);
dt_prop_u32(dt, "linux,unit_address", i);
dt_end_node(dt);
Expand All @@ -980,7 +980,7 @@ void dt_vdevices(struct iseries_flat_dt *dt)
snprintf(buf, 32, "viocd@%08x", reg + i);
dt_start_node(dt, buf);
dt_prop_str(dt, "device_type", "viocd");
dt_prop_empty(dt, "compatible");
dt_prop_str(dt, "compatible", "");
dt_prop_u32(dt, "reg", reg + i);
dt_prop_u32(dt, "linux,unit_address", i);
dt_end_node(dt);
Expand All @@ -990,7 +990,7 @@ void dt_vdevices(struct iseries_flat_dt *dt)
snprintf(buf, 32, "viotape@%08x", reg + i);
dt_start_node(dt, buf);
dt_prop_str(dt, "device_type", "viotape");
dt_prop_empty(dt, "compatible");
dt_prop_str(dt, "compatible", "");
dt_prop_u32(dt, "reg", reg + i);
dt_prop_u32(dt, "linux,unit_address", i);
dt_end_node(dt);
Expand Down
12 changes: 0 additions & 12 deletions arch/powerpc/platforms/iseries/vio.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,18 +50,7 @@ static struct iommu_table *vio_build_iommu_table(struct vio_dev *dev)
return &vio_iommu_table;
}

/**
* vio_match_device_iseries: - Tell if a iSeries VIO device matches a
* vio_device_id
*/
static int vio_match_device_iseries(const struct vio_device_id *id,
const struct vio_dev *dev)
{
return strncmp(dev->type, id->type, strlen(id->type)) == 0;
}

static struct vio_bus_ops vio_bus_ops_iseries = {
.match = vio_match_device_iseries,
.build_iommu_table = vio_build_iommu_table,
};

Expand All @@ -75,5 +64,4 @@ static int __init vio_bus_init_iseries(void)
iSeries_vio_dev = &vio_bus_device.dev;
return vio_bus_init(&vio_bus_ops_iseries);
}

__initcall(vio_bus_init_iseries);
12 changes: 0 additions & 12 deletions arch/powerpc/platforms/pseries/vio.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,6 @@

extern struct subsystem devices_subsys; /* needed for vio_find_name() */

/**
* vio_match_device_pseries: - Tell if a pSeries VIO device matches a
* vio_device_id
*/
static int vio_match_device_pseries(const struct vio_device_id *id,
const struct vio_dev *dev)
{
return (strncmp(dev->type, id->type, strlen(id->type)) == 0) &&
device_is_compatible(dev->dev.platform_data, id->compat);
}

/**
* vio_build_iommu_table: - gets the dma information from OF and
* builds the TCE tree.
Expand Down Expand Up @@ -76,7 +65,6 @@ static struct iommu_table *vio_build_iommu_table(struct vio_dev *dev)
}

static struct vio_bus_ops vio_bus_ops_pseries = {
.match = vio_match_device_pseries,
.build_iommu_table = vio_build_iommu_table,
};

Expand Down
1 change: 0 additions & 1 deletion include/asm-powerpc/vio.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ struct vio_driver {
};

struct vio_bus_ops {
int (*match)(const struct vio_device_id *id, const struct vio_dev *dev);
struct iommu_table *(*build_iommu_table)(struct vio_dev *dev);
};

Expand Down

0 comments on commit dd721ff

Please sign in to comment.