ieee1394: add definitions for phy packet constants
Introduce new macros related to phy packets and use them in ieee1394_core and nodemgr. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Signed-off-by: Jody McIntyre <scjody@modernduck.com>
This commit is contained in:
committed by
Jody McIntyre
parent
14c0fa243b
commit
d7758461b9
@@ -62,6 +62,7 @@
|
|||||||
extern const char *hpsb_speedto_str[];
|
extern const char *hpsb_speedto_str[];
|
||||||
|
|
||||||
|
|
||||||
|
/* 1394a cable PHY packets */
|
||||||
#define SELFID_PWRCL_NO_POWER 0x0
|
#define SELFID_PWRCL_NO_POWER 0x0
|
||||||
#define SELFID_PWRCL_PROVIDE_15W 0x1
|
#define SELFID_PWRCL_PROVIDE_15W 0x1
|
||||||
#define SELFID_PWRCL_PROVIDE_30W 0x2
|
#define SELFID_PWRCL_PROVIDE_30W 0x2
|
||||||
@@ -76,8 +77,24 @@ extern const char *hpsb_speedto_str[];
|
|||||||
#define SELFID_PORT_NCONN 0x1
|
#define SELFID_PORT_NCONN 0x1
|
||||||
#define SELFID_PORT_NONE 0x0
|
#define SELFID_PORT_NONE 0x0
|
||||||
|
|
||||||
|
#define PHYPACKET_LINKON 0x40000000
|
||||||
|
#define PHYPACKET_PHYCONFIG_R 0x00800000
|
||||||
|
#define PHYPACKET_PHYCONFIG_T 0x00400000
|
||||||
|
#define EXTPHYPACKET_TYPE_PING 0x00000000
|
||||||
|
#define EXTPHYPACKET_TYPE_REMOTEACCESS_BASE 0x00040000
|
||||||
|
#define EXTPHYPACKET_TYPE_REMOTEACCESS_PAGED 0x00140000
|
||||||
|
#define EXTPHYPACKET_TYPE_REMOTEREPLY_BASE 0x000C0000
|
||||||
|
#define EXTPHYPACKET_TYPE_REMOTEREPLY_PAGED 0x001C0000
|
||||||
|
#define EXTPHYPACKET_TYPE_REMOTECOMMAND 0x00200000
|
||||||
|
#define EXTPHYPACKET_TYPE_REMOTECONFIRMATION 0x00280000
|
||||||
|
#define EXTPHYPACKET_TYPE_RESUME 0x003C0000
|
||||||
|
|
||||||
/* 1394a PHY bitmasks */
|
#define EXTPHYPACKET_TYPEMASK 0xC0FC0000
|
||||||
|
|
||||||
|
#define PHYPACKET_PORT_SHIFT 24
|
||||||
|
#define PHYPACKET_GAPCOUNT_SHIFT 16
|
||||||
|
|
||||||
|
/* 1394a PHY register map bitmasks */
|
||||||
#define PHY_00_PHYSICAL_ID 0xFC
|
#define PHY_00_PHYSICAL_ID 0xFC
|
||||||
#define PHY_00_R 0x02 /* Root */
|
#define PHY_00_R 0x02 /* Root */
|
||||||
#define PHY_00_PS 0x01 /* Power Status*/
|
#define PHY_00_PS 0x01 /* Power Status*/
|
||||||
|
@@ -256,10 +256,14 @@ static int check_selfids(struct hpsb_host *host)
|
|||||||
|
|
||||||
esid = (struct ext_selfid *)(sid - 1);
|
esid = (struct ext_selfid *)(sid - 1);
|
||||||
while (esid->extended) {
|
while (esid->extended) {
|
||||||
if ((esid->porta == 0x2) || (esid->portb == 0x2)
|
if ((esid->porta == SELFID_PORT_PARENT) ||
|
||||||
|| (esid->portc == 0x2) || (esid->portd == 0x2)
|
(esid->portb == SELFID_PORT_PARENT) ||
|
||||||
|| (esid->porte == 0x2) || (esid->portf == 0x2)
|
(esid->portc == SELFID_PORT_PARENT) ||
|
||||||
|| (esid->portg == 0x2) || (esid->porth == 0x2)) {
|
(esid->portd == SELFID_PORT_PARENT) ||
|
||||||
|
(esid->porte == SELFID_PORT_PARENT) ||
|
||||||
|
(esid->portf == SELFID_PORT_PARENT) ||
|
||||||
|
(esid->portg == SELFID_PORT_PARENT) ||
|
||||||
|
(esid->porth == SELFID_PORT_PARENT)) {
|
||||||
HPSB_INFO("SelfIDs failed root check on "
|
HPSB_INFO("SelfIDs failed root check on "
|
||||||
"extended SelfID");
|
"extended SelfID");
|
||||||
return 0;
|
return 0;
|
||||||
@@ -268,7 +272,9 @@ static int check_selfids(struct hpsb_host *host)
|
|||||||
}
|
}
|
||||||
|
|
||||||
sid = (struct selfid *)esid;
|
sid = (struct selfid *)esid;
|
||||||
if ((sid->port0 == 0x2) || (sid->port1 == 0x2) || (sid->port2 == 0x2)) {
|
if ((sid->port0 == SELFID_PORT_PARENT) ||
|
||||||
|
(sid->port1 == SELFID_PORT_PARENT) ||
|
||||||
|
(sid->port2 == SELFID_PORT_PARENT)) {
|
||||||
HPSB_INFO("SelfIDs failed root check");
|
HPSB_INFO("SelfIDs failed root check");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -303,18 +309,18 @@ static void build_speed_map(struct hpsb_host *host, int nodecount)
|
|||||||
if (sid->extended) {
|
if (sid->extended) {
|
||||||
esid = (struct ext_selfid *)sid;
|
esid = (struct ext_selfid *)sid;
|
||||||
|
|
||||||
if (esid->porta == 0x3) cldcnt[n]++;
|
if (esid->porta == SELFID_PORT_CHILD) cldcnt[n]++;
|
||||||
if (esid->portb == 0x3) cldcnt[n]++;
|
if (esid->portb == SELFID_PORT_CHILD) cldcnt[n]++;
|
||||||
if (esid->portc == 0x3) cldcnt[n]++;
|
if (esid->portc == SELFID_PORT_CHILD) cldcnt[n]++;
|
||||||
if (esid->portd == 0x3) cldcnt[n]++;
|
if (esid->portd == SELFID_PORT_CHILD) cldcnt[n]++;
|
||||||
if (esid->porte == 0x3) cldcnt[n]++;
|
if (esid->porte == SELFID_PORT_CHILD) cldcnt[n]++;
|
||||||
if (esid->portf == 0x3) cldcnt[n]++;
|
if (esid->portf == SELFID_PORT_CHILD) cldcnt[n]++;
|
||||||
if (esid->portg == 0x3) cldcnt[n]++;
|
if (esid->portg == SELFID_PORT_CHILD) cldcnt[n]++;
|
||||||
if (esid->porth == 0x3) cldcnt[n]++;
|
if (esid->porth == SELFID_PORT_CHILD) cldcnt[n]++;
|
||||||
} else {
|
} else {
|
||||||
if (sid->port0 == 0x3) cldcnt[n]++;
|
if (sid->port0 == SELFID_PORT_CHILD) cldcnt[n]++;
|
||||||
if (sid->port1 == 0x3) cldcnt[n]++;
|
if (sid->port1 == SELFID_PORT_CHILD) cldcnt[n]++;
|
||||||
if (sid->port2 == 0x3) cldcnt[n]++;
|
if (sid->port2 == SELFID_PORT_CHILD) cldcnt[n]++;
|
||||||
|
|
||||||
speedcap[n] = sid->speed;
|
speedcap[n] = sid->speed;
|
||||||
n--;
|
n--;
|
||||||
|
@@ -1416,7 +1416,8 @@ static int nodemgr_send_resume_packet(struct hpsb_host *host)
|
|||||||
int ret = 1;
|
int ret = 1;
|
||||||
|
|
||||||
packet = hpsb_make_phypacket(host,
|
packet = hpsb_make_phypacket(host,
|
||||||
0x003c0000 | NODEID_TO_NODE(host->node_id) << 24);
|
EXTPHYPACKET_TYPE_RESUME |
|
||||||
|
NODEID_TO_NODE(host->node_id) << PHYPACKET_PORT_SHIFT);
|
||||||
if (packet) {
|
if (packet) {
|
||||||
packet->no_waiter = 1;
|
packet->no_waiter = 1;
|
||||||
packet->generation = get_hpsb_generation(host);
|
packet->generation = get_hpsb_generation(host);
|
||||||
|
Reference in New Issue
Block a user