| .. | .. |
|---|
| 1 | 1 | /* |
|---|
| 2 | | - * Marvell Wireless LAN device driver: SDIO specific definitions |
|---|
| 2 | + * NXP Wireless LAN device driver: SDIO specific definitions |
|---|
| 3 | 3 | * |
|---|
| 4 | | - * Copyright (C) 2011-2014, Marvell International Ltd. |
|---|
| 4 | + * Copyright 2011-2020 NXP |
|---|
| 5 | 5 | * |
|---|
| 6 | | - * This software file (the "File") is distributed by Marvell International |
|---|
| 7 | | - * Ltd. under the terms of the GNU General Public License Version 2, June 1991 |
|---|
| 6 | + * This software file (the "File") is distributed by NXP |
|---|
| 7 | + * under the terms of the GNU General Public License Version 2, June 1991 |
|---|
| 8 | 8 | * (the "License"). You may use, redistribute and/or modify this File in |
|---|
| 9 | 9 | * accordance with the terms and conditions of the License, a copy of which |
|---|
| 10 | 10 | * is available by writing to the Free Software Foundation, Inc., |
|---|
| .. | .. |
|---|
| 36 | 36 | #define SD8897_DEFAULT_FW_NAME "mrvl/sd8897_uapsta.bin" |
|---|
| 37 | 37 | #define SD8887_DEFAULT_FW_NAME "mrvl/sd8887_uapsta.bin" |
|---|
| 38 | 38 | #define SD8801_DEFAULT_FW_NAME "mrvl/sd8801_uapsta.bin" |
|---|
| 39 | | -#define SD8997_DEFAULT_FW_NAME "mrvl/sd8997_uapsta.bin" |
|---|
| 39 | +#define SD8977_DEFAULT_FW_NAME "mrvl/sdsd8977_combo_v2.bin" |
|---|
| 40 | +#define SD8987_DEFAULT_FW_NAME "mrvl/sd8987_uapsta.bin" |
|---|
| 41 | +#define SD8997_DEFAULT_FW_NAME "mrvl/sdsd8997_combo_v4.bin" |
|---|
| 40 | 42 | |
|---|
| 41 | 43 | #define BLOCK_MODE 1 |
|---|
| 42 | 44 | #define BYTE_MODE 0 |
|---|
| .. | .. |
|---|
| 286 | 288 | bool fw_dump_enh; |
|---|
| 287 | 289 | bool can_auto_tdls; |
|---|
| 288 | 290 | bool can_ext_scan; |
|---|
| 289 | | -}; |
|---|
| 290 | | - |
|---|
| 291 | | -static const struct mwifiex_sdio_card_reg mwifiex_reg_sd87xx = { |
|---|
| 292 | | - .start_rd_port = 1, |
|---|
| 293 | | - .start_wr_port = 1, |
|---|
| 294 | | - .base_0_reg = 0x0040, |
|---|
| 295 | | - .base_1_reg = 0x0041, |
|---|
| 296 | | - .poll_reg = 0x30, |
|---|
| 297 | | - .host_int_enable = UP_LD_HOST_INT_MASK | DN_LD_HOST_INT_MASK, |
|---|
| 298 | | - .host_int_rsr_reg = 0x1, |
|---|
| 299 | | - .host_int_mask_reg = 0x02, |
|---|
| 300 | | - .host_int_status_reg = 0x03, |
|---|
| 301 | | - .status_reg_0 = 0x60, |
|---|
| 302 | | - .status_reg_1 = 0x61, |
|---|
| 303 | | - .sdio_int_mask = 0x3f, |
|---|
| 304 | | - .data_port_mask = 0x0000fffe, |
|---|
| 305 | | - .io_port_0_reg = 0x78, |
|---|
| 306 | | - .io_port_1_reg = 0x79, |
|---|
| 307 | | - .io_port_2_reg = 0x7A, |
|---|
| 308 | | - .max_mp_regs = 64, |
|---|
| 309 | | - .rd_bitmap_l = 0x04, |
|---|
| 310 | | - .rd_bitmap_u = 0x05, |
|---|
| 311 | | - .wr_bitmap_l = 0x06, |
|---|
| 312 | | - .wr_bitmap_u = 0x07, |
|---|
| 313 | | - .rd_len_p0_l = 0x08, |
|---|
| 314 | | - .rd_len_p0_u = 0x09, |
|---|
| 315 | | - .card_misc_cfg_reg = 0x6c, |
|---|
| 316 | | - .func1_dump_reg_start = 0x0, |
|---|
| 317 | | - .func1_dump_reg_end = 0x9, |
|---|
| 318 | | - .func1_scratch_reg = 0x60, |
|---|
| 319 | | - .func1_spec_reg_num = 5, |
|---|
| 320 | | - .func1_spec_reg_table = {0x28, 0x30, 0x34, 0x38, 0x3c}, |
|---|
| 321 | | -}; |
|---|
| 322 | | - |
|---|
| 323 | | -static const struct mwifiex_sdio_card_reg mwifiex_reg_sd8897 = { |
|---|
| 324 | | - .start_rd_port = 0, |
|---|
| 325 | | - .start_wr_port = 0, |
|---|
| 326 | | - .base_0_reg = 0x60, |
|---|
| 327 | | - .base_1_reg = 0x61, |
|---|
| 328 | | - .poll_reg = 0x50, |
|---|
| 329 | | - .host_int_enable = UP_LD_HOST_INT_MASK | DN_LD_HOST_INT_MASK | |
|---|
| 330 | | - CMD_PORT_UPLD_INT_MASK | CMD_PORT_DNLD_INT_MASK, |
|---|
| 331 | | - .host_int_rsr_reg = 0x1, |
|---|
| 332 | | - .host_int_status_reg = 0x03, |
|---|
| 333 | | - .host_int_mask_reg = 0x02, |
|---|
| 334 | | - .status_reg_0 = 0xc0, |
|---|
| 335 | | - .status_reg_1 = 0xc1, |
|---|
| 336 | | - .sdio_int_mask = 0xff, |
|---|
| 337 | | - .data_port_mask = 0xffffffff, |
|---|
| 338 | | - .io_port_0_reg = 0xD8, |
|---|
| 339 | | - .io_port_1_reg = 0xD9, |
|---|
| 340 | | - .io_port_2_reg = 0xDA, |
|---|
| 341 | | - .max_mp_regs = 184, |
|---|
| 342 | | - .rd_bitmap_l = 0x04, |
|---|
| 343 | | - .rd_bitmap_u = 0x05, |
|---|
| 344 | | - .rd_bitmap_1l = 0x06, |
|---|
| 345 | | - .rd_bitmap_1u = 0x07, |
|---|
| 346 | | - .wr_bitmap_l = 0x08, |
|---|
| 347 | | - .wr_bitmap_u = 0x09, |
|---|
| 348 | | - .wr_bitmap_1l = 0x0a, |
|---|
| 349 | | - .wr_bitmap_1u = 0x0b, |
|---|
| 350 | | - .rd_len_p0_l = 0x0c, |
|---|
| 351 | | - .rd_len_p0_u = 0x0d, |
|---|
| 352 | | - .card_misc_cfg_reg = 0xcc, |
|---|
| 353 | | - .card_cfg_2_1_reg = 0xcd, |
|---|
| 354 | | - .cmd_rd_len_0 = 0xb4, |
|---|
| 355 | | - .cmd_rd_len_1 = 0xb5, |
|---|
| 356 | | - .cmd_rd_len_2 = 0xb6, |
|---|
| 357 | | - .cmd_rd_len_3 = 0xb7, |
|---|
| 358 | | - .cmd_cfg_0 = 0xb8, |
|---|
| 359 | | - .cmd_cfg_1 = 0xb9, |
|---|
| 360 | | - .cmd_cfg_2 = 0xba, |
|---|
| 361 | | - .cmd_cfg_3 = 0xbb, |
|---|
| 362 | | - .fw_dump_host_ready = 0xee, |
|---|
| 363 | | - .fw_dump_ctrl = 0xe2, |
|---|
| 364 | | - .fw_dump_start = 0xe3, |
|---|
| 365 | | - .fw_dump_end = 0xea, |
|---|
| 366 | | - .func1_dump_reg_start = 0x0, |
|---|
| 367 | | - .func1_dump_reg_end = 0xb, |
|---|
| 368 | | - .func1_scratch_reg = 0xc0, |
|---|
| 369 | | - .func1_spec_reg_num = 8, |
|---|
| 370 | | - .func1_spec_reg_table = {0x4C, 0x50, 0x54, 0x55, 0x58, |
|---|
| 371 | | - 0x59, 0x5c, 0x5d}, |
|---|
| 372 | | -}; |
|---|
| 373 | | - |
|---|
| 374 | | -static const struct mwifiex_sdio_card_reg mwifiex_reg_sd8997 = { |
|---|
| 375 | | - .start_rd_port = 0, |
|---|
| 376 | | - .start_wr_port = 0, |
|---|
| 377 | | - .base_0_reg = 0xF8, |
|---|
| 378 | | - .base_1_reg = 0xF9, |
|---|
| 379 | | - .poll_reg = 0x5C, |
|---|
| 380 | | - .host_int_enable = UP_LD_HOST_INT_MASK | DN_LD_HOST_INT_MASK | |
|---|
| 381 | | - CMD_PORT_UPLD_INT_MASK | CMD_PORT_DNLD_INT_MASK, |
|---|
| 382 | | - .host_int_rsr_reg = 0x4, |
|---|
| 383 | | - .host_int_status_reg = 0x0C, |
|---|
| 384 | | - .host_int_mask_reg = 0x08, |
|---|
| 385 | | - .status_reg_0 = 0xE8, |
|---|
| 386 | | - .status_reg_1 = 0xE9, |
|---|
| 387 | | - .sdio_int_mask = 0xff, |
|---|
| 388 | | - .data_port_mask = 0xffffffff, |
|---|
| 389 | | - .io_port_0_reg = 0xE4, |
|---|
| 390 | | - .io_port_1_reg = 0xE5, |
|---|
| 391 | | - .io_port_2_reg = 0xE6, |
|---|
| 392 | | - .max_mp_regs = 196, |
|---|
| 393 | | - .rd_bitmap_l = 0x10, |
|---|
| 394 | | - .rd_bitmap_u = 0x11, |
|---|
| 395 | | - .rd_bitmap_1l = 0x12, |
|---|
| 396 | | - .rd_bitmap_1u = 0x13, |
|---|
| 397 | | - .wr_bitmap_l = 0x14, |
|---|
| 398 | | - .wr_bitmap_u = 0x15, |
|---|
| 399 | | - .wr_bitmap_1l = 0x16, |
|---|
| 400 | | - .wr_bitmap_1u = 0x17, |
|---|
| 401 | | - .rd_len_p0_l = 0x18, |
|---|
| 402 | | - .rd_len_p0_u = 0x19, |
|---|
| 403 | | - .card_misc_cfg_reg = 0xd8, |
|---|
| 404 | | - .card_cfg_2_1_reg = 0xd9, |
|---|
| 405 | | - .cmd_rd_len_0 = 0xc0, |
|---|
| 406 | | - .cmd_rd_len_1 = 0xc1, |
|---|
| 407 | | - .cmd_rd_len_2 = 0xc2, |
|---|
| 408 | | - .cmd_rd_len_3 = 0xc3, |
|---|
| 409 | | - .cmd_cfg_0 = 0xc4, |
|---|
| 410 | | - .cmd_cfg_1 = 0xc5, |
|---|
| 411 | | - .cmd_cfg_2 = 0xc6, |
|---|
| 412 | | - .cmd_cfg_3 = 0xc7, |
|---|
| 413 | | - .fw_dump_host_ready = 0xcc, |
|---|
| 414 | | - .fw_dump_ctrl = 0xf0, |
|---|
| 415 | | - .fw_dump_start = 0xf1, |
|---|
| 416 | | - .fw_dump_end = 0xf8, |
|---|
| 417 | | - .func1_dump_reg_start = 0x10, |
|---|
| 418 | | - .func1_dump_reg_end = 0x17, |
|---|
| 419 | | - .func1_scratch_reg = 0xe8, |
|---|
| 420 | | - .func1_spec_reg_num = 13, |
|---|
| 421 | | - .func1_spec_reg_table = {0x08, 0x58, 0x5C, 0x5D, |
|---|
| 422 | | - 0x60, 0x61, 0x62, 0x64, |
|---|
| 423 | | - 0x65, 0x66, 0x68, 0x69, |
|---|
| 424 | | - 0x6a}, |
|---|
| 425 | | -}; |
|---|
| 426 | | - |
|---|
| 427 | | -static const struct mwifiex_sdio_card_reg mwifiex_reg_sd8887 = { |
|---|
| 428 | | - .start_rd_port = 0, |
|---|
| 429 | | - .start_wr_port = 0, |
|---|
| 430 | | - .base_0_reg = 0x6C, |
|---|
| 431 | | - .base_1_reg = 0x6D, |
|---|
| 432 | | - .poll_reg = 0x5C, |
|---|
| 433 | | - .host_int_enable = UP_LD_HOST_INT_MASK | DN_LD_HOST_INT_MASK | |
|---|
| 434 | | - CMD_PORT_UPLD_INT_MASK | CMD_PORT_DNLD_INT_MASK, |
|---|
| 435 | | - .host_int_rsr_reg = 0x4, |
|---|
| 436 | | - .host_int_status_reg = 0x0C, |
|---|
| 437 | | - .host_int_mask_reg = 0x08, |
|---|
| 438 | | - .status_reg_0 = 0x90, |
|---|
| 439 | | - .status_reg_1 = 0x91, |
|---|
| 440 | | - .sdio_int_mask = 0xff, |
|---|
| 441 | | - .data_port_mask = 0xffffffff, |
|---|
| 442 | | - .io_port_0_reg = 0xE4, |
|---|
| 443 | | - .io_port_1_reg = 0xE5, |
|---|
| 444 | | - .io_port_2_reg = 0xE6, |
|---|
| 445 | | - .max_mp_regs = 196, |
|---|
| 446 | | - .rd_bitmap_l = 0x10, |
|---|
| 447 | | - .rd_bitmap_u = 0x11, |
|---|
| 448 | | - .rd_bitmap_1l = 0x12, |
|---|
| 449 | | - .rd_bitmap_1u = 0x13, |
|---|
| 450 | | - .wr_bitmap_l = 0x14, |
|---|
| 451 | | - .wr_bitmap_u = 0x15, |
|---|
| 452 | | - .wr_bitmap_1l = 0x16, |
|---|
| 453 | | - .wr_bitmap_1u = 0x17, |
|---|
| 454 | | - .rd_len_p0_l = 0x18, |
|---|
| 455 | | - .rd_len_p0_u = 0x19, |
|---|
| 456 | | - .card_misc_cfg_reg = 0xd8, |
|---|
| 457 | | - .card_cfg_2_1_reg = 0xd9, |
|---|
| 458 | | - .cmd_rd_len_0 = 0xc0, |
|---|
| 459 | | - .cmd_rd_len_1 = 0xc1, |
|---|
| 460 | | - .cmd_rd_len_2 = 0xc2, |
|---|
| 461 | | - .cmd_rd_len_3 = 0xc3, |
|---|
| 462 | | - .cmd_cfg_0 = 0xc4, |
|---|
| 463 | | - .cmd_cfg_1 = 0xc5, |
|---|
| 464 | | - .cmd_cfg_2 = 0xc6, |
|---|
| 465 | | - .cmd_cfg_3 = 0xc7, |
|---|
| 466 | | - .func1_dump_reg_start = 0x10, |
|---|
| 467 | | - .func1_dump_reg_end = 0x17, |
|---|
| 468 | | - .func1_scratch_reg = 0x90, |
|---|
| 469 | | - .func1_spec_reg_num = 13, |
|---|
| 470 | | - .func1_spec_reg_table = {0x08, 0x58, 0x5C, 0x5D, 0x60, |
|---|
| 471 | | - 0x61, 0x62, 0x64, 0x65, 0x66, |
|---|
| 472 | | - 0x68, 0x69, 0x6a}, |
|---|
| 473 | | -}; |
|---|
| 474 | | - |
|---|
| 475 | | -static const struct mwifiex_sdio_device mwifiex_sdio_sd8786 = { |
|---|
| 476 | | - .firmware = SD8786_DEFAULT_FW_NAME, |
|---|
| 477 | | - .reg = &mwifiex_reg_sd87xx, |
|---|
| 478 | | - .max_ports = 16, |
|---|
| 479 | | - .mp_agg_pkt_limit = 8, |
|---|
| 480 | | - .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K, |
|---|
| 481 | | - .mp_tx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, |
|---|
| 482 | | - .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, |
|---|
| 483 | | - .supports_sdio_new_mode = false, |
|---|
| 484 | | - .has_control_mask = true, |
|---|
| 485 | | - .can_dump_fw = false, |
|---|
| 486 | | - .can_auto_tdls = false, |
|---|
| 487 | | - .can_ext_scan = false, |
|---|
| 488 | | -}; |
|---|
| 489 | | - |
|---|
| 490 | | -static const struct mwifiex_sdio_device mwifiex_sdio_sd8787 = { |
|---|
| 491 | | - .firmware = SD8787_DEFAULT_FW_NAME, |
|---|
| 492 | | - .reg = &mwifiex_reg_sd87xx, |
|---|
| 493 | | - .max_ports = 16, |
|---|
| 494 | | - .mp_agg_pkt_limit = 8, |
|---|
| 495 | | - .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K, |
|---|
| 496 | | - .mp_tx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, |
|---|
| 497 | | - .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, |
|---|
| 498 | | - .supports_sdio_new_mode = false, |
|---|
| 499 | | - .has_control_mask = true, |
|---|
| 500 | | - .can_dump_fw = false, |
|---|
| 501 | | - .can_auto_tdls = false, |
|---|
| 502 | | - .can_ext_scan = true, |
|---|
| 503 | | -}; |
|---|
| 504 | | - |
|---|
| 505 | | -static const struct mwifiex_sdio_device mwifiex_sdio_sd8797 = { |
|---|
| 506 | | - .firmware = SD8797_DEFAULT_FW_NAME, |
|---|
| 507 | | - .reg = &mwifiex_reg_sd87xx, |
|---|
| 508 | | - .max_ports = 16, |
|---|
| 509 | | - .mp_agg_pkt_limit = 8, |
|---|
| 510 | | - .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K, |
|---|
| 511 | | - .mp_tx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, |
|---|
| 512 | | - .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, |
|---|
| 513 | | - .supports_sdio_new_mode = false, |
|---|
| 514 | | - .has_control_mask = true, |
|---|
| 515 | | - .can_dump_fw = false, |
|---|
| 516 | | - .can_auto_tdls = false, |
|---|
| 517 | | - .can_ext_scan = true, |
|---|
| 518 | | -}; |
|---|
| 519 | | - |
|---|
| 520 | | -static const struct mwifiex_sdio_device mwifiex_sdio_sd8897 = { |
|---|
| 521 | | - .firmware = SD8897_DEFAULT_FW_NAME, |
|---|
| 522 | | - .reg = &mwifiex_reg_sd8897, |
|---|
| 523 | | - .max_ports = 32, |
|---|
| 524 | | - .mp_agg_pkt_limit = 16, |
|---|
| 525 | | - .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_4K, |
|---|
| 526 | | - .mp_tx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_MAX, |
|---|
| 527 | | - .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_MAX, |
|---|
| 528 | | - .supports_sdio_new_mode = true, |
|---|
| 529 | | - .has_control_mask = false, |
|---|
| 530 | | - .can_dump_fw = true, |
|---|
| 531 | | - .can_auto_tdls = false, |
|---|
| 532 | | - .can_ext_scan = true, |
|---|
| 533 | | -}; |
|---|
| 534 | | - |
|---|
| 535 | | -static const struct mwifiex_sdio_device mwifiex_sdio_sd8997 = { |
|---|
| 536 | | - .firmware = SD8997_DEFAULT_FW_NAME, |
|---|
| 537 | | - .reg = &mwifiex_reg_sd8997, |
|---|
| 538 | | - .max_ports = 32, |
|---|
| 539 | | - .mp_agg_pkt_limit = 16, |
|---|
| 540 | | - .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_4K, |
|---|
| 541 | | - .mp_tx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_MAX, |
|---|
| 542 | | - .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_MAX, |
|---|
| 543 | | - .supports_sdio_new_mode = true, |
|---|
| 544 | | - .has_control_mask = false, |
|---|
| 545 | | - .can_dump_fw = true, |
|---|
| 546 | | - .fw_dump_enh = true, |
|---|
| 547 | | - .can_auto_tdls = false, |
|---|
| 548 | | - .can_ext_scan = true, |
|---|
| 549 | | -}; |
|---|
| 550 | | - |
|---|
| 551 | | -static const struct mwifiex_sdio_device mwifiex_sdio_sd8887 = { |
|---|
| 552 | | - .firmware = SD8887_DEFAULT_FW_NAME, |
|---|
| 553 | | - .reg = &mwifiex_reg_sd8887, |
|---|
| 554 | | - .max_ports = 32, |
|---|
| 555 | | - .mp_agg_pkt_limit = 16, |
|---|
| 556 | | - .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K, |
|---|
| 557 | | - .mp_tx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_32K, |
|---|
| 558 | | - .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_32K, |
|---|
| 559 | | - .supports_sdio_new_mode = true, |
|---|
| 560 | | - .has_control_mask = false, |
|---|
| 561 | | - .can_dump_fw = false, |
|---|
| 562 | | - .can_auto_tdls = true, |
|---|
| 563 | | - .can_ext_scan = true, |
|---|
| 564 | | -}; |
|---|
| 565 | | - |
|---|
| 566 | | -static const struct mwifiex_sdio_device mwifiex_sdio_sd8801 = { |
|---|
| 567 | | - .firmware = SD8801_DEFAULT_FW_NAME, |
|---|
| 568 | | - .reg = &mwifiex_reg_sd87xx, |
|---|
| 569 | | - .max_ports = 16, |
|---|
| 570 | | - .mp_agg_pkt_limit = 8, |
|---|
| 571 | | - .supports_sdio_new_mode = false, |
|---|
| 572 | | - .has_control_mask = true, |
|---|
| 573 | | - .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K, |
|---|
| 574 | | - .mp_tx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, |
|---|
| 575 | | - .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, |
|---|
| 576 | | - .can_dump_fw = false, |
|---|
| 577 | | - .can_auto_tdls = false, |
|---|
| 578 | | - .can_ext_scan = true, |
|---|
| 579 | 291 | }; |
|---|
| 580 | 292 | |
|---|
| 581 | 293 | /* |
|---|