aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wimax
diff options
context:
space:
mode:
authorCindy H Kao <cindy.h.kao@intel.com>2009-10-02 22:18:43 -0400
committerInaky Perez-Gonzalez <inaky@linux.intel.com>2009-10-19 02:56:15 -0400
commit6f4fc90a36fbe87e3003b3f7c8090ecc89bd1353 (patch)
tree9c782cc91f7a374b45bf3ec8c59637cd0a4b4d01 /drivers/net/wimax
parent81d3f905389e22bb9a5176b9309c3f451c260e1a (diff)
wimax/i2400m: use JUMP cmd for last FW chunk indication
Both secure and non-secure boot must set the JUMP command in the bootmode header as the last FW chunk, so we change to use the JUMP command to decide if the FW chunk download is completed. Since we tend to use one single FW to support both secure and non-secure boot for most of the time, I2400M_BRH_SIGNED_JUMP is actually found even for non-secure boot. But in case the FW does come with I2400M_BRH_JUMP, we check for both of them in i2400m_dnload_bcf(). Signed-off-by: Cindy H Kao <cindy.h.kao@intel.com> Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
Diffstat (limited to 'drivers/net/wimax')
-rw-r--r--drivers/net/wimax/i2400m/fw.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/net/wimax/i2400m/fw.c b/drivers/net/wimax/i2400m/fw.c
index 3d67bcfc7b58..97ea78406725 100644
--- a/drivers/net/wimax/i2400m/fw.c
+++ b/drivers/net/wimax/i2400m/fw.c
@@ -720,14 +720,17 @@ ssize_t i2400m_dnload_bcf(struct i2400m *i2400m,
720 "downloading section #%zu (@%zu %zu B) to 0x%08x\n", 720 "downloading section #%zu (@%zu %zu B) to 0x%08x\n",
721 section, offset, sizeof(*bh) + data_size, 721 section, offset, sizeof(*bh) + data_size,
722 le32_to_cpu(bh->target_addr)); 722 le32_to_cpu(bh->target_addr));
723 if (i2400m_brh_get_opcode(bh) == I2400M_BRH_SIGNED_JUMP) { 723 /*
724 /* Secure boot needs to stop here */ 724 * We look for JUMP cmd from the bootmode header,
725 d_printf(5, dev, "signed jump found @%zu\n", offset); 725 * either I2400M_BRH_SIGNED_JUMP for secure boot
726 * or I2400M_BRH_JUMP for unsecure boot, the last chunk
727 * should be the bootmode header with JUMP cmd.
728 */
729 if (i2400m_brh_get_opcode(bh) == I2400M_BRH_SIGNED_JUMP ||
730 i2400m_brh_get_opcode(bh) == I2400M_BRH_JUMP) {
731 d_printf(5, dev, "jump found @%zu\n", offset);
726 break; 732 break;
727 } 733 }
728 if (offset + section_size == bcf_len)
729 /* Non-secure boot stops here */
730 break;
731 if (offset + section_size > bcf_len) { 734 if (offset + section_size > bcf_len) {
732 dev_err(dev, "fw %s: bad section #%zu, " 735 dev_err(dev, "fw %s: bad section #%zu, "
733 "end (@%zu) beyond EOF (@%zu)\n", 736 "end (@%zu) beyond EOF (@%zu)\n",