Commit 2f2cfc4a authored by Vasanthakumar Thiagarajan's avatar Vasanthakumar Thiagarajan Committed by Kalle Valo

ath10k: Add a table to store hw specific values

This is to prepare ath10k to support newer chip set.
Values like CE_COUNT, MSI_ASSIGN_CE_MAX and
RTC_STATE_V_ON can be different for different
chips.
Signed-off-by: default avatarVasanthakumar Thiagarajan <vthiagar@qti.qualcomm.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent 71c47df4
...@@ -1514,9 +1514,11 @@ struct ath10k *ath10k_core_create(size_t priv_size, struct device *dev, ...@@ -1514,9 +1514,11 @@ struct ath10k *ath10k_core_create(size_t priv_size, struct device *dev,
switch (hw_rev) { switch (hw_rev) {
case ATH10K_HW_QCA988X: case ATH10K_HW_QCA988X:
ar->regs = &qca988x_regs; ar->regs = &qca988x_regs;
ar->hw_values = &qca988x_values;
break; break;
case ATH10K_HW_QCA6174: case ATH10K_HW_QCA6174:
ar->regs = &qca6174_regs; ar->regs = &qca6174_regs;
ar->hw_values = &qca6174_values;
break; break;
default: default:
ath10k_err(ar, "unsupported core hardware revision %d\n", ath10k_err(ar, "unsupported core hardware revision %d\n",
......
...@@ -560,6 +560,7 @@ struct ath10k { ...@@ -560,6 +560,7 @@ struct ath10k {
struct completion target_suspend; struct completion target_suspend;
const struct ath10k_hw_regs *regs; const struct ath10k_hw_regs *regs;
const struct ath10k_hw_values *hw_values;
struct ath10k_bmi bmi; struct ath10k_bmi bmi;
struct ath10k_wmi wmi; struct ath10k_wmi wmi;
struct ath10k_htc htc; struct ath10k_htc htc;
......
...@@ -58,6 +58,20 @@ const struct ath10k_hw_regs qca6174_regs = { ...@@ -58,6 +58,20 @@ const struct ath10k_hw_regs qca6174_regs = {
.scratch_3_address = 0x0028, .scratch_3_address = 0x0028,
}; };
const struct ath10k_hw_values qca988x_values = {
.rtc_state_val_on = 3,
.ce_count = 8,
.msi_assign_ce_max = 7,
.num_target_ce_config_wlan = 7,
};
const struct ath10k_hw_values qca6174_values = {
.rtc_state_val_on = 3,
.ce_count = 8,
.msi_assign_ce_max = 7,
.num_target_ce_config_wlan = 7,
};
void ath10k_hw_fill_survey_time(struct ath10k *ar, struct survey_info *survey, void ath10k_hw_fill_survey_time(struct ath10k *ar, struct survey_info *survey,
u32 cc, u32 rcc, u32 cc_prev, u32 rcc_prev) u32 cc, u32 rcc, u32 cc_prev, u32 rcc_prev)
{ {
......
...@@ -169,6 +169,16 @@ struct ath10k_hw_regs { ...@@ -169,6 +169,16 @@ struct ath10k_hw_regs {
extern const struct ath10k_hw_regs qca988x_regs; extern const struct ath10k_hw_regs qca988x_regs;
extern const struct ath10k_hw_regs qca6174_regs; extern const struct ath10k_hw_regs qca6174_regs;
struct ath10k_hw_values {
u32 rtc_state_val_on;
u8 ce_count;
u8 msi_assign_ce_max;
u8 num_target_ce_config_wlan;
};
extern const struct ath10k_hw_values qca988x_values;
extern const struct ath10k_hw_values qca6174_values;
void ath10k_hw_fill_survey_time(struct ath10k *ar, struct survey_info *survey, void ath10k_hw_fill_survey_time(struct ath10k *ar, struct survey_info *survey,
u32 cc, u32 rcc, u32 cc_prev, u32 rcc_prev); u32 cc, u32 rcc, u32 cc_prev, u32 rcc_prev);
...@@ -310,8 +320,10 @@ enum ath10k_hw_rate_cck { ...@@ -310,8 +320,10 @@ enum ath10k_hw_rate_cck {
#define TARGET_TLV_NUM_MSDU_DESC (1024 + 32) #define TARGET_TLV_NUM_MSDU_DESC (1024 + 32)
#define TARGET_TLV_NUM_WOW_PATTERNS 22 #define TARGET_TLV_NUM_WOW_PATTERNS 22
#define NUM_TARGET_CE_CONFIG_WLAN ar->hw_values->num_target_ce_config_wlan
/* Number of Copy Engines supported */ /* Number of Copy Engines supported */
#define CE_COUNT 8 #define CE_COUNT ar->hw_values->ce_count
/* /*
* Total number of PCIe MSI interrupts requested for all interrupt sources. * Total number of PCIe MSI interrupts requested for all interrupt sources.
...@@ -335,10 +347,10 @@ enum ath10k_hw_rate_cck { ...@@ -335,10 +347,10 @@ enum ath10k_hw_rate_cck {
/* MSIs for Copy Engines */ /* MSIs for Copy Engines */
#define MSI_ASSIGN_CE_INITIAL 1 #define MSI_ASSIGN_CE_INITIAL 1
#define MSI_ASSIGN_CE_MAX 7 #define MSI_ASSIGN_CE_MAX ar->hw_values->msi_assign_ce_max
/* as of IP3.7.1 */ /* as of IP3.7.1 */
#define RTC_STATE_V_ON 3 #define RTC_STATE_V_ON ar->hw_values->rtc_state_val_on
#define RTC_STATE_COLD_RESET_MASK ar->regs->rtc_state_cold_reset_mask #define RTC_STATE_COLD_RESET_MASK ar->regs->rtc_state_cold_reset_mask
#define RTC_STATE_V_LSB 0 #define RTC_STATE_V_LSB 0
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment