i1480 38 drivers/staging/uwb/i1480/dfu/dfu.c int i1480_rceb_check(const struct i1480 *i1480, const struct uwb_rceb *rceb, i1480 43 drivers/staging/uwb/i1480/dfu/dfu.c struct device *dev = i1480->dev; i1480 78 drivers/staging/uwb/i1480/dfu/dfu.c ssize_t i1480_cmd(struct i1480 *i1480, const char *cmd_name, size_t cmd_size, i1480 82 drivers/staging/uwb/i1480/dfu/dfu.c struct uwb_rceb *reply = i1480->evt_buf; i1480 83 drivers/staging/uwb/i1480/dfu/dfu.c struct uwb_rccb *cmd = i1480->cmd_buf; i1480 88 drivers/staging/uwb/i1480/dfu/dfu.c init_completion(&i1480->evt_complete); i1480 89 drivers/staging/uwb/i1480/dfu/dfu.c i1480->evt_result = -EINPROGRESS; i1480 94 drivers/staging/uwb/i1480/dfu/dfu.c result = i1480->cmd(i1480, cmd_name, cmd_size); i1480 99 drivers/staging/uwb/i1480/dfu/dfu.c &i1480->evt_complete, HZ); i1480 106 drivers/staging/uwb/i1480/dfu/dfu.c result = i1480->evt_result; i1480 108 drivers/staging/uwb/i1480/dfu/dfu.c dev_err(i1480->dev, "%s: command reply reception failed: %zd\n", i1480 118 drivers/staging/uwb/i1480/dfu/dfu.c if (i1480_rceb_check(i1480, i1480->evt_buf, NULL, i1480 121 drivers/staging/uwb/i1480/dfu/dfu.c result = i1480->wait_init_done(i1480); i1480 124 drivers/staging/uwb/i1480/dfu/dfu.c result = i1480->evt_result; i1480 127 drivers/staging/uwb/i1480/dfu/dfu.c dev_err(i1480->dev, "%s returned only %zu bytes, %zu expected\n", i1480 133 drivers/staging/uwb/i1480/dfu/dfu.c result = i1480_rceb_check(i1480, i1480->evt_buf, cmd_name, context, i1480 142 drivers/staging/uwb/i1480/dfu/dfu.c int i1480_print_state(struct i1480 *i1480) i1480 145 drivers/staging/uwb/i1480/dfu/dfu.c u32 *buf = (u32 *) i1480->cmd_buf; i1480 147 drivers/staging/uwb/i1480/dfu/dfu.c result = i1480->read(i1480, 0x80080000, 2 * sizeof(*buf)); i1480 149 drivers/staging/uwb/i1480/dfu/dfu.c dev_err(i1480->dev, "cannot read U & L states: %d\n", result); i1480 152 drivers/staging/uwb/i1480/dfu/dfu.c dev_info(i1480->dev, "state U 0x%08x, L 0x%08x\n", buf[0], buf[1]); i1480 163 drivers/staging/uwb/i1480/dfu/dfu.c int i1480_fw_upload(struct i1480 *i1480) i1480 167 drivers/staging/uwb/i1480/dfu/dfu.c result = i1480_pre_fw_upload(i1480); /* PHY pre fw */ i1480 169 drivers/staging/uwb/i1480/dfu/dfu.c i1480_print_state(i1480); i1480 172 drivers/staging/uwb/i1480/dfu/dfu.c result = i1480_mac_fw_upload(i1480); /* MAC fw */ i1480 175 drivers/staging/uwb/i1480/dfu/dfu.c dev_err(i1480->dev, "Cannot locate MAC FW file '%s'\n", i1480 176 drivers/staging/uwb/i1480/dfu/dfu.c i1480->mac_fw_name); i1480 178 drivers/staging/uwb/i1480/dfu/dfu.c i1480_print_state(i1480); i1480 181 drivers/staging/uwb/i1480/dfu/dfu.c result = i1480_phy_fw_upload(i1480); /* PHY fw */ i1480 183 drivers/staging/uwb/i1480/dfu/dfu.c i1480_print_state(i1480); i1480 190 drivers/staging/uwb/i1480/dfu/dfu.c dev_info(i1480->dev, "firmware uploaded successfully\n"); i1480 192 drivers/staging/uwb/i1480/dfu/dfu.c if (i1480->rc_release) i1480 193 drivers/staging/uwb/i1480/dfu/dfu.c i1480->rc_release(i1480); i1480 102 drivers/staging/uwb/i1480/dfu/i1480-dfu.h int (*write)(struct i1480 *, u32 addr, const void *, size_t); i1480 103 drivers/staging/uwb/i1480/dfu/i1480-dfu.h int (*read)(struct i1480 *, u32 addr, size_t); i1480 104 drivers/staging/uwb/i1480/dfu/i1480-dfu.h int (*rc_setup)(struct i1480 *); i1480 105 drivers/staging/uwb/i1480/dfu/i1480-dfu.h void (*rc_release)(struct i1480 *); i1480 106 drivers/staging/uwb/i1480/dfu/i1480-dfu.h int (*wait_init_done)(struct i1480 *); i1480 107 drivers/staging/uwb/i1480/dfu/i1480-dfu.h int (*cmd)(struct i1480 *, const char *cmd_name, size_t cmd_size); i1480 121 drivers/staging/uwb/i1480/dfu/i1480-dfu.h void i1480_init(struct i1480 *i1480) i1480 123 drivers/staging/uwb/i1480/dfu/i1480-dfu.h i1480->hw_rev = 1; i1480 124 drivers/staging/uwb/i1480/dfu/i1480-dfu.h init_completion(&i1480->evt_complete); i1480 127 drivers/staging/uwb/i1480/dfu/i1480-dfu.h extern int i1480_fw_upload(struct i1480 *); i1480 128 drivers/staging/uwb/i1480/dfu/i1480-dfu.h extern int i1480_pre_fw_upload(struct i1480 *); i1480 129 drivers/staging/uwb/i1480/dfu/i1480-dfu.h extern int i1480_mac_fw_upload(struct i1480 *); i1480 130 drivers/staging/uwb/i1480/dfu/i1480-dfu.h extern int i1480_phy_fw_upload(struct i1480 *); i1480 131 drivers/staging/uwb/i1480/dfu/i1480-dfu.h extern ssize_t i1480_cmd(struct i1480 *, const char *, size_t, size_t); i1480 132 drivers/staging/uwb/i1480/dfu/i1480-dfu.h extern int i1480_rceb_check(const struct i1480 *, i1480 48 drivers/staging/uwb/i1480/dfu/mac.c int fw_hdr_load(struct i1480 *i1480, struct fw_hdr *hdr, unsigned hdr_cnt, i1480 54 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "fw hdr #%u/%zu: EOF reached in header at " i1480 66 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "fw hdr #%u/%zu: EOF reached in data; " i1480 94 drivers/staging/uwb/i1480/dfu/mac.c int fw_hdrs_load(struct i1480 *i1480, struct fw_hdr **phdr, i1480 115 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "Cannot allocate fw header " i1480 119 drivers/staging/uwb/i1480/dfu/mac.c result = fw_hdr_load(i1480, hdr, hdr_cnt, i1480 153 drivers/staging/uwb/i1480/dfu/mac.c ssize_t i1480_fw_cmp(struct i1480 *i1480, struct fw_hdr *hdr) i1480 162 drivers/staging/uwb/i1480/dfu/mac.c chunk_size = size < i1480->buf_size ? size : i1480->buf_size; i1480 163 drivers/staging/uwb/i1480/dfu/mac.c result = i1480->read(i1480, hdr->address + src_itr, chunk_size); i1480 165 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "error reading for verification: " i1480 169 drivers/staging/uwb/i1480/dfu/mac.c if (memcmp(i1480->cmd_buf, bin + src_itr, result)) { i1480 170 drivers/staging/uwb/i1480/dfu/mac.c u8 *buf = i1480->cmd_buf; i1480 173 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "byte failed at " i1480 199 drivers/staging/uwb/i1480/dfu/mac.c int mac_fw_hdrs_push(struct i1480 *i1480, struct fw_hdr *hdr, i1480 202 drivers/staging/uwb/i1480/dfu/mac.c struct device *dev = i1480->dev; i1480 214 drivers/staging/uwb/i1480/dfu/mac.c result = i1480->write(i1480, hdr_itr->address, hdr_itr->bin, i1480 223 drivers/staging/uwb/i1480/dfu/mac.c result = i1480_fw_cmp(i1480, hdr_itr); i1480 252 drivers/staging/uwb/i1480/dfu/mac.c int mac_fw_upload_enable(struct i1480 *i1480) i1480 256 drivers/staging/uwb/i1480/dfu/mac.c u32 *buffer = (u32 *)i1480->cmd_buf; i1480 258 drivers/staging/uwb/i1480/dfu/mac.c if (i1480->hw_rev > 1) i1480 260 drivers/staging/uwb/i1480/dfu/mac.c result = i1480->read(i1480, reg, sizeof(u32)); i1480 264 drivers/staging/uwb/i1480/dfu/mac.c result = i1480->write(i1480, reg, buffer, sizeof(u32)); i1480 269 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "can't enable fw upload mode: %d\n", result); i1480 276 drivers/staging/uwb/i1480/dfu/mac.c int mac_fw_upload_disable(struct i1480 *i1480) i1480 280 drivers/staging/uwb/i1480/dfu/mac.c u32 *buffer = (u32 *)i1480->cmd_buf; i1480 282 drivers/staging/uwb/i1480/dfu/mac.c if (i1480->hw_rev > 1) i1480 284 drivers/staging/uwb/i1480/dfu/mac.c result = i1480->read(i1480, reg, sizeof(u32)); i1480 288 drivers/staging/uwb/i1480/dfu/mac.c result = i1480->write(i1480, reg, buffer, sizeof(u32)); i1480 293 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "can't disable fw upload mode: %d\n", result); i1480 311 drivers/staging/uwb/i1480/dfu/mac.c int __mac_fw_upload(struct i1480 *i1480, const char *fw_name, i1480 318 drivers/staging/uwb/i1480/dfu/mac.c result = request_firmware(&fw, fw_name, i1480->dev); i1480 321 drivers/staging/uwb/i1480/dfu/mac.c result = fw_hdrs_load(i1480, &fw_hdrs, fw->data, fw->size); i1480 323 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "%s fw '%s': failed to parse firmware " i1480 327 drivers/staging/uwb/i1480/dfu/mac.c result = mac_fw_upload_enable(i1480); i1480 330 drivers/staging/uwb/i1480/dfu/mac.c result = mac_fw_hdrs_push(i1480, fw_hdrs, fw_name, fw_tag); i1480 331 drivers/staging/uwb/i1480/dfu/mac.c mac_fw_upload_disable(i1480); i1480 334 drivers/staging/uwb/i1480/dfu/mac.c dev_info(i1480->dev, "%s fw '%s': uploaded\n", fw_tag, fw_name); i1480 336 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "%s fw '%s': failed to upload (%d), " i1480 350 drivers/staging/uwb/i1480/dfu/mac.c int i1480_pre_fw_upload(struct i1480 *i1480) i1480 353 drivers/staging/uwb/i1480/dfu/mac.c result = __mac_fw_upload(i1480, i1480->pre_fw_name, "PRE"); i1480 374 drivers/staging/uwb/i1480/dfu/mac.c int i1480_cmd_reset(struct i1480 *i1480) i1480 377 drivers/staging/uwb/i1480/dfu/mac.c struct uwb_rccb *cmd = (void *) i1480->cmd_buf; i1480 381 drivers/staging/uwb/i1480/dfu/mac.c } __attribute__((packed)) *reply = (void *) i1480->evt_buf; i1480 388 drivers/staging/uwb/i1480/dfu/mac.c result = i1480_cmd(i1480, "RESET", sizeof(*cmd), sizeof(*reply)); i1480 392 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "RESET: command execution failed: %u\n", i1480 404 drivers/staging/uwb/i1480/dfu/mac.c int i1480_fw_is_running_q(struct i1480 *i1480) i1480 408 drivers/staging/uwb/i1480/dfu/mac.c u32 *val = (u32 *) i1480->cmd_buf; i1480 412 drivers/staging/uwb/i1480/dfu/mac.c result = i1480->read(i1480, 0x80080000, 4); i1480 414 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "Can't read 0x8008000: %d\n", result); i1480 420 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "Timed out waiting for fw to start\n"); i1480 437 drivers/staging/uwb/i1480/dfu/mac.c int i1480_mac_fw_upload(struct i1480 *i1480) i1480 440 drivers/staging/uwb/i1480/dfu/mac.c struct i1480_rceb *rcebe = (void *) i1480->evt_buf; i1480 442 drivers/staging/uwb/i1480/dfu/mac.c result = __mac_fw_upload(i1480, i1480->mac_fw_name, "MAC"); i1480 444 drivers/staging/uwb/i1480/dfu/mac.c result = __mac_fw_upload(i1480, i1480->mac_fw_name_deprecate, i1480 451 drivers/staging/uwb/i1480/dfu/mac.c dev_warn(i1480->dev, i1480 454 drivers/staging/uwb/i1480/dfu/mac.c i1480->mac_fw_name_deprecate, i1480->mac_fw_name); i1480 455 drivers/staging/uwb/i1480/dfu/mac.c result = i1480_fw_is_running_q(i1480); i1480 458 drivers/staging/uwb/i1480/dfu/mac.c result = i1480->rc_setup ? i1480->rc_setup(i1480) : 0; i1480 460 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "Cannot setup after MAC fw upload: %d\n", i1480 464 drivers/staging/uwb/i1480/dfu/mac.c result = i1480->wait_init_done(i1480); /* wait init'on */ i1480 466 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "MAC fw '%s': Initialization timed out " i1480 467 drivers/staging/uwb/i1480/dfu/mac.c "(%d)\n", i1480->mac_fw_name, result); i1480 471 drivers/staging/uwb/i1480/dfu/mac.c if (i1480->evt_result != sizeof(*rcebe)) { i1480 472 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "MAC fw '%s': initialization event returns " i1480 474 drivers/staging/uwb/i1480/dfu/mac.c i1480->mac_fw_name, i1480->evt_result, sizeof(*rcebe)); i1480 478 drivers/staging/uwb/i1480/dfu/mac.c if (i1480_rceb_check(i1480, &rcebe->rceb, NULL, 0, i1480_CET_VS1, i1480 480 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "wrong initialization event 0x%02x/%04x/%02x " i1480 487 drivers/staging/uwb/i1480/dfu/mac.c result = i1480_cmd_reset(i1480); i1480 489 drivers/staging/uwb/i1480/dfu/mac.c dev_err(i1480->dev, "MAC fw '%s': MBOA reset failed (%d)\n", i1480 490 drivers/staging/uwb/i1480/dfu/mac.c i1480->mac_fw_name, result); i1480 38 drivers/staging/uwb/i1480/dfu/phy.c int i1480_mpi_write(struct i1480 *i1480, const void *data, size_t size) i1480 41 drivers/staging/uwb/i1480/dfu/phy.c struct i1480_cmd_mpi_write *cmd = i1480->cmd_buf; i1480 42 drivers/staging/uwb/i1480/dfu/phy.c struct i1480_evt_confirm *reply = i1480->evt_buf; i1480 52 drivers/staging/uwb/i1480/dfu/phy.c result = i1480_cmd(i1480, "MPI-WRITE", sizeof(*cmd) + size, sizeof(*reply)); i1480 56 drivers/staging/uwb/i1480/dfu/phy.c dev_err(i1480->dev, "MPI-WRITE: command execution failed: %d\n", i1480 86 drivers/staging/uwb/i1480/dfu/phy.c int i1480_mpi_read(struct i1480 *i1480, u8 *data, u16 srcaddr, size_t size) i1480 89 drivers/staging/uwb/i1480/dfu/phy.c struct i1480_cmd_mpi_read *cmd = i1480->cmd_buf; i1480 90 drivers/staging/uwb/i1480/dfu/phy.c struct i1480_evt_mpi_read *reply = i1480->evt_buf; i1480 93 drivers/staging/uwb/i1480/dfu/phy.c memset(i1480->cmd_buf, 0x69, 512); i1480 94 drivers/staging/uwb/i1480/dfu/phy.c memset(i1480->evt_buf, 0x69, 512); i1480 96 drivers/staging/uwb/i1480/dfu/phy.c BUG_ON(size > (i1480->buf_size - sizeof(*reply)) / 3); i1480 107 drivers/staging/uwb/i1480/dfu/phy.c result = i1480_cmd(i1480, "MPI-READ", sizeof(*cmd) + 2*size, i1480 112 drivers/staging/uwb/i1480/dfu/phy.c dev_err(i1480->dev, "MPI-READ: command execution failed: %d\n", i1480 119 drivers/staging/uwb/i1480/dfu/phy.c dev_err(i1480->dev, "MPI-READ: page inconsistency at " i1480 123 drivers/staging/uwb/i1480/dfu/phy.c dev_err(i1480->dev, "MPI-READ: offset inconsistency at " i1480 149 drivers/staging/uwb/i1480/dfu/phy.c int i1480_phy_fw_upload(struct i1480 *i1480) i1480 158 drivers/staging/uwb/i1480/dfu/phy.c result = request_firmware(&fw, i1480->phy_fw_name, i1480->dev); i1480 165 drivers/staging/uwb/i1480/dfu/phy.c result = i1480_mpi_write(i1480, data_itr, data_size); i1480 170 drivers/staging/uwb/i1480/dfu/phy.c result = i1480_mpi_read(i1480, &phy_stat, 0x0006, 1); i1480 172 drivers/staging/uwb/i1480/dfu/phy.c dev_err(i1480->dev, "PHY: can't get status: %d\n", result); i1480 177 drivers/staging/uwb/i1480/dfu/phy.c dev_info(i1480->dev, "error, PHY not ready: %u\n", phy_stat); i1480 180 drivers/staging/uwb/i1480/dfu/phy.c dev_info(i1480->dev, "PHY fw '%s': uploaded\n", i1480->phy_fw_name); i1480 186 drivers/staging/uwb/i1480/dfu/phy.c dev_err(i1480->dev, "PHY fw '%s': failed to upload (%d), " i1480 187 drivers/staging/uwb/i1480/dfu/phy.c "power cycle device\n", i1480->phy_fw_name, result); i1480 34 drivers/staging/uwb/i1480/dfu/usb.c struct i1480 i1480; i1480 44 drivers/staging/uwb/i1480/dfu/usb.c i1480_init(&i1480_usb->i1480); i1480 96 drivers/staging/uwb/i1480/dfu/usb.c int i1480_usb_write(struct i1480 *i1480, u32 memory_address, i1480 100 drivers/staging/uwb/i1480/dfu/usb.c struct i1480_usb *i1480_usb = container_of(i1480, struct i1480_usb, i1480); i1480 105 drivers/staging/uwb/i1480/dfu/usb.c buffer_size = size < i1480->buf_size ? size : i1480->buf_size; i1480 106 drivers/staging/uwb/i1480/dfu/usb.c memcpy(i1480->cmd_buf, buffer + itr, buffer_size); i1480 111 drivers/staging/uwb/i1480/dfu/usb.c i1480->cmd_buf, buffer_size, 100 /* FIXME: arbitrary */); i1480 136 drivers/staging/uwb/i1480/dfu/usb.c int i1480_usb_read(struct i1480 *i1480, u32 addr, size_t size) i1480 139 drivers/staging/uwb/i1480/dfu/usb.c size_t itr, read_size = i1480->buf_size; i1480 140 drivers/staging/uwb/i1480/dfu/usb.c struct i1480_usb *i1480_usb = container_of(i1480, struct i1480_usb, i1480); i1480 142 drivers/staging/uwb/i1480/dfu/usb.c BUG_ON(size > i1480->buf_size); i1480 156 drivers/staging/uwb/i1480/dfu/usb.c i1480->cmd_buf + itr, itr_size, i1480 159 drivers/staging/uwb/i1480/dfu/usb.c dev_err(i1480->dev, "%s: USB read error: %zd\n", i1480 165 drivers/staging/uwb/i1480/dfu/usb.c dev_err(i1480->dev, i1480 186 drivers/staging/uwb/i1480/dfu/usb.c struct i1480 *i1480 = urb->context; i1480 187 drivers/staging/uwb/i1480/dfu/usb.c struct device *dev = i1480->dev; i1480 203 drivers/staging/uwb/i1480/dfu/usb.c i1480->evt_result = urb->actual_length; i1480 204 drivers/staging/uwb/i1480/dfu/usb.c complete(&i1480->evt_complete); i1480 222 drivers/staging/uwb/i1480/dfu/usb.c int i1480_usb_wait_init_done(struct i1480 *i1480) i1480 225 drivers/staging/uwb/i1480/dfu/usb.c struct device *dev = i1480->dev; i1480 226 drivers/staging/uwb/i1480/dfu/usb.c struct i1480_usb *i1480_usb = container_of(i1480, struct i1480_usb, i1480); i1480 229 drivers/staging/uwb/i1480/dfu/usb.c init_completion(&i1480->evt_complete); i1480 230 drivers/staging/uwb/i1480/dfu/usb.c i1480->evt_result = -EINPROGRESS; i1480 234 drivers/staging/uwb/i1480/dfu/usb.c i1480->evt_buf, i1480->buf_size, i1480 235 drivers/staging/uwb/i1480/dfu/usb.c i1480_usb_neep_cb, i1480, epd->bInterval); i1480 244 drivers/staging/uwb/i1480/dfu/usb.c &i1480->evt_complete, HZ); i1480 255 drivers/staging/uwb/i1480/dfu/usb.c i1480->evt_result = result; i1480 277 drivers/staging/uwb/i1480/dfu/usb.c int i1480_usb_cmd(struct i1480 *i1480, const char *cmd_name, size_t cmd_size) i1480 280 drivers/staging/uwb/i1480/dfu/usb.c struct device *dev = i1480->dev; i1480 281 drivers/staging/uwb/i1480/dfu/usb.c struct i1480_usb *i1480_usb = container_of(i1480, struct i1480_usb, i1480); i1480 283 drivers/staging/uwb/i1480/dfu/usb.c struct uwb_rccb *cmd = i1480->cmd_buf; i1480 292 drivers/staging/uwb/i1480/dfu/usb.c i1480->evt_buf, i1480->buf_size, i1480 293 drivers/staging/uwb/i1480/dfu/usb.c i1480_usb_neep_cb, i1480, epd->bInterval); i1480 332 drivers/staging/uwb/i1480/dfu/usb.c struct i1480 *i1480; i1480 363 drivers/staging/uwb/i1480/dfu/usb.c i1480 = &i1480_usb->i1480; i1480 364 drivers/staging/uwb/i1480/dfu/usb.c i1480->buf_size = 512; i1480 365 drivers/staging/uwb/i1480/dfu/usb.c i1480->cmd_buf = kmalloc_array(2, i1480->buf_size, GFP_KERNEL); i1480 366 drivers/staging/uwb/i1480/dfu/usb.c if (i1480->cmd_buf == NULL) { i1480 371 drivers/staging/uwb/i1480/dfu/usb.c i1480->evt_buf = i1480->cmd_buf + i1480->buf_size; i1480 380 drivers/staging/uwb/i1480/dfu/usb.c i1480->pre_fw_name = "i1480-pre-phy-0.0.bin"; i1480 381 drivers/staging/uwb/i1480/dfu/usb.c i1480->mac_fw_name = "i1480-usb-0.0.bin"; i1480 382 drivers/staging/uwb/i1480/dfu/usb.c i1480->mac_fw_name_deprecate = "ptc-0.0.bin"; i1480 383 drivers/staging/uwb/i1480/dfu/usb.c i1480->phy_fw_name = "i1480-phy-0.0.bin"; i1480 384 drivers/staging/uwb/i1480/dfu/usb.c i1480->dev = &iface->dev; i1480 385 drivers/staging/uwb/i1480/dfu/usb.c i1480->write = i1480_usb_write; i1480 386 drivers/staging/uwb/i1480/dfu/usb.c i1480->read = i1480_usb_read; i1480 387 drivers/staging/uwb/i1480/dfu/usb.c i1480->rc_setup = NULL; i1480 388 drivers/staging/uwb/i1480/dfu/usb.c i1480->wait_init_done = i1480_usb_wait_init_done; i1480 389 drivers/staging/uwb/i1480/dfu/usb.c i1480->cmd = i1480_usb_cmd; i1480 391 drivers/staging/uwb/i1480/dfu/usb.c result = i1480_fw_upload(&i1480_usb->i1480); /* the real thing */ i1480 398 drivers/staging/uwb/i1480/dfu/usb.c kfree(i1480->cmd_buf);