Skip to content

Commit

Permalink
ieee1394: support for speeds greater than S800
Browse files Browse the repository at this point in the history
The hard-wired configuration of the top speed (until now S800) was
unnecessary, remove it.

If the local link layer controller supports S1600 or S3200, we now
assume this speed for all present 1394b PHYs (except if they are
behind 1394a repeaters) until nodemgr figured out the actual speed
while fetching the config ROM.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
  • Loading branch information
Stefan Richter committed Jan 28, 2009
1 parent e747a5c commit 82d4b90
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 11 deletions.
4 changes: 1 addition & 3 deletions drivers/ieee1394/ieee1394.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,7 @@
#define IEEE1394_SPEED_800 0x03
#define IEEE1394_SPEED_1600 0x04
#define IEEE1394_SPEED_3200 0x05

/* The current highest tested speed supported by the subsystem */
#define IEEE1394_SPEED_MAX IEEE1394_SPEED_800
#define IEEE1394_SPEED_MAX IEEE1394_SPEED_3200

/* Maps speed values above to a string representation */
extern const char *hpsb_speedto_str[];
Expand Down
16 changes: 8 additions & 8 deletions drivers/ieee1394/ieee1394_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,7 @@ static void build_speed_map(struct hpsb_host *host, int nodecount)
u8 cldcnt[nodecount];
u8 *map = host->speed_map;
u8 *speedcap = host->speed;
u8 local_link_speed = host->csr.lnk_spd;
struct selfid *sid;
struct ext_selfid *esid;
int i, j, n;
Expand Down Expand Up @@ -373,8 +374,8 @@ static void build_speed_map(struct hpsb_host *host, int nodecount)
if (sid->port2 == SELFID_PORT_CHILD) cldcnt[n]++;

speedcap[n] = sid->speed;
if (speedcap[n] > host->csr.lnk_spd)
speedcap[n] = host->csr.lnk_spd;
if (speedcap[n] > local_link_speed)
speedcap[n] = local_link_speed;
n--;
}
}
Expand Down Expand Up @@ -407,12 +408,11 @@ static void build_speed_map(struct hpsb_host *host, int nodecount)
}
}

#if SELFID_SPEED_UNKNOWN != IEEE1394_SPEED_MAX
/* assume maximum speed for 1394b PHYs, nodemgr will correct it */
for (n = 0; n < nodecount; n++)
if (speedcap[n] == SELFID_SPEED_UNKNOWN)
speedcap[n] = IEEE1394_SPEED_MAX;
#endif
/* assume a maximum speed for 1394b PHYs, nodemgr will correct it */
if (local_link_speed > SELFID_SPEED_UNKNOWN)
for (i = 0; i < nodecount; i++)
if (speedcap[i] == SELFID_SPEED_UNKNOWN)
speedcap[i] = local_link_speed;
}


Expand Down

0 comments on commit 82d4b90

Please sign in to comment.