Lines Matching defs:i2400m

144  *   i2400m->bus_bm_cmd_send()
145 * i2400m->bus_bm_wait_for_ack
161 #include "i2400m.h"
324 /* parse command line options from i2400m.barkers */
341 "i2400m.barkers value '%s' as "
377 * barker, this function will set i2400m->barker to point to the right
386 int i2400m_is_boot_barker(struct i2400m *i2400m,
390 struct device *dev = i2400m_dev(i2400m);
400 if (i2400m->barker &&
401 !memcmp(buf, i2400m->barker, sizeof(i2400m->barker->data)))
410 if (i2400m->barker == NULL) {
411 i2400m->barker = barker;
415 i2400m->sboot = 0;
417 i2400m->sboot = 1;
418 } else if (i2400m->barker != barker) {
422 le32_to_cpu(i2400m->barker->data[0]),
450 ssize_t __i2400m_bm_ack_verify(struct i2400m *i2400m, int opcode,
455 struct device *dev = i2400m_dev(i2400m);
457 d_fnstart(8, dev, "(i2400m %p opcode %d ack %p size %zu)\n",
458 i2400m, opcode, ack, ack_size);
466 result = i2400m_is_boot_barker(i2400m, ack, ack_size);
528 d_fnend(8, dev, "(i2400m %p opcode %d ack %p size %zu) = %d\n",
529 i2400m, opcode, ack, ack_size, (int) result);
549 * You can use the i2400m->bm_cmd_buf to stage your commands and
561 * You *cannot* use i2400m->bm_ack_buf for this buffer.
580 ssize_t i2400m_bm_cmd(struct i2400m *i2400m,
586 struct device *dev = i2400m_dev(i2400m);
589 d_fnstart(6, dev, "(i2400m %p cmd %p size %zu ack %p size %zu)\n",
590 i2400m, cmd, cmd_size, ack, ack_size);
592 BUG_ON(i2400m->boot_mode == 0);
595 result = i2400m->bus_bm_cmd_send(i2400m, cmd, cmd_size, flags);
608 result = i2400m->bus_bm_wait_for_ack(i2400m, ack, ack_size);
617 result = __i2400m_bm_ack_verify(i2400m, opcode, ack, ack_size, flags);
627 d_fnend(6, dev, "(i2400m %p cmd %p size %zu ack %p size %zu) = %d\n",
628 i2400m, cmd, cmd_size, ack, ack_size, (int) result);
636 * @i2400m: device descriptor
643 static int i2400m_download_chunk(struct i2400m *i2400m, const void *chunk,
649 struct device *dev = i2400m_dev(i2400m);
656 d_fnstart(5, dev, "(i2400m %p chunk %p __chunk_len %zu addr 0x%08lx "
657 "direct %u do_csum %u)\n", i2400m, chunk, __chunk_len,
659 buf = i2400m->bm_cmd_buf;
668 ret = i2400m_bm_cmd(i2400m, &buf->cmd, sizeof(buf->cmd) + chunk_len,
672 d_fnend(5, dev, "(i2400m %p chunk %p __chunk_len %zu addr 0x%08lx "
673 "direct %u do_csum %u) = %d\n", i2400m, chunk, __chunk_len,
682 * @i2400m: device descriptor
698 ssize_t i2400m_dnload_bcf(struct i2400m *i2400m,
702 struct device *dev = i2400m_dev(i2400m);
710 d_fnstart(3, dev, "(i2400m %p bcf %p bcf_len %zu)\n",
711 i2400m, bcf, bcf_len);
737 i2400m->fw_name, section,
743 ret = i2400m_bm_cmd(i2400m, bh, section_size,
747 "failed %d\n", i2400m->fw_name, section,
757 d_fnend(3, dev, "(i2400m %p bcf %p bcf_len %zu) = %d\n",
758 i2400m, bcf, bcf_len, (int) ret);
768 unsigned i2400m_boot_is_signed(struct i2400m *i2400m)
770 return likely(i2400m->sboot);
786 int i2400m_dnload_finalize(struct i2400m *i2400m,
791 struct device *dev = i2400m_dev(i2400m);
801 if (i2400m_boot_is_signed(i2400m) == 0) {
805 cmd_buf = i2400m->bm_cmd_buf;
811 ret = i2400m_bm_cmd(i2400m, cmd, sizeof(*cmd),
816 cmd_buf = i2400m->bm_cmd_buf;
827 ret = i2400m_bm_cmd(i2400m, &cmd_buf->cmd,
839 * @i2400m: device descriptor
880 int i2400m_bootrom_init(struct i2400m *i2400m, enum i2400m_bri flags)
883 struct device *dev = i2400m_dev(i2400m);
886 int count = i2400m->bus_bm_retries;
893 d_fnstart(4, dev, "(i2400m %p flags 0x%08x)\n", i2400m, flags);
895 cmd = i2400m->bm_cmd_buf;
905 i2400m_reset(i2400m, I2400M_RT_WARM);
906 result = i2400m_bm_cmd(i2400m, NULL, 0, &ack, sizeof(ack),
914 * i2400m->barker and we are good to go.
928 if (i2400m->barker != NULL) {
931 le32_to_cpu(i2400m->barker->data[0]));
937 result = i2400m_bm_cmd(i2400m, cmd, sizeof(*cmd),
968 memcpy(cmd, i2400m->barker->data, sizeof(i2400m->barker->data));
969 result = i2400m_bm_cmd(i2400m, cmd, sizeof(*cmd),
1002 d_fnend(4, dev, "(i2400m %p flags 0x%08x) = %d\n",
1003 i2400m, flags, result);
1022 int i2400m_read_mac_addr(struct i2400m *i2400m)
1025 struct device *dev = i2400m_dev(i2400m);
1026 struct net_device *net_dev = i2400m->wimax_dev.net_dev;
1033 d_fnstart(5, dev, "(i2400m %p)\n", i2400m);
1034 cmd = i2400m->bm_cmd_buf;
1038 result = i2400m_bm_cmd(i2400m, cmd, sizeof(*cmd),
1045 if (i2400m->bus_bm_mac_addr_impaired == 1) {
1057 d_fnend(5, dev, "(i2400m %p) = %d\n", i2400m, result);
1070 int i2400m_dnload_init_nonsigned(struct i2400m *i2400m)
1074 struct device *dev = i2400m_dev(i2400m);
1075 d_fnstart(5, dev, "(i2400m %p)\n", i2400m);
1076 if (i2400m->bus_bm_pokes_table) {
1077 while (i2400m->bus_bm_pokes_table[i].address) {
1079 i2400m,
1080 &i2400m->bus_bm_pokes_table[i].data,
1081 sizeof(i2400m->bus_bm_pokes_table[i].data),
1082 i2400m->bus_bm_pokes_table[i].address, 1, 1);
1088 d_fnend(5, dev, "(i2400m %p) = %d\n", i2400m, ret);
1096 * @i2400m: device descriptor
1108 int i2400m_dnload_init_signed(struct i2400m *i2400m,
1112 struct device *dev = i2400m_dev(i2400m);
1119 d_fnstart(5, dev, "(i2400m %p bcf_hdr %p)\n", i2400m, bcf_hdr);
1120 cmd_buf = i2400m->bm_cmd_buf;
1126 ret = i2400m_bm_cmd(i2400m, &cmd_buf->cmd, sizeof(*cmd_buf),
1130 d_fnend(5, dev, "(i2400m %p bcf_hdr %p) = %d\n", i2400m, bcf_hdr, ret);
1142 int i2400m_dnload_init(struct i2400m *i2400m,
1146 struct device *dev = i2400m_dev(i2400m);
1148 if (i2400m_boot_is_signed(i2400m)) {
1150 result = i2400m_dnload_init_signed(i2400m, bcf_hdr);
1156 i2400m->fw_name, result);
1160 result = i2400m_dnload_init_nonsigned(i2400m);
1166 i2400m->fw_name, result);
1175 * Check for the firmware being made for the i2400m device,
1181 * file, and update i2400m->fw_bcf_hdr to point to them.
1184 int i2400m_fw_hdr_check(struct i2400m *i2400m,
1188 struct device *dev = i2400m_dev(i2400m);
1205 i2400m->fw_name, index, offset,
1213 i2400m->fw_name, index, offset,
1221 i2400m->fw_name, index, offset,
1229 i2400m->fw_name, index, offset, module_vendor);
1236 i2400m->fw_name, index, offset, date);
1244 * Check for the firmware being made for the i2400m device,
1250 * file, and update i2400m->fw_hdrs to point to them.
1253 int i2400m_fw_check(struct i2400m *i2400m, const void *bcf, size_t bcf_size)
1256 struct device *dev = i2400m_dev(i2400m);
1272 i2400m->fw_name, leftover, offset);
1285 result = i2400m_fw_hdr_check(i2400m, bcf_hdr, headers, offset);
1293 (void **) &i2400m->fw_hdrs, &slots,
1294 sizeof(i2400m->fw_hdrs[0]),
1299 i2400m->fw_hdrs[used_slots] = bcf_hdr;
1304 i2400m->fw_name);
1320 unsigned i2400m_bcf_hdr_match(struct i2400m *i2400m,
1323 u32 barker = le32_to_cpu(i2400m->barker->data[0])
1337 const struct i2400m_bcf_hdr *i2400m_bcf_hdr_find(struct i2400m *i2400m)
1339 struct device *dev = i2400m_dev(i2400m);
1342 u32 barker = le32_to_cpu(i2400m->barker->data[0]);
1346 bcf_hdr = i2400m->fw_hdrs[0];
1351 for (bcf_itr = i2400m->fw_hdrs; *bcf_itr != NULL; bcf_itr++, i++) {
1353 if (i2400m_bcf_hdr_match(i2400m, bcf_hdr)) {
1370 * @i2400m: device descriptor
1382 int i2400m_fw_dnload(struct i2400m *i2400m, const struct i2400m_bcf_hdr *bcf,
1386 struct device *dev = i2400m_dev(i2400m);
1387 int count = i2400m->bus_bm_retries;
1391 d_fnstart(5, dev, "(i2400m %p bcf %p fw size %zu)\n",
1392 i2400m, bcf, fw_size);
1393 i2400m->boot_mode = 1;
1402 ret = i2400m_bootrom_init(i2400m, flags);
1420 bcf_hdr = i2400m_bcf_hdr_find(i2400m);
1424 ret = i2400m_dnload_init(i2400m, bcf_hdr);
1436 ret = i2400m_dnload_bcf(i2400m, bcf, bcf_size);
1441 i2400m->fw_name, ret);
1445 ret = i2400m_dnload_finalize(i2400m, bcf_hdr, bcf, ret);
1451 i2400m->fw_name, ret);
1456 i2400m->fw_name);
1457 i2400m->boot_mode = 0;
1465 d_fnend(5, dev, "(i2400m %p bcf %p size %zu) = %d\n",
1466 i2400m, bcf, fw_size, ret);
1477 int i2400m_fw_bootstrap(struct i2400m *i2400m, const struct firmware *fw,
1481 struct device *dev = i2400m_dev(i2400m);
1484 d_fnstart(5, dev, "(i2400m %p)\n", i2400m);
1486 ret = i2400m_fw_check(i2400m, bcf, fw->size);
1488 ret = i2400m_fw_dnload(i2400m, bcf, fw->size, flags);
1491 i2400m->fw_name, ret);
1492 kfree(i2400m->fw_hdrs);
1493 i2400m->fw_hdrs = NULL;
1494 d_fnend(5, dev, "(i2400m %p) = %d\n", i2400m, ret);
1535 * @i2400m: device descriptor
1547 int i2400m_dev_bootstrap(struct i2400m *i2400m, enum i2400m_bri flags)
1550 struct device *dev = i2400m_dev(i2400m);
1555 d_fnstart(5, dev, "(i2400m %p)\n", i2400m);
1558 spin_lock(&i2400m->rx_lock);
1559 i2400m_fw = i2400m_fw_get(i2400m->fw_cached);
1560 spin_unlock(&i2400m->rx_lock);
1566 i2400m->fw_name);
1567 ret = i2400m_fw_bootstrap(i2400m, i2400m_fw->fw, flags);
1574 fw_name = i2400m->bus_fw_names[itr];
1586 i2400m->fw_name = fw_name;
1587 ret = i2400m_fw_bootstrap(i2400m, fw, flags);
1591 i2400m->fw_name = NULL;
1594 d_fnend(5, dev, "(i2400m %p) = %d\n", i2400m, ret);
1600 void i2400m_fw_cache(struct i2400m *i2400m)
1604 struct device *dev = i2400m_dev(i2400m);
1607 spin_lock(&i2400m->rx_lock);
1608 i2400m_fw = i2400m->fw_cached;
1609 spin_unlock(&i2400m->rx_lock);
1616 if (i2400m->fw_name == NULL) {
1626 result = request_firmware(&i2400m_fw->fw, i2400m->fw_name, dev);
1629 i2400m->fw_name, result);
1633 dev_info(dev, "firmware %s: cached\n", i2400m->fw_name);
1635 spin_lock(&i2400m->rx_lock);
1636 i2400m->fw_cached = i2400m_fw;
1637 spin_unlock(&i2400m->rx_lock);
1641 void i2400m_fw_uncache(struct i2400m *i2400m)
1645 spin_lock(&i2400m->rx_lock);
1646 i2400m_fw = i2400m->fw_cached;
1647 i2400m->fw_cached = NULL;
1648 spin_unlock(&i2400m->rx_lock);