1b78e91bcSPrameela Rani Garnepudi /** 2b78e91bcSPrameela Rani Garnepudi * Copyright (c) 2017 Redpine Signals Inc. 3b78e91bcSPrameela Rani Garnepudi * 4b78e91bcSPrameela Rani Garnepudi * Permission to use, copy, modify, and/or distribute this software for any 5b78e91bcSPrameela Rani Garnepudi * purpose with or without fee is hereby granted, provided that the above 6b78e91bcSPrameela Rani Garnepudi * copyright notice and this permission notice appear in all copies. 7b78e91bcSPrameela Rani Garnepudi * 8b78e91bcSPrameela Rani Garnepudi * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9b78e91bcSPrameela Rani Garnepudi * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10b78e91bcSPrameela Rani Garnepudi * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11b78e91bcSPrameela Rani Garnepudi * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12b78e91bcSPrameela Rani Garnepudi * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13b78e91bcSPrameela Rani Garnepudi * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14b78e91bcSPrameela Rani Garnepudi * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15b78e91bcSPrameela Rani Garnepudi */ 16b78e91bcSPrameela Rani Garnepudi 17b78e91bcSPrameela Rani Garnepudi #ifndef __RSI_HAL_H__ 18b78e91bcSPrameela Rani Garnepudi #define __RSI_HAL_H__ 19b78e91bcSPrameela Rani Garnepudi 20b78e91bcSPrameela Rani Garnepudi #define FLASH_WRITE_CHUNK_SIZE (4 * 1024) 21b78e91bcSPrameela Rani Garnepudi #define FLASH_SECTOR_SIZE (4 * 1024) 22b78e91bcSPrameela Rani Garnepudi 23b78e91bcSPrameela Rani Garnepudi #define FLASH_SIZE_ADDR 0x04000016 24b78e91bcSPrameela Rani Garnepudi #define PING_BUFFER_ADDRESS 0x19000 25b78e91bcSPrameela Rani Garnepudi #define PONG_BUFFER_ADDRESS 0x1a000 26b78e91bcSPrameela Rani Garnepudi #define SWBL_REGIN 0x41050034 27b78e91bcSPrameela Rani Garnepudi #define SWBL_REGOUT 0x4105003c 28b78e91bcSPrameela Rani Garnepudi #define PING_WRITE 0x1 29b78e91bcSPrameela Rani Garnepudi #define PONG_WRITE 0x2 30b78e91bcSPrameela Rani Garnepudi 31b78e91bcSPrameela Rani Garnepudi #define BL_CMD_TIMEOUT 2000 32b78e91bcSPrameela Rani Garnepudi #define BL_BURN_TIMEOUT (50 * 1000) 33b78e91bcSPrameela Rani Garnepudi 34b78e91bcSPrameela Rani Garnepudi #define REGIN_VALID 0xA 35b78e91bcSPrameela Rani Garnepudi #define REGIN_INPUT 0xA0 36b78e91bcSPrameela Rani Garnepudi #define REGOUT_VALID 0xAB 37b78e91bcSPrameela Rani Garnepudi #define REGOUT_INVALID (~0xAB) 38b78e91bcSPrameela Rani Garnepudi #define CMD_PASS 0xAA 39b78e91bcSPrameela Rani Garnepudi #define CMD_FAIL 0xCC 40b78e91bcSPrameela Rani Garnepudi 41b78e91bcSPrameela Rani Garnepudi #define LOAD_HOSTED_FW 'A' 42b78e91bcSPrameela Rani Garnepudi #define BURN_HOSTED_FW 'B' 43b78e91bcSPrameela Rani Garnepudi #define PING_VALID 'I' 44b78e91bcSPrameela Rani Garnepudi #define PONG_VALID 'O' 45b78e91bcSPrameela Rani Garnepudi #define PING_AVAIL 'I' 46b78e91bcSPrameela Rani Garnepudi #define PONG_AVAIL 'O' 47b78e91bcSPrameela Rani Garnepudi #define EOF_REACHED 'E' 48b78e91bcSPrameela Rani Garnepudi #define CHECK_CRC 'K' 49b78e91bcSPrameela Rani Garnepudi #define POLLING_MODE 'P' 50b78e91bcSPrameela Rani Garnepudi #define CONFIG_AUTO_READ_MODE 'R' 51b78e91bcSPrameela Rani Garnepudi #define JUMP_TO_ZERO_PC 'J' 52b78e91bcSPrameela Rani Garnepudi #define FW_LOADING_SUCCESSFUL 'S' 53b78e91bcSPrameela Rani Garnepudi #define LOADING_INITIATED '1' 54b78e91bcSPrameela Rani Garnepudi 55b78e91bcSPrameela Rani Garnepudi /* Boot loader commands */ 56b78e91bcSPrameela Rani Garnepudi #define SEND_RPS_FILE '2' 57b78e91bcSPrameela Rani Garnepudi 58b78e91bcSPrameela Rani Garnepudi #define FW_IMAGE_MIN_ADDRESS (68 * 1024) 59b78e91bcSPrameela Rani Garnepudi #define MAX_FLASH_FILE_SIZE (400 * 1024) //400K 60b78e91bcSPrameela Rani Garnepudi #define FLASH_START_ADDRESS 16 61b78e91bcSPrameela Rani Garnepudi 62b78e91bcSPrameela Rani Garnepudi #define COMMON_HAL_CARD_READY_IND 0x0 63b78e91bcSPrameela Rani Garnepudi 64b78e91bcSPrameela Rani Garnepudi #define COMMAN_HAL_WAIT_FOR_CARD_READY 1 65b78e91bcSPrameela Rani Garnepudi 66*9920322cSPrameela Rani Garnepudi #define RSI_DEV_OPMODE_WIFI_ALONE 1 67*9920322cSPrameela Rani Garnepudi #define RSI_DEV_COEX_MODE_WIFI_ALONE 1 68*9920322cSPrameela Rani Garnepudi 69b78e91bcSPrameela Rani Garnepudi struct bl_header { 70b78e91bcSPrameela Rani Garnepudi __le32 flags; 71b78e91bcSPrameela Rani Garnepudi __le32 image_no; 72b78e91bcSPrameela Rani Garnepudi __le32 check_sum; 73b78e91bcSPrameela Rani Garnepudi __le32 flash_start_address; 74b78e91bcSPrameela Rani Garnepudi __le32 flash_len; 75b78e91bcSPrameela Rani Garnepudi } __packed; 76b78e91bcSPrameela Rani Garnepudi 77b78e91bcSPrameela Rani Garnepudi struct ta_metadata { 78b78e91bcSPrameela Rani Garnepudi char *name; 79b78e91bcSPrameela Rani Garnepudi unsigned int address; 80b78e91bcSPrameela Rani Garnepudi }; 81b78e91bcSPrameela Rani Garnepudi 82b78e91bcSPrameela Rani Garnepudi int rsi_hal_device_init(struct rsi_hw *adapter); 83b78e91bcSPrameela Rani Garnepudi 84b78e91bcSPrameela Rani Garnepudi #endif 85