u32 code = le32_to_cpu(bootrec->code);
                switch (code) {
                case BR_CODE_COMPONENT_ID:
-                       priv->fw_interface = be32_to_cpup(bootrec->data);
+                       priv->fw_interface = be32_to_cpup((__be32 *)
+                                            bootrec->data);
                        switch (priv->fw_interface) {
                        case FW_FMAC:
                                printk(KERN_INFO "p54: FreeMAC firmware\n");
                        priv->rx_end = le32_to_cpu(desc->rx_end) - 0x3500;
                        priv->headroom = desc->headroom;
                        priv->tailroom = desc->tailroom;
-                       if (bootrec->len == 11)
-                               priv->rx_mtu = (size_t) le16_to_cpu(
-                                       (__le16)bootrec->data[10]);
+                       if (le32_to_cpu(bootrec->len) == 11)
+                               priv->rx_mtu = le16_to_cpu(bootrec->rx_mtu);
                        else
                                priv->rx_mtu = (size_t)
                                        0x620 - priv->tx_hdr_len;
        return 0;
 }
 
-const char* p54_rf_chips[] = { "NULL", "Indigo?", "Duette",
+static const char *p54_rf_chips[] = { "NULL", "Indigo?", "Duette",
                               "Frisbee", "Xbow", "Longbow" };
 static int p54_init_xbow_synth(struct ieee80211_hw *dev);
 
-int p54_parse_eeprom(struct ieee80211_hw *dev, void *eeprom, int len)
+static int p54_parse_eeprom(struct ieee80211_hw *dev, void *eeprom, int len)
 {
        struct p54_common *priv = dev->priv;
        struct eeprom_pda_wrap *wrap = NULL;
        if (!priv->eeprom)
                return ;
 
-       memcpy(priv->eeprom, eeprom->data, eeprom->len);
+       memcpy(priv->eeprom, eeprom->data, le16_to_cpu(eeprom->len));
 
        complete(&priv->eeprom_comp);
 }
                hdr->len = cpu_to_le16(blocksize + sizeof(*eeprom_hdr));
                eeprom_hdr->offset = cpu_to_le16(offset);
                eeprom_hdr->len = cpu_to_le16(blocksize);
-               p54_assign_address(dev, NULL, hdr, hdr->len + sizeof(*hdr));
-               priv->tx(dev, hdr, hdr->len + sizeof(*hdr), 0);
+               p54_assign_address(dev, NULL, hdr, le16_to_cpu(hdr->len) +
+                                  sizeof(*hdr));
+               priv->tx(dev, hdr, le16_to_cpu(hdr->len) + sizeof(*hdr), 0);
 
                if (!wait_for_completion_interruptible_timeout(&priv->eeprom_comp, HZ)) {
                        printk(KERN_ERR "%s: device does not respond!\n",
 
        if (changed_flags & FIF_BCN_PRBRESP_PROMISC) {
                if (*total_flags & FIF_BCN_PRBRESP_PROMISC)
-                       p54_set_filter(dev, priv->filter_type, NULL);
+                       p54_set_filter(dev, le16_to_cpu(priv->filter_type),
+                                NULL);
                else
-                       p54_set_filter(dev, priv->filter_type, priv->bssid);
+                       p54_set_filter(dev, le16_to_cpu(priv->filter_type),
+                                priv->bssid);
        }
 
        if (changed_flags & FIF_PROMISC_IN_BSS) {
                if (*total_flags & FIF_PROMISC_IN_BSS)
-                       p54_set_filter(dev, priv->filter_type |
-                               cpu_to_le16(0x8), NULL);
+                       p54_set_filter(dev, le16_to_cpu(priv->filter_type) |
+                               0x8, NULL);
                else
-                       p54_set_filter(dev, priv->filter_type &
-                               ~cpu_to_le16(0x8), priv->bssid);
+                       p54_set_filter(dev, le16_to_cpu(priv->filter_type) &
+                               ~0x8, priv->bssid);
        }
 }