From d180e1bb09e13e860a7b1f6e4994cd5d84c0042f Mon Sep 17 00:00:00 2001 From: Arnd Bergmann Date: Thu, 12 Jan 2006 17:16:42 -0500 Subject: [PATCH] --- yaml --- r: 18786 b: refs/heads/master c: 030d6753f8b6251927330431a7e5f0ac86bc6da9 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/spider_net.c | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 0acc90e4a343..53e2d89fc4ac 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0d3ea1666f1894a874681fe33e2cb7fee41a0c73 +refs/heads/master: 030d6753f8b6251927330431a7e5f0ac86bc6da9 diff --git a/trunk/drivers/net/spider_net.c b/trunk/drivers/net/spider_net.c index 2154469678b7..94e238f6ed31 100644 --- a/trunk/drivers/net/spider_net.c +++ b/trunk/drivers/net/spider_net.c @@ -1895,16 +1895,27 @@ spider_net_download_firmware(struct spider_net_card *card, static int spider_net_init_firmware(struct spider_net_card *card) { - const struct firmware *firmware; + struct firmware *firmware; + struct device_node *dn; + u8 *fw_prop; int err = -EIO; - if (request_firmware(&firmware, + if (request_firmware((const struct firmware **)&firmware, SPIDER_NET_FIRMWARE_NAME, &card->pdev->dev) < 0) { if (netif_msg_probe(card)) pr_err("Couldn't read in sequencer data file %s.\n", SPIDER_NET_FIRMWARE_NAME); - firmware = NULL; - goto out; + + dn = pci_device_to_OF_node(card->pdev); + if (!dn) + goto out; + + fw_prop = (u8 *)get_property(dn, "firmware", NULL); + if (!fw_prop) + goto out; + + memcpy(firmware->data, fw_prop, 6 * SPIDER_NET_FIRMWARE_LEN * sizeof(u32)); + firmware->size = 6 * SPIDER_NET_FIRMWARE_LEN * sizeof(u32); } if (firmware->size != 6 * SPIDER_NET_FIRMWARE_LEN * sizeof(u32)) {