projects
/
cascardo
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] remove many unneeded #includes of sched.h
[cascardo/linux.git]
/
drivers
/
ieee1394
/
hosts.c
diff --git
a/drivers/ieee1394/hosts.c
b/drivers/ieee1394/hosts.c
index
8f4378a
..
32a1309
100644
(file)
--- a/
drivers/ieee1394/hosts.c
+++ b/
drivers/ieee1394/hosts.c
@@
-44,9
+44,10
@@
static void delayed_reset_bus(struct work_struct *work)
CSR_SET_BUS_INFO_GENERATION(host->csr.rom, generation);
if (csr1212_generate_csr_image(host->csr.rom) != CSR1212_SUCCESS) {
CSR_SET_BUS_INFO_GENERATION(host->csr.rom, generation);
if (csr1212_generate_csr_image(host->csr.rom) != CSR1212_SUCCESS) {
- /* CSR image creation failed, reset generation field and do not
- * issue a bus reset. */
- CSR_SET_BUS_INFO_GENERATION(host->csr.rom, host->csr.generation);
+ /* CSR image creation failed.
+ * Reset generation field and do not issue a bus reset. */
+ CSR_SET_BUS_INFO_GENERATION(host->csr.rom,
+ host->csr.generation);
return;
}
return;
}
@@
-54,7
+55,8
@@
static void delayed_reset_bus(struct work_struct *work)
host->update_config_rom = 0;
if (host->driver->set_hw_config_rom)
host->update_config_rom = 0;
if (host->driver->set_hw_config_rom)
- host->driver->set_hw_config_rom(host, host->csr.rom->bus_info_data);
+ host->driver->set_hw_config_rom(host,
+ host->csr.rom->bus_info_data);
host->csr.gen_timestamp[host->csr.generation] = jiffies;
hpsb_reset_bus(host, SHORT_RESET);
host->csr.gen_timestamp[host->csr.generation] = jiffies;
hpsb_reset_bus(host, SHORT_RESET);
@@
-70,7
+72,8
@@
static int dummy_devctl(struct hpsb_host *h, enum devctl_cmd c, int arg)
return -1;
}
return -1;
}
-static int dummy_isoctl(struct hpsb_iso *iso, enum isoctl_cmd command, unsigned long arg)
+static int dummy_isoctl(struct hpsb_iso *iso, enum isoctl_cmd command,
+ unsigned long arg)
{
return -1;
}
{
return -1;
}
@@
-123,15
+126,13
@@
struct hpsb_host *hpsb_alloc_host(struct hpsb_host_driver *drv, size_t extra,
int i;
int hostnum = 0;
int i;
int hostnum = 0;
- h = kzalloc(sizeof(*h) + extra,
SLAB
_KERNEL);
+ h = kzalloc(sizeof(*h) + extra,
GFP
_KERNEL);
if (!h)
return NULL;
h->csr.rom = csr1212_create_csr(&csr_bus_ops, CSR_BUS_INFO_SIZE, h);
if (!h)
return NULL;
h->csr.rom = csr1212_create_csr(&csr_bus_ops, CSR_BUS_INFO_SIZE, h);
- if (!h->csr.rom) {
- kfree(h);
- return NULL;
- }
+ if (!h->csr.rom)
+ goto fail;
h->hostdata = h + 1;
h->driver = drv;
h->hostdata = h + 1;
h->driver = drv;
@@
-151,16
+152,15
@@
struct hpsb_host *hpsb_alloc_host(struct hpsb_host_driver *drv, size_t extra,
init_timer(&h->timeout);
h->timeout.data = (unsigned long) h;
h->timeout.function = abort_timedouts;
init_timer(&h->timeout);
h->timeout.data = (unsigned long) h;
h->timeout.function = abort_timedouts;
- h->timeout_interval = HZ / 20; /
/ 50ms by default
+ h->timeout_interval = HZ / 20; /
* 50ms, half of minimum SPLIT_TIMEOUT */
h->topology_map = h->csr.topology_map + 3;
h->speed_map = (u8 *)(h->csr.speed_map + 2);
mutex_lock(&host_num_alloc);
h->topology_map = h->csr.topology_map + 3;
h->speed_map = (u8 *)(h->csr.speed_map + 2);
mutex_lock(&host_num_alloc);
-
while (nodemgr_for_each_host(&hostnum, alloc_hostnum_cb))
hostnum++;
while (nodemgr_for_each_host(&hostnum, alloc_hostnum_cb))
hostnum++;
-
+ mutex_unlock(&host_num_alloc);
h->id = hostnum;
memcpy(&h->device, &nodemgr_dev_template_host, sizeof(h->device));
h->id = hostnum;
memcpy(&h->device, &nodemgr_dev_template_host, sizeof(h->device));
@@
-171,27
+171,38
@@
struct hpsb_host *hpsb_alloc_host(struct hpsb_host_driver *drv, size_t extra,
h->class_dev.class = &hpsb_host_class;
snprintf(h->class_dev.class_id, BUS_ID_SIZE, "fw-host%d", h->id);
h->class_dev.class = &hpsb_host_class;
snprintf(h->class_dev.class_id, BUS_ID_SIZE, "fw-host%d", h->id);
- device_register(&h->device);
- class_device_register(&h->class_dev);
+ if (device_register(&h->device))
+ goto fail;
+ if (class_device_register(&h->class_dev)) {
+ device_unregister(&h->device);
+ goto fail;
+ }
get_device(&h->device);
get_device(&h->device);
- mutex_unlock(&host_num_alloc);
-
return h;
return h;
+
+fail:
+ kfree(h);
+ return NULL;
}
int hpsb_add_host(struct hpsb_host *host)
{
if (hpsb_default_host_entry(host))
return -ENOMEM;
}
int hpsb_add_host(struct hpsb_host *host)
{
if (hpsb_default_host_entry(host))
return -ENOMEM;
-
hpsb_add_extra_config_roms(host);
hpsb_add_extra_config_roms(host);
-
highlevel_add_host(host);
highlevel_add_host(host);
-
return 0;
}
return 0;
}
+void hpsb_resume_host(struct hpsb_host *host)
+{
+ if (host->driver->set_hw_config_rom)
+ host->driver->set_hw_config_rom(host,
+ host->csr.rom->bus_info_data);
+ host->driver->devctl(host, RESET_BUS, SHORT_RESET);
+}
+
void hpsb_remove_host(struct hpsb_host *host)
{
host->is_shutdown = 1;
void hpsb_remove_host(struct hpsb_host *host)
{
host->is_shutdown = 1;
@@
-200,9
+211,7
@@
void hpsb_remove_host(struct hpsb_host *host)
flush_scheduled_work();
host->driver = &dummy_driver;
flush_scheduled_work();
host->driver = &dummy_driver;
-
highlevel_remove_host(host);
highlevel_remove_host(host);
-
hpsb_remove_extra_config_roms(host);
class_device_unregister(&host->class_dev);
hpsb_remove_extra_config_roms(host);
class_device_unregister(&host->class_dev);
@@
-229,7
+238,8
@@
int hpsb_update_config_rom_image(struct hpsb_host *host)
if (time_before(jiffies, host->csr.gen_timestamp[next_gen] + 60 * HZ))
/* Wait 60 seconds from the last time this generation number was
* used. */
if (time_before(jiffies, host->csr.gen_timestamp[next_gen] + 60 * HZ))
/* Wait 60 seconds from the last time this generation number was
* used. */
- reset_delay = (60 * HZ) + host->csr.gen_timestamp[next_gen] - jiffies;
+ reset_delay =
+ (60 * HZ) + host->csr.gen_timestamp[next_gen] - jiffies;
else
/* Wait 1 second in case some other code wants to change the
* Config ROM in the near future. */
else
/* Wait 1 second in case some other code wants to change the
* Config ROM in the near future. */