Lines Matching +full:cmd +full:- +full:db

20 /*-
21 * Based on BSD-licensed source modules in the Linux iwlwifi driver,
34 * Copyright(c) 2007 - 2013 Intel Corporation. All rights reserved.
55 * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
60 * Copyright(c) 2005 - 2013 Intel Corporation. All rights reserved.
90 /*-
91 * Copyright (c) 2007-2010 Damien Bergamini <damien.bergamini@free.fr>
166 * struct iwm_phy_db - stores phy configuration and calibration data.
196 phy_db->sc = sc; in iwm_phy_db_init()
198 phy_db->n_group_txp = -1; in iwm_phy_db_init()
199 phy_db->n_group_papd = -1; in iwm_phy_db_init()
201 /* TODO: add default values of the phy db. */ in iwm_phy_db_init()
206 * get phy db section: returns a pointer to a phy db section specified by
219 return &phy_db->cfg; in iwm_phy_db_get_section()
221 return &phy_db->calib_nch; in iwm_phy_db_get_section()
223 if (chg_id >= phy_db->n_group_papd) in iwm_phy_db_get_section()
225 return &phy_db->calib_ch_group_papd[chg_id]; in iwm_phy_db_get_section()
227 if (chg_id >= phy_db->n_group_txp) in iwm_phy_db_get_section()
229 return &phy_db->calib_ch_group_txp[chg_id]; in iwm_phy_db_get_section()
245 if (entry->data != NULL) in iwm_phy_db_free_section()
246 free(entry->data, M_DEVBUF); in iwm_phy_db_free_section()
247 entry->data = NULL; in iwm_phy_db_free_section()
248 entry->size = 0; in iwm_phy_db_free_section()
262 for (i = 0; i < phy_db->n_group_papd; i++) in iwm_phy_db_free()
264 if (phy_db->calib_ch_group_papd != NULL) in iwm_phy_db_free()
265 free(phy_db->calib_ch_group_papd, M_DEVBUF); in iwm_phy_db_free()
267 for (i = 0; i < phy_db->n_group_txp; i++) in iwm_phy_db_free()
269 if (phy_db->calib_ch_group_txp != NULL) in iwm_phy_db_free()
270 free(phy_db->calib_ch_group_txp, M_DEVBUF); in iwm_phy_db_free()
280 (struct iwm_calib_res_notif_phy_db *)pkt->data; in iwm_phy_db_set_section()
281 enum iwm_phy_db_section_type type = le16toh(phy_db_notif->type); in iwm_phy_db_set_section()
282 uint16_t size = le16toh(phy_db_notif->length); in iwm_phy_db_set_section()
290 chg_id = le16toh(*(uint16_t *)phy_db_notif->data); in iwm_phy_db_set_section()
291 if (phy_db && !phy_db->calib_ch_group_papd) { in iwm_phy_db_set_section()
296 phy_db->calib_ch_group_papd = malloc( in iwm_phy_db_set_section()
299 if (!phy_db->calib_ch_group_papd) in iwm_phy_db_set_section()
301 phy_db->n_group_papd = chg_id + 1; in iwm_phy_db_set_section()
304 chg_id = le16toh(*(uint16_t *)phy_db_notif->data); in iwm_phy_db_set_section()
305 if (phy_db && !phy_db->calib_ch_group_txp) { in iwm_phy_db_set_section()
310 phy_db->calib_ch_group_txp = malloc( in iwm_phy_db_set_section()
313 if (!phy_db->calib_ch_group_txp) in iwm_phy_db_set_section()
315 phy_db->n_group_txp = chg_id + 1; in iwm_phy_db_set_section()
323 if (entry->data != NULL) in iwm_phy_db_set_section()
324 free(entry->data, M_DEVBUF); in iwm_phy_db_set_section()
325 entry->data = malloc(size, M_DEVBUF, M_NOWAIT); in iwm_phy_db_set_section()
326 if (!entry->data) { in iwm_phy_db_set_section()
327 entry->size = 0; in iwm_phy_db_set_section()
330 memcpy(entry->data, phy_db_notif->data, size); in iwm_phy_db_set_section()
332 entry->size = size; in iwm_phy_db_set_section()
334 IWM_DPRINTF(phy_db->sc, IWM_DEBUG_RESET, in iwm_phy_db_set_section()
359 return ch_id - 1; in ch_id_to_ch_index()
363 return (ch_id - 12) / 4; in ch_id_to_ch_index()
364 return (ch_id - 13) / 4; in ch_id_to_ch_index()
392 for (i = 0; i < phy_db->n_group_txp; i++) { in channel_id_to_txp()
393 txp_chg = (void *)phy_db->calib_ch_group_txp[i].data; in channel_id_to_txp()
400 if (le16toh(txp_chg->max_channel_idx) >= ch_index) in channel_id_to_txp()
427 *data = entry->data; in iwm_phy_db_get_section_data()
428 *size = entry->size; in iwm_phy_db_get_section_data()
430 IWM_DPRINTF(phy_db->sc, IWM_DEBUG_RESET, in iwm_phy_db_get_section_data()
442 struct iwm_host_cmd cmd = { in iwm_send_phy_db_cmd() local
446 IWM_DPRINTF(phy_db->sc, IWM_DEBUG_RESET, in iwm_send_phy_db_cmd()
447 "Sending PHY-DB hcmd of type %d, of length %d\n", in iwm_send_phy_db_cmd()
450 /* Set phy db cmd variables */ in iwm_send_phy_db_cmd()
455 cmd.data[0] = &phy_db_cmd; in iwm_send_phy_db_cmd()
456 cmd.len[0] = sizeof(struct iwm_phy_db_cmd); in iwm_send_phy_db_cmd()
457 cmd.data[1] = data; in iwm_send_phy_db_cmd()
458 cmd.len[1] = length; in iwm_send_phy_db_cmd()
460 cmd.dataflags[1] = IWM_HCMD_DFL_NOCOPY; in iwm_send_phy_db_cmd()
463 return iwm_send_cmd(phy_db->sc, &cmd); in iwm_send_phy_db_cmd()
483 if (!entry->size) in iwm_phy_db_send_all_channel_groups()
486 /* Send the requested PHY DB section */ in iwm_phy_db_send_all_channel_groups()
489 entry->size, in iwm_phy_db_send_all_channel_groups()
490 entry->data); in iwm_phy_db_send_all_channel_groups()
492 device_printf(phy_db->sc->sc_dev, in iwm_phy_db_send_all_channel_groups()
498 IWM_DPRINTF(phy_db->sc, IWM_DEBUG_CMD, in iwm_phy_db_send_all_channel_groups()
512 IWM_DPRINTF(phy_db->sc, IWM_DEBUG_CMD | IWM_DEBUG_RESET, in iwm_send_phy_db_data()
513 "%s: Sending phy db data and configuration to runtime image\n", in iwm_send_phy_db_data()
516 /* Send PHY DB CFG section */ in iwm_send_phy_db_data()
520 device_printf(phy_db->sc->sc_dev, in iwm_send_phy_db_data()
521 "%s: Cannot get Phy DB cfg section, %d\n", in iwm_send_phy_db_data()
528 device_printf(phy_db->sc->sc_dev, in iwm_send_phy_db_data()
529 "%s: Cannot send HCMD of Phy DB cfg section, %d\n", in iwm_send_phy_db_data()
537 device_printf(phy_db->sc->sc_dev, in iwm_send_phy_db_data()
538 "%s: Cannot get Phy DB non specific channel section, " in iwm_send_phy_db_data()
545 device_printf(phy_db->sc->sc_dev, in iwm_send_phy_db_data()
546 "%s: Cannot send HCMD of Phy DB non specific channel " in iwm_send_phy_db_data()
553 IWM_PHY_DB_CALIB_CHG_PAPD, phy_db->n_group_papd); in iwm_send_phy_db_data()
555 device_printf(phy_db->sc->sc_dev, in iwm_send_phy_db_data()
563 IWM_PHY_DB_CALIB_CHG_TXP, phy_db->n_group_txp); in iwm_send_phy_db_data()
565 device_printf(phy_db->sc->sc_dev, in iwm_send_phy_db_data()
571 IWM_DPRINTF(phy_db->sc, IWM_DEBUG_CMD | IWM_DEBUG_RESET, in iwm_send_phy_db_data()
572 "%s: Finished sending phy db non channel data\n", in iwm_send_phy_db_data()