Lines Matching +full:rom +full:- +full:15 +full:h

1 // SPDX-License-Identifier: ISC
6 #include <linux/kernel.h>
7 #include <linux/firmware.h>
8 #include <linux/delay.h>
10 #include "mt76x2.h"
11 #include "mcu.h"
12 #include "eeprom.h"
25 dev_err(dev->mt76.dev, in mt76pci_load_rom_patch()
26 "Could not get hardware semaphore for ROM PATCH\n"); in mt76pci_load_rom_patch()
27 return -ETIMEDOUT; in mt76pci_load_rom_patch()
39 dev_info(dev->mt76.dev, "ROM patch already applied\n"); in mt76pci_load_rom_patch()
43 ret = request_firmware(&fw, MT7662_ROM_PATCH, dev->mt76.dev); in mt76pci_load_rom_patch()
47 if (!fw || !fw->data || fw->size <= sizeof(*hdr)) { in mt76pci_load_rom_patch()
48 ret = -EIO; in mt76pci_load_rom_patch()
49 dev_err(dev->mt76.dev, "Failed to load firmware\n"); in mt76pci_load_rom_patch()
53 hdr = (struct mt76x02_patch_header *)fw->data; in mt76pci_load_rom_patch()
54 dev_info(dev->mt76.dev, "ROM patch build: %.15s\n", hdr->build_time); in mt76pci_load_rom_patch()
58 cur = (__le32 *)(fw->data + sizeof(*hdr)); in mt76pci_load_rom_patch()
59 len = fw->size - sizeof(*hdr); in mt76pci_load_rom_patch()
64 /* Trigger ROM */ in mt76pci_load_rom_patch()
68 dev_err(dev->mt76.dev, "Failed to load ROM patch\n"); in mt76pci_load_rom_patch()
69 ret = -ETIMEDOUT; in mt76pci_load_rom_patch()
89 ret = request_firmware(&fw, MT7662_FIRMWARE, dev->mt76.dev); in mt76pci_load_firmware()
93 if (!fw || !fw->data || fw->size < sizeof(*hdr)) in mt76pci_load_firmware()
96 hdr = (const struct mt76x02_fw_header *)fw->data; in mt76pci_load_firmware()
99 len += le32_to_cpu(hdr->ilm_len); in mt76pci_load_firmware()
100 len += le32_to_cpu(hdr->dlm_len); in mt76pci_load_firmware()
102 if (fw->size != len) in mt76pci_load_firmware()
105 val = le16_to_cpu(hdr->fw_ver); in mt76pci_load_firmware()
106 dev_info(dev->mt76.dev, "Firmware Version: %d.%d.%02d\n", in mt76pci_load_firmware()
109 val = le16_to_cpu(hdr->build_ver); in mt76pci_load_firmware()
110 dev_info(dev->mt76.dev, "Build: %x\n", val); in mt76pci_load_firmware()
111 dev_info(dev->mt76.dev, "Build Time: %.16s\n", hdr->build_time); in mt76pci_load_firmware()
113 cur = (__le32 *)(fw->data + sizeof(*hdr)); in mt76pci_load_firmware()
114 len = le32_to_cpu(hdr->ilm_len); in mt76pci_load_firmware()
120 len = le32_to_cpu(hdr->dlm_len); in mt76pci_load_firmware()
139 dev_err(dev->mt76.dev, "Firmware failed to start\n"); in mt76pci_load_firmware()
141 return -ETIMEDOUT; in mt76pci_load_firmware()
145 dev_info(dev->mt76.dev, "Firmware running!\n"); in mt76pci_load_firmware()
152 dev_err(dev->mt76.dev, "Invalid firmware\n"); in mt76pci_load_firmware()
154 return -ENOENT; in mt76pci_load_firmware()
186 dev->mt76.mcu_ops = &mt76x2_mcu_ops; in mt76x2_mcu_init()