Lines Matching refs:dev

35 bool mt7601u_usb_alloc_buf(struct mt7601u_dev *dev, size_t len,  in mt7601u_usb_alloc_buf()  argument
38 struct usb_device *usb_dev = mt7601u_to_usb_dev(dev); in mt7601u_usb_alloc_buf()
47 void mt7601u_usb_free_buf(struct mt7601u_dev *dev, struct mt7601u_dma_buf *buf) in mt7601u_usb_free_buf() argument
49 struct usb_device *usb_dev = mt7601u_to_usb_dev(dev); in mt7601u_usb_free_buf()
55 int mt7601u_usb_submit_buf(struct mt7601u_dev *dev, int dir, int ep_idx, in mt7601u_usb_submit_buf() argument
59 struct usb_device *usb_dev = mt7601u_to_usb_dev(dev); in mt7601u_usb_submit_buf()
64 pipe = usb_rcvbulkpipe(usb_dev, dev->in_eps[ep_idx]); in mt7601u_usb_submit_buf()
66 pipe = usb_sndbulkpipe(usb_dev, dev->out_eps[ep_idx]); in mt7601u_usb_submit_buf()
73 trace_mt_submit_urb(dev, buf->urb); in mt7601u_usb_submit_buf()
76 dev_err(dev->dev, "Error: submit URB dir:%d ep:%d failed:%d\n", in mt7601u_usb_submit_buf()
88 int mt7601u_vendor_request(struct mt7601u_dev *dev, const u8 req, in mt7601u_vendor_request() argument
93 struct usb_device *usb_dev = mt7601u_to_usb_dev(dev); in mt7601u_vendor_request()
102 trace_mt_vend_req(dev, pipe, req, req_type, val, offset, in mt7601u_vendor_request()
106 set_bit(MT7601U_STATE_REMOVED, &dev->state); in mt7601u_vendor_request()
113 dev_err(dev->dev, "Vendor request req:%02x off:%04x failed:%d\n", in mt7601u_vendor_request()
119 void mt7601u_vendor_reset(struct mt7601u_dev *dev) in mt7601u_vendor_reset() argument
121 mt7601u_vendor_request(dev, MT_VEND_DEV_MODE, USB_DIR_OUT, in mt7601u_vendor_reset()
126 static u32 __mt7601u_rr(struct mt7601u_dev *dev, u32 offset) in __mt7601u_rr() argument
133 ret = mt7601u_vendor_request(dev, MT_VEND_MULTI_READ, USB_DIR_IN, in __mt7601u_rr()
134 0, offset, dev->vend_buf, MT_VEND_BUF); in __mt7601u_rr()
136 val = get_unaligned_le32(dev->vend_buf); in __mt7601u_rr()
138 dev_err(dev->dev, "Error: wrong size read:%d off:%08x\n", in __mt7601u_rr()
141 trace_reg_read(dev, offset, val); in __mt7601u_rr()
145 u32 mt7601u_rr(struct mt7601u_dev *dev, u32 offset) in mt7601u_rr() argument
149 mutex_lock(&dev->vendor_req_mutex); in mt7601u_rr()
150 ret = __mt7601u_rr(dev, offset); in mt7601u_rr()
151 mutex_unlock(&dev->vendor_req_mutex); in mt7601u_rr()
157 static int __mt7601u_vendor_single_wr(struct mt7601u_dev *dev, const u8 req, in __mt7601u_vendor_single_wr() argument
160 int ret = mt7601u_vendor_request(dev, req, USB_DIR_OUT, in __mt7601u_vendor_single_wr()
163 ret = mt7601u_vendor_request(dev, req, USB_DIR_OUT, in __mt7601u_vendor_single_wr()
165 trace_reg_write(dev, offset, val); in __mt7601u_vendor_single_wr()
169 int mt7601u_vendor_single_wr(struct mt7601u_dev *dev, const u8 req, in mt7601u_vendor_single_wr() argument
174 mutex_lock(&dev->vendor_req_mutex); in mt7601u_vendor_single_wr()
175 ret = __mt7601u_vendor_single_wr(dev, req, offset, val); in mt7601u_vendor_single_wr()
176 mutex_unlock(&dev->vendor_req_mutex); in mt7601u_vendor_single_wr()
181 void mt7601u_wr(struct mt7601u_dev *dev, u32 offset, u32 val) in mt7601u_wr() argument
185 mt7601u_vendor_single_wr(dev, MT_VEND_WRITE, offset, val); in mt7601u_wr()
188 u32 mt7601u_rmw(struct mt7601u_dev *dev, u32 offset, u32 mask, u32 val) in mt7601u_rmw() argument
190 mutex_lock(&dev->vendor_req_mutex); in mt7601u_rmw()
191 val |= __mt7601u_rr(dev, offset) & ~mask; in mt7601u_rmw()
192 __mt7601u_vendor_single_wr(dev, MT_VEND_WRITE, offset, val); in mt7601u_rmw()
193 mutex_unlock(&dev->vendor_req_mutex); in mt7601u_rmw()
198 u32 mt7601u_rmc(struct mt7601u_dev *dev, u32 offset, u32 mask, u32 val) in mt7601u_rmc() argument
202 mutex_lock(&dev->vendor_req_mutex); in mt7601u_rmc()
203 reg = __mt7601u_rr(dev, offset); in mt7601u_rmc()
206 __mt7601u_vendor_single_wr(dev, MT_VEND_WRITE, in mt7601u_rmc()
208 mutex_unlock(&dev->vendor_req_mutex); in mt7601u_rmc()
213 void mt7601u_wr_copy(struct mt7601u_dev *dev, u32 offset, in mt7601u_wr_copy() argument
219 mt7601u_burst_write_regs(dev, offset, data, len / 4); in mt7601u_wr_copy()
222 void mt7601u_addr_wr(struct mt7601u_dev *dev, const u32 offset, const u8 *addr) in mt7601u_addr_wr() argument
224 mt7601u_wr(dev, offset, get_unaligned_le32(addr)); in mt7601u_addr_wr()
225 mt7601u_wr(dev, offset + 4, addr[4] | addr[5] << 8); in mt7601u_addr_wr()
229 struct mt7601u_dev *dev) in mt7601u_assign_pipes() argument
235 BUILD_BUG_ON(sizeof(dev->in_eps) < __MT_EP_IN_MAX); in mt7601u_assign_pipes()
236 BUILD_BUG_ON(sizeof(dev->out_eps) < __MT_EP_OUT_MAX); in mt7601u_assign_pipes()
243 dev->in_eps[ep_i - 1] = usb_endpoint_num(ep_desc); in mt7601u_assign_pipes()
244 dev->in_max_packet = usb_endpoint_maxp(ep_desc); in mt7601u_assign_pipes()
248 dev->in_eps[ep_i - 1] |= USB_DIR_IN; in mt7601u_assign_pipes()
251 dev->out_eps[ep_o - 1] = usb_endpoint_num(ep_desc); in mt7601u_assign_pipes()
252 dev->out_max_packet = usb_endpoint_maxp(ep_desc); in mt7601u_assign_pipes()
257 dev_err(dev->dev, "Error: wrong pipe number in:%d out:%d\n", in mt7601u_assign_pipes()
269 struct mt7601u_dev *dev; in mt7601u_probe() local
273 dev = mt7601u_alloc_device(&usb_intf->dev); in mt7601u_probe()
274 if (!dev) in mt7601u_probe()
280 usb_set_intfdata(usb_intf, dev); in mt7601u_probe()
282 dev->vend_buf = devm_kmalloc(dev->dev, MT_VEND_BUF, GFP_KERNEL); in mt7601u_probe()
283 if (!dev->vend_buf) { in mt7601u_probe()
288 ret = mt7601u_assign_pipes(usb_intf, dev); in mt7601u_probe()
291 ret = mt7601u_wait_asic_ready(dev); in mt7601u_probe()
295 asic_rev = mt7601u_rr(dev, MT_ASIC_VERSION); in mt7601u_probe()
296 mac_rev = mt7601u_rr(dev, MT_MAC_CSR0); in mt7601u_probe()
297 dev_info(dev->dev, "ASIC revision: %08x MAC revision: %08x\n", in mt7601u_probe()
305 if (!(mt7601u_rr(dev, MT_EFUSE_CTRL) & MT_EFUSE_CTRL_SEL)) in mt7601u_probe()
306 dev_warn(dev->dev, "Warning: eFUSE not present\n"); in mt7601u_probe()
308 ret = mt7601u_init_hardware(dev); in mt7601u_probe()
311 ret = mt7601u_register_device(dev); in mt7601u_probe()
315 set_bit(MT7601U_STATE_INITIALIZED, &dev->state); in mt7601u_probe()
319 mt7601u_cleanup(dev); in mt7601u_probe()
324 destroy_workqueue(dev->stat_wq); in mt7601u_probe()
325 ieee80211_free_hw(dev->hw); in mt7601u_probe()
331 struct mt7601u_dev *dev = usb_get_intfdata(usb_intf); in mt7601u_disconnect() local
333 ieee80211_unregister_hw(dev->hw); in mt7601u_disconnect()
334 mt7601u_cleanup(dev); in mt7601u_disconnect()
339 destroy_workqueue(dev->stat_wq); in mt7601u_disconnect()
340 ieee80211_free_hw(dev->hw); in mt7601u_disconnect()
345 struct mt7601u_dev *dev = usb_get_intfdata(usb_intf); in mt7601u_suspend() local
347 mt7601u_cleanup(dev); in mt7601u_suspend()
354 struct mt7601u_dev *dev = usb_get_intfdata(usb_intf); in mt7601u_resume() local
357 ret = mt7601u_init_hardware(dev); in mt7601u_resume()
361 set_bit(MT7601U_STATE_INITIALIZED, &dev->state); in mt7601u_resume()