aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ieee1394/nodemgr.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ieee1394/nodemgr.c')
-rw-r--r--drivers/ieee1394/nodemgr.c64
1 files changed, 30 insertions, 34 deletions
diff --git a/drivers/ieee1394/nodemgr.c b/drivers/ieee1394/nodemgr.c
index b79ff695ca3c..bffa26e48152 100644
--- a/drivers/ieee1394/nodemgr.c
+++ b/drivers/ieee1394/nodemgr.c
@@ -67,7 +67,7 @@ static int nodemgr_check_speed(struct nodemgr_csr_info *ci, u64 addr,
67{ 67{
68 quadlet_t q; 68 quadlet_t q;
69 u8 i, *speed, old_speed, good_speed; 69 u8 i, *speed, old_speed, good_speed;
70 int ret; 70 int error;
71 71
72 speed = &(ci->host->speed[NODEID_TO_NODE(ci->nodeid)]); 72 speed = &(ci->host->speed[NODEID_TO_NODE(ci->nodeid)]);
73 old_speed = *speed; 73 old_speed = *speed;
@@ -79,9 +79,9 @@ static int nodemgr_check_speed(struct nodemgr_csr_info *ci, u64 addr,
79 * just finished its initialization. */ 79 * just finished its initialization. */
80 for (i = IEEE1394_SPEED_100; i <= old_speed; i++) { 80 for (i = IEEE1394_SPEED_100; i <= old_speed; i++) {
81 *speed = i; 81 *speed = i;
82 ret = hpsb_read(ci->host, ci->nodeid, ci->generation, addr, 82 error = hpsb_read(ci->host, ci->nodeid, ci->generation, addr,
83 &q, sizeof(quadlet_t)); 83 &q, sizeof(quadlet_t));
84 if (ret) 84 if (error)
85 break; 85 break;
86 *buffer = q; 86 *buffer = q;
87 good_speed = i; 87 good_speed = i;
@@ -95,19 +95,19 @@ static int nodemgr_check_speed(struct nodemgr_csr_info *ci, u64 addr,
95 return 0; 95 return 0;
96 } 96 }
97 *speed = old_speed; 97 *speed = old_speed;
98 return ret; 98 return error;
99} 99}
100 100
101static int nodemgr_bus_read(struct csr1212_csr *csr, u64 addr, u16 length, 101static int nodemgr_bus_read(struct csr1212_csr *csr, u64 addr, u16 length,
102 void *buffer, void *__ci) 102 void *buffer, void *__ci)
103{ 103{
104 struct nodemgr_csr_info *ci = (struct nodemgr_csr_info*)__ci; 104 struct nodemgr_csr_info *ci = (struct nodemgr_csr_info*)__ci;
105 int i, ret; 105 int i, error;
106 106
107 for (i = 1; ; i++) { 107 for (i = 1; ; i++) {
108 ret = hpsb_read(ci->host, ci->nodeid, ci->generation, addr, 108 error = hpsb_read(ci->host, ci->nodeid, ci->generation, addr,
109 buffer, length); 109 buffer, length);
110 if (!ret) { 110 if (!error) {
111 ci->speed_unverified = 0; 111 ci->speed_unverified = 0;
112 break; 112 break;
113 } 113 }
@@ -118,14 +118,14 @@ static int nodemgr_bus_read(struct csr1212_csr *csr, u64 addr, u16 length,
118 /* The ieee1394_core guessed the node's speed capability from 118 /* The ieee1394_core guessed the node's speed capability from
119 * the self ID. Check whether a lower speed works. */ 119 * the self ID. Check whether a lower speed works. */
120 if (ci->speed_unverified && length == sizeof(quadlet_t)) { 120 if (ci->speed_unverified && length == sizeof(quadlet_t)) {
121 ret = nodemgr_check_speed(ci, addr, buffer); 121 error = nodemgr_check_speed(ci, addr, buffer);
122 if (!ret) 122 if (!error)
123 break; 123 break;
124 } 124 }
125 if (msleep_interruptible(334)) 125 if (msleep_interruptible(334))
126 return -EINTR; 126 return -EINTR;
127 } 127 }
128 return ret; 128 return error;
129} 129}
130 130
131static int nodemgr_get_max_rom(quadlet_t *bus_info_data, void *__ci) 131static int nodemgr_get_max_rom(quadlet_t *bus_info_data, void *__ci)
@@ -1226,14 +1226,11 @@ static int nodemgr_uevent(struct class_device *cdev, char **envp, int num_envp,
1226 1226
1227int hpsb_register_protocol(struct hpsb_protocol_driver *driver) 1227int hpsb_register_protocol(struct hpsb_protocol_driver *driver)
1228{ 1228{
1229 int ret;
1230
1231 /* This will cause a probe for devices */ 1229 /* This will cause a probe for devices */
1232 ret = driver_register(&driver->driver); 1230 int error = driver_register(&driver->driver);
1233 if (!ret) 1231 if (!error)
1234 nodemgr_create_drv_files(driver); 1232 nodemgr_create_drv_files(driver);
1235 1233 return error;
1236 return ret;
1237} 1234}
1238 1235
1239void hpsb_unregister_protocol(struct hpsb_protocol_driver *driver) 1236void hpsb_unregister_protocol(struct hpsb_protocol_driver *driver)
@@ -1468,7 +1465,7 @@ static void nodemgr_irm_write_bc(struct node_entry *ne, int generation)
1468{ 1465{
1469 const u64 bc_addr = (CSR_REGISTER_BASE | CSR_BROADCAST_CHANNEL); 1466 const u64 bc_addr = (CSR_REGISTER_BASE | CSR_BROADCAST_CHANNEL);
1470 quadlet_t bc_remote, bc_local; 1467 quadlet_t bc_remote, bc_local;
1471 int ret; 1468 int error;
1472 1469
1473 if (!ne->host->is_irm || ne->generation != generation || 1470 if (!ne->host->is_irm || ne->generation != generation ||
1474 ne->nodeid == ne->host->node_id) 1471 ne->nodeid == ne->host->node_id)
@@ -1477,9 +1474,9 @@ static void nodemgr_irm_write_bc(struct node_entry *ne, int generation)
1477 bc_local = cpu_to_be32(ne->host->csr.broadcast_channel); 1474 bc_local = cpu_to_be32(ne->host->csr.broadcast_channel);
1478 1475
1479 /* Check if the register is implemented and 1394a compliant. */ 1476 /* Check if the register is implemented and 1394a compliant. */
1480 ret = hpsb_read(ne->host, ne->nodeid, generation, bc_addr, &bc_remote, 1477 error = hpsb_read(ne->host, ne->nodeid, generation, bc_addr, &bc_remote,
1481 sizeof(bc_remote)); 1478 sizeof(bc_remote));
1482 if (!ret && bc_remote & cpu_to_be32(0x80000000) && 1479 if (!error && bc_remote & cpu_to_be32(0x80000000) &&
1483 bc_remote != bc_local) 1480 bc_remote != bc_local)
1484 hpsb_node_write(ne, bc_addr, &bc_local, sizeof(bc_local)); 1481 hpsb_node_write(ne, bc_addr, &bc_local, sizeof(bc_local));
1485} 1482}
@@ -1569,7 +1566,7 @@ static void nodemgr_node_probe(struct host_info *hi, int generation)
1569static int nodemgr_send_resume_packet(struct hpsb_host *host) 1566static int nodemgr_send_resume_packet(struct hpsb_host *host)
1570{ 1567{
1571 struct hpsb_packet *packet; 1568 struct hpsb_packet *packet;
1572 int ret = 1; 1569 int error = -ENOMEM;
1573 1570
1574 packet = hpsb_make_phypacket(host, 1571 packet = hpsb_make_phypacket(host,
1575 EXTPHYPACKET_TYPE_RESUME | 1572 EXTPHYPACKET_TYPE_RESUME |
@@ -1577,12 +1574,12 @@ static int nodemgr_send_resume_packet(struct hpsb_host *host)
1577 if (packet) { 1574 if (packet) {
1578 packet->no_waiter = 1; 1575 packet->no_waiter = 1;
1579 packet->generation = get_hpsb_generation(host); 1576 packet->generation = get_hpsb_generation(host);
1580 ret = hpsb_send_packet(packet); 1577 error = hpsb_send_packet(packet);
1581 } 1578 }
1582 if (ret) 1579 if (error)
1583 HPSB_WARN("fw-host%d: Failed to broadcast resume packet", 1580 HPSB_WARN("fw-host%d: Failed to broadcast resume packet",
1584 host->id); 1581 host->id);
1585 return ret; 1582 return error;
1586} 1583}
1587 1584
1588/* Perform a few high-level IRM responsibilities. */ 1585/* Perform a few high-level IRM responsibilities. */
@@ -1852,20 +1849,19 @@ static struct hpsb_highlevel nodemgr_highlevel = {
1852 1849
1853int init_ieee1394_nodemgr(void) 1850int init_ieee1394_nodemgr(void)
1854{ 1851{
1855 int ret; 1852 int error;
1856 1853
1857 ret = class_register(&nodemgr_ne_class); 1854 error = class_register(&nodemgr_ne_class);
1858 if (ret < 0) 1855 if (error)
1859 return ret; 1856 return error;
1860 1857
1861 ret = class_register(&nodemgr_ud_class); 1858 error = class_register(&nodemgr_ud_class);
1862 if (ret < 0) { 1859 if (error) {
1863 class_unregister(&nodemgr_ne_class); 1860 class_unregister(&nodemgr_ne_class);
1864 return ret; 1861 return error;
1865 } 1862 }
1866 1863
1867 hpsb_register_highlevel(&nodemgr_highlevel); 1864 hpsb_register_highlevel(&nodemgr_highlevel);
1868
1869 return 0; 1865 return 0;
1870} 1866}
1871 1867