diff options
Diffstat (limited to 'drivers/net/wimax/i2400m/fw.c')
-rw-r--r-- | drivers/net/wimax/i2400m/fw.c | 45 |
1 files changed, 13 insertions, 32 deletions
diff --git a/drivers/net/wimax/i2400m/fw.c b/drivers/net/wimax/i2400m/fw.c index c48fa241857a..349344ad9b61 100644 --- a/drivers/net/wimax/i2400m/fw.c +++ b/drivers/net/wimax/i2400m/fw.c | |||
@@ -770,40 +770,21 @@ error_read_mac: | |||
770 | static | 770 | static |
771 | int i2400m_dnload_init_nonsigned(struct i2400m *i2400m) | 771 | int i2400m_dnload_init_nonsigned(struct i2400m *i2400m) |
772 | { | 772 | { |
773 | #define POKE(a, d) { \ | 773 | unsigned i = 0; |
774 | .address = cpu_to_le32(a), \ | 774 | int ret = 0; |
775 | .data = cpu_to_le32(d) \ | ||
776 | } | ||
777 | static const struct { | ||
778 | __le32 address; | ||
779 | __le32 data; | ||
780 | } i2400m_pokes[] = { | ||
781 | POKE(0x081A58, 0xA7810230), | ||
782 | POKE(0x080040, 0x00000000), | ||
783 | POKE(0x080048, 0x00000082), | ||
784 | POKE(0x08004C, 0x0000081F), | ||
785 | POKE(0x080054, 0x00000085), | ||
786 | POKE(0x080058, 0x00000180), | ||
787 | POKE(0x08005C, 0x00000018), | ||
788 | POKE(0x080060, 0x00000010), | ||
789 | POKE(0x080574, 0x00000001), | ||
790 | POKE(0x080550, 0x00000005), | ||
791 | POKE(0xAE0000, 0x00000000), | ||
792 | }; | ||
793 | #undef POKE | ||
794 | unsigned i; | ||
795 | int ret; | ||
796 | struct device *dev = i2400m_dev(i2400m); | 775 | struct device *dev = i2400m_dev(i2400m); |
797 | |||
798 | dev_warn(dev, "WARNING!!! non-signed boot UNTESTED PATH!\n"); | ||
799 | |||
800 | d_fnstart(5, dev, "(i2400m %p)\n", i2400m); | 776 | d_fnstart(5, dev, "(i2400m %p)\n", i2400m); |
801 | for (i = 0; i < ARRAY_SIZE(i2400m_pokes); i++) { | 777 | if (i2400m->bus_bm_pokes_table) { |
802 | ret = i2400m_download_chunk(i2400m, &i2400m_pokes[i].data, | 778 | while (i2400m->bus_bm_pokes_table[i].address) { |
803 | sizeof(i2400m_pokes[i].data), | 779 | ret = i2400m_download_chunk( |
804 | i2400m_pokes[i].address, 1, 1); | 780 | i2400m, |
805 | if (ret < 0) | 781 | &i2400m->bus_bm_pokes_table[i].data, |
806 | break; | 782 | sizeof(i2400m->bus_bm_pokes_table[i].data), |
783 | i2400m->bus_bm_pokes_table[i].address, 1, 1); | ||
784 | if (ret < 0) | ||
785 | break; | ||
786 | i++; | ||
787 | } | ||
807 | } | 788 | } |
808 | d_fnend(5, dev, "(i2400m %p) = %d\n", i2400m, ret); | 789 | d_fnend(5, dev, "(i2400m %p) = %d\n", i2400m, ret); |
809 | return ret; | 790 | return ret; |