diff options
author | Arnd Bergmann <arnd@arndb.de> | 2006-01-12 17:16:41 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2006-01-17 07:25:00 -0500 |
commit | 0d3ea1666f1894a874681fe33e2cb7fee41a0c73 (patch) | |
tree | 6a206ebf46fe622ae6d06923c92b8a737f63ce86 /drivers/net/spider_net.c | |
parent | c2e5b352fcefb644959a0c8b1bb2e297f0d4ac3d (diff) |
[PATCH] spidernet: check if firmware was loaded correctly
Uploading the device firmware may fail if wrong input data
was provided by the user. This checks for the condition.
From: Jens Osterkamp <Jens.Osterkamp@de.ibm.com>
Signed-off-by: Jens Osterkamp <Jens.Osterkamp@de.ibm.com>
Signed-off-by: Arnd Bergmann <arndb@de.ibm.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/spider_net.c')
-rw-r--r-- | drivers/net/spider_net.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c index 0d765f1733b5..2154469678b7 100644 --- a/drivers/net/spider_net.c +++ b/drivers/net/spider_net.c | |||
@@ -1836,7 +1836,7 @@ spider_net_setup_phy(struct spider_net_card *card) | |||
1836 | * spider_net_download_firmware loads the firmware opened by | 1836 | * spider_net_download_firmware loads the firmware opened by |
1837 | * spider_net_init_firmware into the adapter. | 1837 | * spider_net_init_firmware into the adapter. |
1838 | */ | 1838 | */ |
1839 | static void | 1839 | static int |
1840 | spider_net_download_firmware(struct spider_net_card *card, | 1840 | spider_net_download_firmware(struct spider_net_card *card, |
1841 | const struct firmware *firmware) | 1841 | const struct firmware *firmware) |
1842 | { | 1842 | { |
@@ -1857,8 +1857,13 @@ spider_net_download_firmware(struct spider_net_card *card, | |||
1857 | } | 1857 | } |
1858 | } | 1858 | } |
1859 | 1859 | ||
1860 | if (spider_net_read_reg(card, SPIDER_NET_GSINIT)) | ||
1861 | return -EIO; | ||
1862 | |||
1860 | spider_net_write_reg(card, SPIDER_NET_GSINIT, | 1863 | spider_net_write_reg(card, SPIDER_NET_GSINIT, |
1861 | SPIDER_NET_RUN_SEQ_VALUE); | 1864 | SPIDER_NET_RUN_SEQ_VALUE); |
1865 | |||
1866 | return 0; | ||
1862 | } | 1867 | } |
1863 | 1868 | ||
1864 | /** | 1869 | /** |
@@ -1909,9 +1914,8 @@ spider_net_init_firmware(struct spider_net_card *card) | |||
1909 | goto out; | 1914 | goto out; |
1910 | } | 1915 | } |
1911 | 1916 | ||
1912 | spider_net_download_firmware(card, firmware); | 1917 | if (!spider_net_download_firmware(card, firmware)) |
1913 | 1918 | err = 0; | |
1914 | err = 0; | ||
1915 | out: | 1919 | out: |
1916 | release_firmware(firmware); | 1920 | release_firmware(firmware); |
1917 | 1921 | ||