162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * eeprom specific definitions for mac80211 Prism54 drivers 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (c) 2006, Michael Wu <flamingice@sourmilk.net> 662306a36Sopenharmony_ci * Copyright (c) 2007-2009, Christian Lamparter <chunkeey@web.de> 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci * Based on: 962306a36Sopenharmony_ci * - the islsm (softmac prism54) driver, which is: 1062306a36Sopenharmony_ci * Copyright 2004-2006 Jean-Baptiste Note <jbnote@gmail.com>, et al. 1162306a36Sopenharmony_ci * 1262306a36Sopenharmony_ci * - LMAC API interface header file for STLC4560 (lmac_longbow.h) 1362306a36Sopenharmony_ci * Copyright (C) 2007 Conexant Systems, Inc. 1462306a36Sopenharmony_ci * 1562306a36Sopenharmony_ci * - islmvc driver 1662306a36Sopenharmony_ci * Copyright (C) 2001 Intersil Americas Inc. 1762306a36Sopenharmony_ci */ 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#ifndef EEPROM_H 2062306a36Sopenharmony_ci#define EEPROM_H 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci/* PDA defines are Copyright (C) 2005 Nokia Corporation (taken from islsm_pda.h) */ 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_cistruct pda_entry { 2562306a36Sopenharmony_ci __le16 len; /* includes both code and data */ 2662306a36Sopenharmony_ci __le16 code; 2762306a36Sopenharmony_ci u8 data[]; 2862306a36Sopenharmony_ci} __packed; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_cistruct eeprom_pda_wrap { 3162306a36Sopenharmony_ci __le32 magic; 3262306a36Sopenharmony_ci __le16 pad; 3362306a36Sopenharmony_ci __le16 len; 3462306a36Sopenharmony_ci __le32 arm_opcode; 3562306a36Sopenharmony_ci u8 data[]; 3662306a36Sopenharmony_ci} __packed; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_cistruct p54_iq_autocal_entry { 3962306a36Sopenharmony_ci __le16 iq_param[4]; 4062306a36Sopenharmony_ci} __packed; 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_cistruct pda_iq_autocal_entry { 4362306a36Sopenharmony_ci __le16 freq; 4462306a36Sopenharmony_ci struct p54_iq_autocal_entry params; 4562306a36Sopenharmony_ci} __packed; 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_cistruct pda_channel_output_limit { 4862306a36Sopenharmony_ci __le16 freq; 4962306a36Sopenharmony_ci u8 val_bpsk; 5062306a36Sopenharmony_ci u8 val_qpsk; 5162306a36Sopenharmony_ci u8 val_16qam; 5262306a36Sopenharmony_ci u8 val_64qam; 5362306a36Sopenharmony_ci u8 rate_set_mask; 5462306a36Sopenharmony_ci u8 rate_set_size; 5562306a36Sopenharmony_ci} __packed; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_cistruct pda_channel_output_limit_point_longbow { 5862306a36Sopenharmony_ci __le16 val_bpsk; 5962306a36Sopenharmony_ci __le16 val_qpsk; 6062306a36Sopenharmony_ci __le16 val_16qam; 6162306a36Sopenharmony_ci __le16 val_64qam; 6262306a36Sopenharmony_ci} __packed; 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_cistruct pda_channel_output_limit_longbow { 6562306a36Sopenharmony_ci __le16 freq; 6662306a36Sopenharmony_ci struct pda_channel_output_limit_point_longbow point[3]; 6762306a36Sopenharmony_ci} __packed; 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_cistruct pda_pa_curve_data_sample_rev0 { 7062306a36Sopenharmony_ci u8 rf_power; 7162306a36Sopenharmony_ci u8 pa_detector; 7262306a36Sopenharmony_ci u8 pcv; 7362306a36Sopenharmony_ci} __packed; 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_cistruct pda_pa_curve_data_sample_rev1 { 7662306a36Sopenharmony_ci u8 rf_power; 7762306a36Sopenharmony_ci u8 pa_detector; 7862306a36Sopenharmony_ci u8 data_barker; 7962306a36Sopenharmony_ci u8 data_bpsk; 8062306a36Sopenharmony_ci u8 data_qpsk; 8162306a36Sopenharmony_ci u8 data_16qam; 8262306a36Sopenharmony_ci u8 data_64qam; 8362306a36Sopenharmony_ci} __packed; 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_cistruct pda_pa_curve_data { 8662306a36Sopenharmony_ci u8 cal_method_rev; 8762306a36Sopenharmony_ci u8 channels; 8862306a36Sopenharmony_ci u8 points_per_channel; 8962306a36Sopenharmony_ci u8 padding; 9062306a36Sopenharmony_ci u8 data[]; 9162306a36Sopenharmony_ci} __packed; 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_cistruct pda_rssi_cal_ext_entry { 9462306a36Sopenharmony_ci __le16 freq; 9562306a36Sopenharmony_ci __le16 mul; 9662306a36Sopenharmony_ci __le16 add; 9762306a36Sopenharmony_ci} __packed; 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_cistruct pda_rssi_cal_entry { 10062306a36Sopenharmony_ci __le16 mul; 10162306a36Sopenharmony_ci __le16 add; 10262306a36Sopenharmony_ci} __packed; 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_cistruct pda_country { 10562306a36Sopenharmony_ci u8 regdomain; 10662306a36Sopenharmony_ci u8 alpha2[2]; 10762306a36Sopenharmony_ci u8 flags; 10862306a36Sopenharmony_ci} __packed; 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_cistruct pda_antenna_gain { 11162306a36Sopenharmony_ci DECLARE_FLEX_ARRAY(struct { 11262306a36Sopenharmony_ci u8 gain_5GHz; /* 0.25 dBi units */ 11362306a36Sopenharmony_ci u8 gain_2GHz; /* 0.25 dBi units */ 11462306a36Sopenharmony_ci } __packed, antenna); 11562306a36Sopenharmony_ci} __packed; 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_cistruct pda_custom_wrapper { 11862306a36Sopenharmony_ci __le16 entries; 11962306a36Sopenharmony_ci __le16 entry_size; 12062306a36Sopenharmony_ci __le16 offset; 12162306a36Sopenharmony_ci __le16 len; 12262306a36Sopenharmony_ci u8 data[]; 12362306a36Sopenharmony_ci} __packed; 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci/* 12662306a36Sopenharmony_ci * this defines the PDR codes used to build PDAs as defined in document 12762306a36Sopenharmony_ci * number 553155. The current implementation mirrors version 1.1 of the 12862306a36Sopenharmony_ci * document and lists only PDRs supported by the ARM platform. 12962306a36Sopenharmony_ci */ 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci/* common and choice range (0x0000 - 0x0fff) */ 13262306a36Sopenharmony_ci#define PDR_END 0x0000 13362306a36Sopenharmony_ci#define PDR_MANUFACTURING_PART_NUMBER 0x0001 13462306a36Sopenharmony_ci#define PDR_PDA_VERSION 0x0002 13562306a36Sopenharmony_ci#define PDR_NIC_SERIAL_NUMBER 0x0003 13662306a36Sopenharmony_ci#define PDR_NIC_RAM_SIZE 0x0005 13762306a36Sopenharmony_ci#define PDR_RFMODEM_SUP_RANGE 0x0006 13862306a36Sopenharmony_ci#define PDR_PRISM_MAC_SUP_RANGE 0x0007 13962306a36Sopenharmony_ci#define PDR_NIC_ID 0x0008 14062306a36Sopenharmony_ci 14162306a36Sopenharmony_ci#define PDR_MAC_ADDRESS 0x0101 14262306a36Sopenharmony_ci#define PDR_REGULATORY_DOMAIN_LIST 0x0103 /* obsolete */ 14362306a36Sopenharmony_ci#define PDR_ALLOWED_CHAN_SET 0x0104 14462306a36Sopenharmony_ci#define PDR_DEFAULT_CHAN 0x0105 14562306a36Sopenharmony_ci#define PDR_TEMPERATURE_TYPE 0x0107 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci#define PDR_IFR_SETTING 0x0200 14862306a36Sopenharmony_ci#define PDR_RFR_SETTING 0x0201 14962306a36Sopenharmony_ci#define PDR_3861_BASELINE_REG_SETTINGS 0x0202 15062306a36Sopenharmony_ci#define PDR_3861_SHADOW_REG_SETTINGS 0x0203 15162306a36Sopenharmony_ci#define PDR_3861_IFRF_REG_SETTINGS 0x0204 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_ci#define PDR_3861_CHAN_CALIB_SET_POINTS 0x0300 15462306a36Sopenharmony_ci#define PDR_3861_CHAN_CALIB_INTEGRATOR 0x0301 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci#define PDR_3842_PRISM_II_NIC_CONFIG 0x0400 15762306a36Sopenharmony_ci#define PDR_PRISM_USB_ID 0x0401 15862306a36Sopenharmony_ci#define PDR_PRISM_PCI_ID 0x0402 15962306a36Sopenharmony_ci#define PDR_PRISM_PCI_IF_CONFIG 0x0403 16062306a36Sopenharmony_ci#define PDR_PRISM_PCI_PM_CONFIG 0x0404 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ci#define PDR_3861_MF_TEST_CHAN_SET_POINTS 0x0900 16362306a36Sopenharmony_ci#define PDR_3861_MF_TEST_CHAN_INTEGRATORS 0x0901 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci/* ARM range (0x1000 - 0x1fff) */ 16662306a36Sopenharmony_ci#define PDR_COUNTRY_INFORMATION 0x1000 /* obsolete */ 16762306a36Sopenharmony_ci#define PDR_INTERFACE_LIST 0x1001 16862306a36Sopenharmony_ci#define PDR_HARDWARE_PLATFORM_COMPONENT_ID 0x1002 16962306a36Sopenharmony_ci#define PDR_OEM_NAME 0x1003 17062306a36Sopenharmony_ci#define PDR_PRODUCT_NAME 0x1004 17162306a36Sopenharmony_ci#define PDR_UTF8_OEM_NAME 0x1005 17262306a36Sopenharmony_ci#define PDR_UTF8_PRODUCT_NAME 0x1006 17362306a36Sopenharmony_ci#define PDR_COUNTRY_LIST 0x1007 17462306a36Sopenharmony_ci#define PDR_DEFAULT_COUNTRY 0x1008 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci#define PDR_ANTENNA_GAIN 0x1100 17762306a36Sopenharmony_ci 17862306a36Sopenharmony_ci#define PDR_PRISM_INDIGO_PA_CALIBRATION_DATA 0x1901 17962306a36Sopenharmony_ci#define PDR_RSSI_LINEAR_APPROXIMATION 0x1902 18062306a36Sopenharmony_ci#define PDR_PRISM_PA_CAL_OUTPUT_POWER_LIMITS 0x1903 18162306a36Sopenharmony_ci#define PDR_PRISM_PA_CAL_CURVE_DATA 0x1904 18262306a36Sopenharmony_ci#define PDR_RSSI_LINEAR_APPROXIMATION_DUAL_BAND 0x1905 18362306a36Sopenharmony_ci#define PDR_PRISM_ZIF_TX_IQ_CALIBRATION 0x1906 18462306a36Sopenharmony_ci#define PDR_REGULATORY_POWER_LIMITS 0x1907 18562306a36Sopenharmony_ci#define PDR_RSSI_LINEAR_APPROXIMATION_EXTENDED 0x1908 18662306a36Sopenharmony_ci#define PDR_RADIATED_TRANSMISSION_CORRECTION 0x1909 18762306a36Sopenharmony_ci#define PDR_PRISM_TX_IQ_CALIBRATION 0x190a 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_ci/* reserved range (0x2000 - 0x7fff) */ 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ci/* customer range (0x8000 - 0xffff) */ 19262306a36Sopenharmony_ci#define PDR_BASEBAND_REGISTERS 0x8000 19362306a36Sopenharmony_ci#define PDR_PER_CHANNEL_BASEBAND_REGISTERS 0x8001 19462306a36Sopenharmony_ci 19562306a36Sopenharmony_ci/* used by our modificated eeprom image */ 19662306a36Sopenharmony_ci#define PDR_RSSI_LINEAR_APPROXIMATION_CUSTOM 0xDEAD 19762306a36Sopenharmony_ci#define PDR_RSSI_LINEAR_APPROXIMATION_CUSTOMV2 0xCAFF 19862306a36Sopenharmony_ci#define PDR_PRISM_PA_CAL_OUTPUT_POWER_LIMITS_CUSTOM 0xBEEF 19962306a36Sopenharmony_ci#define PDR_PRISM_PA_CAL_CURVE_DATA_CUSTOM 0xB05D 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ci/* Interface Definitions */ 20262306a36Sopenharmony_ci#define PDR_INTERFACE_ROLE_SERVER 0x0000 20362306a36Sopenharmony_ci#define PDR_INTERFACE_ROLE_CLIENT 0x0001 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci/* PDR definitions for default country & country list */ 20662306a36Sopenharmony_ci#define PDR_COUNTRY_CERT_CODE 0x80 20762306a36Sopenharmony_ci#define PDR_COUNTRY_CERT_CODE_REAL 0x00 20862306a36Sopenharmony_ci#define PDR_COUNTRY_CERT_CODE_PSEUDO 0x80 20962306a36Sopenharmony_ci#define PDR_COUNTRY_CERT_BAND 0x40 21062306a36Sopenharmony_ci#define PDR_COUNTRY_CERT_BAND_2GHZ 0x00 21162306a36Sopenharmony_ci#define PDR_COUNTRY_CERT_BAND_5GHZ 0x40 21262306a36Sopenharmony_ci#define PDR_COUNTRY_CERT_IODOOR 0x30 21362306a36Sopenharmony_ci#define PDR_COUNTRY_CERT_IODOOR_BOTH 0x00 21462306a36Sopenharmony_ci#define PDR_COUNTRY_CERT_IODOOR_INDOOR 0x20 21562306a36Sopenharmony_ci#define PDR_COUNTRY_CERT_IODOOR_OUTDOOR 0x30 21662306a36Sopenharmony_ci#define PDR_COUNTRY_CERT_INDEX 0x0f 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci/* Specific LMAC FW/HW variant definitions */ 21962306a36Sopenharmony_ci#define PDR_SYNTH_FRONTEND_MASK 0x0007 22062306a36Sopenharmony_ci#define PDR_SYNTH_FRONTEND_DUETTE3 0x0001 22162306a36Sopenharmony_ci#define PDR_SYNTH_FRONTEND_DUETTE2 0x0002 22262306a36Sopenharmony_ci#define PDR_SYNTH_FRONTEND_FRISBEE 0x0003 22362306a36Sopenharmony_ci#define PDR_SYNTH_FRONTEND_XBOW 0x0004 22462306a36Sopenharmony_ci#define PDR_SYNTH_FRONTEND_LONGBOW 0x0005 22562306a36Sopenharmony_ci#define PDR_SYNTH_IQ_CAL_MASK 0x0018 22662306a36Sopenharmony_ci#define PDR_SYNTH_IQ_CAL_PA_DETECTOR 0x0000 22762306a36Sopenharmony_ci#define PDR_SYNTH_IQ_CAL_DISABLED 0x0008 22862306a36Sopenharmony_ci#define PDR_SYNTH_IQ_CAL_ZIF 0x0010 22962306a36Sopenharmony_ci#define PDR_SYNTH_FAA_SWITCH_MASK 0x0020 23062306a36Sopenharmony_ci#define PDR_SYNTH_FAA_SWITCH_ENABLED 0x0020 23162306a36Sopenharmony_ci#define PDR_SYNTH_24_GHZ_MASK 0x0040 23262306a36Sopenharmony_ci#define PDR_SYNTH_24_GHZ_DISABLED 0x0040 23362306a36Sopenharmony_ci#define PDR_SYNTH_5_GHZ_MASK 0x0080 23462306a36Sopenharmony_ci#define PDR_SYNTH_5_GHZ_DISABLED 0x0080 23562306a36Sopenharmony_ci#define PDR_SYNTH_RX_DIV_MASK 0x0100 23662306a36Sopenharmony_ci#define PDR_SYNTH_RX_DIV_SUPPORTED 0x0100 23762306a36Sopenharmony_ci#define PDR_SYNTH_TX_DIV_MASK 0x0200 23862306a36Sopenharmony_ci#define PDR_SYNTH_TX_DIV_SUPPORTED 0x0200 23962306a36Sopenharmony_ci#define PDR_SYNTH_ASM_MASK 0x0400 24062306a36Sopenharmony_ci#define PDR_SYNTH_ASM_XSWON 0x0400 24162306a36Sopenharmony_ci 24262306a36Sopenharmony_ci#endif /* EEPROM_H */ 243