Lines Matching refs:dev

21 static void mt76x2u_mcu_load_ivb(struct mt76x02_dev *dev)  in mt76x2u_mcu_load_ivb()  argument
23 mt76u_vendor_request(&dev->mt76, MT_VEND_DEV_MODE, in mt76x2u_mcu_load_ivb()
28 static void mt76x2u_mcu_enable_patch(struct mt76x02_dev *dev) in mt76x2u_mcu_enable_patch() argument
30 struct mt76_usb *usb = &dev->mt76.usb; in mt76x2u_mcu_enable_patch()
38 mt76u_vendor_request(&dev->mt76, MT_VEND_DEV_MODE, in mt76x2u_mcu_enable_patch()
43 static void mt76x2u_mcu_reset_wmt(struct mt76x02_dev *dev) in mt76x2u_mcu_reset_wmt() argument
45 struct mt76_usb *usb = &dev->mt76.usb; in mt76x2u_mcu_reset_wmt()
52 mt76u_vendor_request(&dev->mt76, MT_VEND_DEV_MODE, in mt76x2u_mcu_reset_wmt()
57 static int mt76x2u_mcu_load_rom_patch(struct mt76x02_dev *dev) in mt76x2u_mcu_load_rom_patch() argument
59 bool rom_protect = !is_mt7612(dev); in mt76x2u_mcu_load_rom_patch()
66 !mt76_poll_msec(dev, MT_MCU_SEMAPHORE_03, 1, 1, 600)) { in mt76x2u_mcu_load_rom_patch()
67 dev_err(dev->mt76.dev, in mt76x2u_mcu_load_rom_patch()
72 if (mt76xx_rev(dev) >= MT76XX_REV_E3) { in mt76x2u_mcu_load_rom_patch()
80 if (rom_protect && (mt76_rr(dev, patch_reg) & patch_mask)) { in mt76x2u_mcu_load_rom_patch()
81 dev_info(dev->mt76.dev, "ROM patch already applied\n"); in mt76x2u_mcu_load_rom_patch()
85 err = request_firmware(&fw, MT7662_ROM_PATCH, dev->mt76.dev); in mt76x2u_mcu_load_rom_patch()
90 dev_err(dev->mt76.dev, "failed to load firmware\n"); in mt76x2u_mcu_load_rom_patch()
96 dev_info(dev->mt76.dev, "ROM patch build: %.15s\n", hdr->build_time); in mt76x2u_mcu_load_rom_patch()
102 mt76_wr(dev, MT_VEND_ADDR(CFG, MT_USB_U3DMA_CFG), val); in mt76x2u_mcu_load_rom_patch()
105 mt76x02u_mcu_fw_reset(dev); in mt76x2u_mcu_load_rom_patch()
109 mt76_wr(dev, MT_FCE_PSE_CTRL, 0x1); in mt76x2u_mcu_load_rom_patch()
111 mt76_wr(dev, MT_TX_CPU_FROM_FCE_BASE_PTR, 0x400230); in mt76x2u_mcu_load_rom_patch()
113 mt76_wr(dev, MT_TX_CPU_FROM_FCE_MAX_COUNT, 0x1); in mt76x2u_mcu_load_rom_patch()
115 mt76_wr(dev, MT_FCE_PDMA_GLOBAL_CONF, 0x44); in mt76x2u_mcu_load_rom_patch()
117 mt76_wr(dev, MT_FCE_SKIP_FS, 0x3); in mt76x2u_mcu_load_rom_patch()
119 err = mt76x02u_mcu_fw_send_data(dev, fw->data + sizeof(*hdr), in mt76x2u_mcu_load_rom_patch()
128 mt76x2u_mcu_enable_patch(dev); in mt76x2u_mcu_load_rom_patch()
129 mt76x2u_mcu_reset_wmt(dev); in mt76x2u_mcu_load_rom_patch()
132 if (!mt76_poll_msec(dev, patch_reg, patch_mask, patch_mask, 100)) { in mt76x2u_mcu_load_rom_patch()
133 dev_err(dev->mt76.dev, "failed to load ROM patch\n"); in mt76x2u_mcu_load_rom_patch()
139 mt76_wr(dev, MT_MCU_SEMAPHORE_03, 1); in mt76x2u_mcu_load_rom_patch()
144 static int mt76x2u_mcu_load_firmware(struct mt76x02_dev *dev) in mt76x2u_mcu_load_firmware() argument
151 err = request_firmware(&fw, MT7662_FIRMWARE, dev->mt76.dev); in mt76x2u_mcu_load_firmware()
170 dev_info(dev->mt76.dev, "Firmware Version: %d.%d.%02d\n", in mt76x2u_mcu_load_firmware()
174 dev_info(dev->mt76.dev, "Build: %x\n", val); in mt76x2u_mcu_load_firmware()
175 dev_info(dev->mt76.dev, "Build Time: %.16s\n", hdr->build_time); in mt76x2u_mcu_load_firmware()
178 mt76x02u_mcu_fw_reset(dev); in mt76x2u_mcu_load_firmware()
185 mt76_wr(dev, MT_VEND_ADDR(CFG, MT_USB_U3DMA_CFG), val); in mt76x2u_mcu_load_firmware()
187 mt76_wr(dev, MT_FCE_PSE_CTRL, 0x1); in mt76x2u_mcu_load_firmware()
189 mt76_wr(dev, MT_TX_CPU_FROM_FCE_BASE_PTR, 0x400230); in mt76x2u_mcu_load_firmware()
191 mt76_wr(dev, MT_TX_CPU_FROM_FCE_MAX_COUNT, 0x1); in mt76x2u_mcu_load_firmware()
193 mt76_wr(dev, MT_FCE_PDMA_GLOBAL_CONF, 0x44); in mt76x2u_mcu_load_firmware()
195 mt76_wr(dev, MT_FCE_SKIP_FS, 0x3); in mt76x2u_mcu_load_firmware()
198 err = mt76x02u_mcu_fw_send_data(dev, fw->data + sizeof(*hdr), in mt76x2u_mcu_load_firmware()
207 if (mt76xx_rev(dev) >= MT76XX_REV_E3) in mt76x2u_mcu_load_firmware()
209 err = mt76x02u_mcu_fw_send_data(dev, fw->data + sizeof(*hdr) + ilm_len, in mt76x2u_mcu_load_firmware()
217 mt76x2u_mcu_load_ivb(dev); in mt76x2u_mcu_load_firmware()
218 if (!mt76_poll_msec(dev, MT_MCU_COM_REG0, 1, 1, 100)) { in mt76x2u_mcu_load_firmware()
219 dev_err(dev->mt76.dev, "firmware failed to start\n"); in mt76x2u_mcu_load_firmware()
224 mt76_set(dev, MT_MCU_COM_REG0, BIT(1)); in mt76x2u_mcu_load_firmware()
226 mt76_wr(dev, MT_FCE_PSE_CTRL, 0x1); in mt76x2u_mcu_load_firmware()
227 mt76x02_set_ethtool_fwver(dev, hdr); in mt76x2u_mcu_load_firmware()
228 dev_dbg(dev->mt76.dev, "firmware running\n"); in mt76x2u_mcu_load_firmware()
235 int mt76x2u_mcu_fw_init(struct mt76x02_dev *dev) in mt76x2u_mcu_fw_init() argument
239 err = mt76x2u_mcu_load_rom_patch(dev); in mt76x2u_mcu_fw_init()
243 return mt76x2u_mcu_load_firmware(dev); in mt76x2u_mcu_fw_init()
246 int mt76x2u_mcu_init(struct mt76x02_dev *dev) in mt76x2u_mcu_init() argument
250 err = mt76x02_mcu_function_select(dev, Q_SELECT, 1); in mt76x2u_mcu_init()
254 return mt76x02_mcu_set_radio_state(dev, true); in mt76x2u_mcu_init()