Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 153843
b: refs/heads/master
c: d645f4d
h: refs/heads/master
i:
  153841: f184fd7
  153839: fb4be46
v: v3
  • Loading branch information
Stefan Richter committed Jun 16, 2009
1 parent 7d38880 commit 2aada5e
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 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: 29ad14cddd6246d17ff22f496363dfd6b3de8964
refs/heads/master: d645f4dad056a98089df904294f66b96d04e91b6
18 changes: 11 additions & 7 deletions trunk/drivers/firewire/core-card.c
Original file line number Diff line number Diff line change
Expand Up @@ -461,11 +461,11 @@ EXPORT_SYMBOL(fw_card_add);


/*
* The next few functions implements a dummy driver that use once a
* card driver shuts down an fw_card. This allows the driver to
* cleanly unload, as all IO to the card will be handled by the dummy
* driver instead of calling into the (possibly) unloaded module. The
* dummy driver just fails all IO.
* The next few functions implement a dummy driver that is used once a card
* driver shuts down an fw_card. This allows the driver to cleanly unload,
* as all IO to the card will be handled (and failed) by the dummy driver
* instead of calling into the module. Only functions for iso context
* shutdown still need to be provided by the card driver.
*/

static int dummy_enable(struct fw_card *card, u32 *config_rom, size_t length)
Expand Down Expand Up @@ -512,7 +512,7 @@ static int dummy_enable_phys_dma(struct fw_card *card,
return -ENODEV;
}

static struct fw_card_driver dummy_driver = {
static const struct fw_card_driver dummy_driver_template = {
.enable = dummy_enable,
.update_phy_reg = dummy_update_phy_reg,
.set_config_rom = dummy_set_config_rom,
Expand All @@ -531,6 +531,8 @@ void fw_card_release(struct kref *kref)

void fw_core_remove_card(struct fw_card *card)
{
struct fw_card_driver dummy_driver = dummy_driver_template;

card->driver->update_phy_reg(card, 4,
PHY_LINK_ACTIVE | PHY_CONTENDER, 0);
fw_core_initiate_bus_reset(card, 1);
Expand All @@ -539,7 +541,9 @@ void fw_core_remove_card(struct fw_card *card)
list_del_init(&card->link);
mutex_unlock(&card_mutex);

/* Set up the dummy driver. */
/* Switch off most of the card driver interface. */
dummy_driver.free_iso_context = card->driver->free_iso_context;
dummy_driver.stop_iso = card->driver->stop_iso;
card->driver = &dummy_driver;

fw_destroy_nodes(card);
Expand Down

0 comments on commit 2aada5e

Please sign in to comment.