From dcc3d4a270f9012382d5e74c0c7eb517e2768cf2 Mon Sep 17 00:00:00 2001 From: Yuanyuan Liu Date: Tue, 23 Aug 2016 13:10:59 -0700 Subject: [PATCH] qcacld-3.0: Call ICNSS APIs for get/set channels and dfs Call ICNSS API for get/set unsafe channels and dfs nol when bus type is SNOC. Change-Id: I12e1db54468c7215318333b55d991c53886d21ff CRs-Fixed: 1061220 --- core/pld/src/pld_common.c | 6 ++++ core/pld/src/pld_snoc.c | 59 +++++++++++++++++++++++++++++++++++++++ core/pld/src/pld_snoc.h | 25 ++++++++++++++++- 3 files changed, 89 insertions(+), 1 deletion(-) diff --git a/core/pld/src/pld_common.c b/core/pld/src/pld_common.c index 59538421e4..858c821746 100644 --- a/core/pld/src/pld_common.c +++ b/core/pld/src/pld_common.c @@ -622,6 +622,8 @@ int pld_set_wlan_unsafe_channel(struct device *dev, ch_count); break; case PLD_BUS_TYPE_SNOC: + ret = pld_snoc_set_wlan_unsafe_channel(unsafe_ch_list, + ch_count); break; case PLD_BUS_TYPE_SDIO: /* To do get unsafe channel via cnss sdio API */ @@ -657,6 +659,8 @@ int pld_get_wlan_unsafe_channel(struct device *dev, u16 *unsafe_ch_list, ch_count, buf_len); break; case PLD_BUS_TYPE_SNOC: + ret = pld_snoc_get_wlan_unsafe_channel(unsafe_ch_list, + ch_count, buf_len); break; case PLD_BUS_TYPE_SDIO: /* To do get unsafe channel via cnss sdio API */ @@ -687,6 +691,7 @@ int pld_wlan_set_dfs_nol(struct device *dev, void *info, u16 info_len) ret = pld_pcie_wlan_set_dfs_nol(info, info_len); break; case PLD_BUS_TYPE_SNOC: + ret = pld_snoc_wlan_set_dfs_nol(info, info_len); break; case PLD_BUS_TYPE_SDIO: /* To do get nol via cnss sdio API */ @@ -719,6 +724,7 @@ int pld_wlan_get_dfs_nol(struct device *dev, void *info, u16 info_len) ret = pld_pcie_wlan_get_dfs_nol(info, info_len); break; case PLD_BUS_TYPE_SNOC: + ret = pld_snoc_wlan_get_dfs_nol(info, info_len); break; case PLD_BUS_TYPE_SDIO: break; diff --git a/core/pld/src/pld_snoc.c b/core/pld/src/pld_snoc.c index a47409b418..d04547c9a6 100644 --- a/core/pld/src/pld_snoc.c +++ b/core/pld/src/pld_snoc.c @@ -448,4 +448,63 @@ int pld_snoc_get_irq(int ce_id) return icnss_get_irq(ce_id); } +/** + * pld_snoc_set_wlan_unsafe_channel() - Set unsafe channel + * @unsafe_ch_list: unsafe channel list + * @ch_count: number of channel + * + * Return: 0 for success + * Non zero failure code for errors + */ +int pld_snoc_set_wlan_unsafe_channel(u16 *unsafe_ch_list, u16 ch_count) +{ + return icnss_set_wlan_unsafe_channel(unsafe_ch_list, ch_count); +} + +/** + * pld_get_wlan_unsafe_channel() - Get unsafe channel + * @unsafe_ch_list: buffer to unsafe channel list + * @ch_count: number of channel + * @buf_len: buffer length + * + * Return WLAN unsafe channel to the buffer. + * + * Return: 0 for success + * Non zero failure code for errors + */ +int pld_snoc_get_wlan_unsafe_channel(u16 *unsafe_ch_list, u16 *ch_count, + u16 buf_len) +{ + return icnss_get_wlan_unsafe_channel(unsafe_ch_list, ch_count, + buf_len); +} + +/** + * pld_wlan_set_dfs_nol() - Set DFS info + * @info: DFS info + * @info_len: info length + * + * Return: 0 for success + * Non zero failure code for errors + */ +int pld_snoc_wlan_set_dfs_nol(const void *info, u16 info_len) +{ + return icnss_wlan_set_dfs_nol(info, info_len); +} + +/** + * pld_wlan_get_dfs_nol() - Get DFS info + * @info: buffer to DFS info + * @info_len: info length + * + * Return DFS info to the buffer. + * + * Return: 0 for success + * Non zero failure code for errors + */ +int pld_snoc_wlan_get_dfs_nol(void *info, u16 info_len) +{ + return icnss_wlan_get_dfs_nol(info, info_len); +} + #endif diff --git a/core/pld/src/pld_snoc.h b/core/pld/src/pld_snoc.h index ca1ce1d91c..e047ae2c35 100644 --- a/core/pld/src/pld_snoc.h +++ b/core/pld/src/pld_snoc.h @@ -87,6 +87,25 @@ static inline int pld_snoc_get_irq(int ce_id) { return 0; } +static inline int pld_snoc_set_wlan_unsafe_channel(u16 *unsafe_ch_list, + u16 ch_count) +{ + return 0; +} +static inline int pld_snoc_get_wlan_unsafe_channel(u16 *unsafe_ch_list, + u16 *ch_count, + u16 buf_len) +{ + return 0; +} +static inline int pld_snoc_wlan_set_dfs_nol(const void *info, u16 info_len) +{ + return 0; +} +static inline int pld_snoc_wlan_get_dfs_nol(void *info, u16 info_len) +{ + return 0; +} #else int pld_snoc_register_driver(void); void pld_snoc_unregister_driver(void); @@ -104,6 +123,10 @@ int pld_snoc_get_ce_id(int irq); int pld_snoc_power_on(struct device *dev); int pld_snoc_power_off(struct device *dev); int pld_snoc_get_irq(int ce_id); +int pld_snoc_set_wlan_unsafe_channel(u16 *unsafe_ch_list, u16 ch_count); +int pld_snoc_get_wlan_unsafe_channel(u16 *unsafe_ch_list, u16 *ch_count, + u16 buf_len); +int pld_snoc_wlan_set_dfs_nol(const void *info, u16 info_len); +int pld_snoc_wlan_get_dfs_nol(void *info, u16 info_len); #endif - #endif