Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 28683
b: refs/heads/master
c: 95a1ca6
h: refs/heads/master
i:
  28681: 3f1fc43
  28679: 4347cdf
v: v3
  • Loading branch information
Stephen Rothwell authored and Paul Mackerras committed Apr 29, 2006
1 parent 051e5b3 commit b0932e4
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 29f147d746326e4db5fe350c70373081d61a2965
refs/heads/master: 95a1ca6cd8e702a19ee56efae522a5816a56a205
88 changes: 87 additions & 1 deletion trunk/arch/powerpc/platforms/iseries/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include <linux/major.h>
#include <linux/root_dev.h>
#include <linux/kernel.h>
#include <linux/if_ether.h> /* ETH_ALEN */

#include <asm/processor.h>
#include <asm/machdep.h>
Expand All @@ -45,6 +46,7 @@
#include <asm/cache.h>
#include <asm/sections.h>
#include <asm/abs_addr.h>
#include <asm/iseries/hv_types.h>
#include <asm/iseries/hv_lp_config.h>
#include <asm/iseries/hv_call_event.h>
#include <asm/iseries/hv_call_xm.h>
Expand Down Expand Up @@ -710,7 +712,7 @@ define_machine(iseries) {
};

struct blob {
unsigned char data[PAGE_SIZE];
unsigned char data[PAGE_SIZE * 2];
unsigned long next;
};

Expand Down Expand Up @@ -911,6 +913,88 @@ void dt_model(struct iseries_flat_dt *dt)
dt_prop_str(dt, "compatible", "IBM,iSeries");
}

void dt_vdevices(struct iseries_flat_dt *dt)
{
u32 reg = 0;
HvLpIndexMap vlan_map;
int i;
char buf[32];

dt_start_node(dt, "vdevice");
dt_prop_u32(dt, "#address-cells", 1);
dt_prop_u32(dt, "#size-cells", 0);

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_u32(dt, "reg", reg);
dt_end_node(dt);
reg++;

snprintf(buf, sizeof(buf), "v-scsi@%08x", reg);
dt_start_node(dt, buf);
dt_prop_str(dt, "device_type", "vscsi");
dt_prop_str(dt, "compatible", "IBM,v-scsi");
dt_prop_u32(dt, "reg", reg);
dt_end_node(dt);
reg++;

vlan_map = HvLpConfig_getVirtualLanIndexMap();
for (i = 0; i < HVMAXARCHITECTEDVIRTUALLANS; i++) {
unsigned char mac_addr[ETH_ALEN];

if ((vlan_map & (0x8000 >> i)) == 0)
continue;
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_u32(dt, "reg", reg + i);

mac_addr[0] = 0x02;
mac_addr[1] = 0x01;
mac_addr[2] = 0xff;
mac_addr[3] = i;
mac_addr[4] = 0xff;
mac_addr[5] = HvLpConfig_getLpIndex_outline();
dt_prop(dt, "local-mac-address", (char *)mac_addr, ETH_ALEN);
dt_prop(dt, "mac-address", (char *)mac_addr, ETH_ALEN);

dt_end_node(dt);
}
reg += HVMAXARCHITECTEDVIRTUALLANS;

for (i = 0; i < HVMAXARCHITECTEDVIRTUALDISKS; i++) {
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_u32(dt, "reg", reg + i);
dt_end_node(dt);
}
reg += HVMAXARCHITECTEDVIRTUALDISKS;
for (i = 0; i < HVMAXARCHITECTEDVIRTUALCDROMS; i++) {
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_u32(dt, "reg", reg + i);
dt_end_node(dt);
}
reg += HVMAXARCHITECTEDVIRTUALCDROMS;
for (i = 0; i < HVMAXARCHITECTEDVIRTUALTAPES; i++) {
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_u32(dt, "reg", reg + i);
dt_end_node(dt);
}

dt_end_node(dt);
}

void build_flat_dt(struct iseries_flat_dt *dt, unsigned long phys_mem_size)
{
u64 tmp[2];
Expand Down Expand Up @@ -941,6 +1025,8 @@ void build_flat_dt(struct iseries_flat_dt *dt, unsigned long phys_mem_size)

dt_cpus(dt);

dt_vdevices(dt);

dt_end_node(dt);

dt_push_u32(dt, OF_DT_END);
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/powerpc/platforms/iseries/vio.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ static struct vio_dev *__init vio_register_device_iseries(char *type,
return viodev;
}

void __init probe_bus_iseries(void)
static void __init probe_bus_iseries(void)
{
HvLpIndexMap vlan_map;
struct vio_dev *viodev;
Expand Down

0 comments on commit b0932e4

Please sign in to comment.