aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-3945.c40
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c39
2 files changed, 30 insertions, 49 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c
index 1e9593968c36..a4d842a05836 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945.c
@@ -2751,51 +2751,12 @@ static int iwl3945_load_bsm(struct iwl_priv *priv)
2751 return 0; 2751 return 0;
2752} 2752}
2753 2753
2754#define IWL3945_UCODE_GET(item) \
2755static u32 iwl3945_ucode_get_##item(const struct iwl_ucode_header *ucode,\
2756 u32 api_ver) \
2757{ \
2758 return le32_to_cpu(ucode->u.v1.item); \
2759}
2760
2761static u32 iwl3945_ucode_get_header_size(u32 api_ver)
2762{
2763 return UCODE_HEADER_SIZE(1);
2764}
2765static u32 iwl3945_ucode_get_build(const struct iwl_ucode_header *ucode,
2766 u32 api_ver)
2767{
2768 return 0;
2769}
2770static u8 *iwl3945_ucode_get_data(const struct iwl_ucode_header *ucode,
2771 u32 api_ver)
2772{
2773 return (u8 *) ucode->u.v1.data;
2774}
2775
2776IWL3945_UCODE_GET(inst_size);
2777IWL3945_UCODE_GET(data_size);
2778IWL3945_UCODE_GET(init_size);
2779IWL3945_UCODE_GET(init_data_size);
2780IWL3945_UCODE_GET(boot_size);
2781
2782static struct iwl_hcmd_ops iwl3945_hcmd = { 2754static struct iwl_hcmd_ops iwl3945_hcmd = {
2783 .rxon_assoc = iwl3945_send_rxon_assoc, 2755 .rxon_assoc = iwl3945_send_rxon_assoc,
2784 .commit_rxon = iwl3945_commit_rxon, 2756 .commit_rxon = iwl3945_commit_rxon,
2785 .send_bt_config = iwl_send_bt_config, 2757 .send_bt_config = iwl_send_bt_config,
2786}; 2758};
2787 2759
2788static struct iwl_ucode_ops iwl3945_ucode = {
2789 .get_header_size = iwl3945_ucode_get_header_size,
2790 .get_build = iwl3945_ucode_get_build,
2791 .get_inst_size = iwl3945_ucode_get_inst_size,
2792 .get_data_size = iwl3945_ucode_get_data_size,
2793 .get_init_size = iwl3945_ucode_get_init_size,
2794 .get_init_data_size = iwl3945_ucode_get_init_data_size,
2795 .get_boot_size = iwl3945_ucode_get_boot_size,
2796 .get_data = iwl3945_ucode_get_data,
2797};
2798
2799static struct iwl_lib_ops iwl3945_lib = { 2760static struct iwl_lib_ops iwl3945_lib = {
2800 .txq_attach_buf_to_tfd = iwl3945_hw_txq_attach_buf_to_tfd, 2761 .txq_attach_buf_to_tfd = iwl3945_hw_txq_attach_buf_to_tfd,
2801 .txq_free_tfd = iwl3945_hw_txq_free_tfd, 2762 .txq_free_tfd = iwl3945_hw_txq_free_tfd,
@@ -2847,7 +2808,6 @@ static struct iwl_hcmd_utils_ops iwl3945_hcmd_utils = {
2847}; 2808};
2848 2809
2849static const struct iwl_ops iwl3945_ops = { 2810static const struct iwl_ops iwl3945_ops = {
2850 .ucode = &iwl3945_ucode,
2851 .lib = &iwl3945_lib, 2811 .lib = &iwl3945_lib,
2852 .hcmd = &iwl3945_hcmd, 2812 .hcmd = &iwl3945_hcmd,
2853 .utils = &iwl3945_hcmd_utils, 2813 .utils = &iwl3945_hcmd_utils,
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 9486b3248245..e9de10964c51 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -2109,6 +2109,28 @@ static void iwl3945_nic_start(struct iwl_priv *priv)
2109 iwl_write32(priv, CSR_RESET, 0); 2109 iwl_write32(priv, CSR_RESET, 0);
2110} 2110}
2111 2111
2112#define IWL3945_UCODE_GET(item) \
2113static u32 iwl3945_ucode_get_##item(const struct iwl_ucode_header *ucode)\
2114{ \
2115 return le32_to_cpu(ucode->u.v1.item); \
2116}
2117
2118static u32 iwl3945_ucode_get_header_size(u32 api_ver)
2119{
2120 return UCODE_HEADER_SIZE(1);
2121}
2122
2123static u8 *iwl3945_ucode_get_data(const struct iwl_ucode_header *ucode)
2124{
2125 return (u8 *) ucode->u.v1.data;
2126}
2127
2128IWL3945_UCODE_GET(inst_size);
2129IWL3945_UCODE_GET(data_size);
2130IWL3945_UCODE_GET(init_size);
2131IWL3945_UCODE_GET(init_data_size);
2132IWL3945_UCODE_GET(boot_size);
2133
2112/** 2134/**
2113 * iwl3945_read_ucode - Read uCode images from disk file. 2135 * iwl3945_read_ucode - Read uCode images from disk file.
2114 * 2136 *
@@ -2157,7 +2179,7 @@ static int iwl3945_read_ucode(struct iwl_priv *priv)
2157 goto error; 2179 goto error;
2158 2180
2159 /* Make sure that we got at least our header! */ 2181 /* Make sure that we got at least our header! */
2160 if (ucode_raw->size < priv->cfg->ops->ucode->get_header_size(1)) { 2182 if (ucode_raw->size < iwl3945_ucode_get_header_size(1)) {
2161 IWL_ERR(priv, "File size way too small!\n"); 2183 IWL_ERR(priv, "File size way too small!\n");
2162 ret = -EINVAL; 2184 ret = -EINVAL;
2163 goto err_release; 2185 goto err_release;
@@ -2168,13 +2190,12 @@ static int iwl3945_read_ucode(struct iwl_priv *priv)
2168 2190
2169 priv->ucode_ver = le32_to_cpu(ucode->ver); 2191 priv->ucode_ver = le32_to_cpu(ucode->ver);
2170 api_ver = IWL_UCODE_API(priv->ucode_ver); 2192 api_ver = IWL_UCODE_API(priv->ucode_ver);
2171 inst_size = priv->cfg->ops->ucode->get_inst_size(ucode, api_ver); 2193 inst_size = iwl3945_ucode_get_inst_size(ucode);
2172 data_size = priv->cfg->ops->ucode->get_data_size(ucode, api_ver); 2194 data_size = iwl3945_ucode_get_data_size(ucode);
2173 init_size = priv->cfg->ops->ucode->get_init_size(ucode, api_ver); 2195 init_size = iwl3945_ucode_get_init_size(ucode);
2174 init_data_size = 2196 init_data_size = iwl3945_ucode_get_init_data_size(ucode);
2175 priv->cfg->ops->ucode->get_init_data_size(ucode, api_ver); 2197 boot_size = iwl3945_ucode_get_boot_size(ucode);
2176 boot_size = priv->cfg->ops->ucode->get_boot_size(ucode, api_ver); 2198 src = iwl3945_ucode_get_data(ucode);
2177 src = priv->cfg->ops->ucode->get_data(ucode, api_ver);
2178 2199
2179 /* api_ver should match the api version forming part of the 2200 /* api_ver should match the api version forming part of the
2180 * firmware filename ... but we don't check for that and only rely 2201 * firmware filename ... but we don't check for that and only rely
@@ -2223,7 +2244,7 @@ static int iwl3945_read_ucode(struct iwl_priv *priv)
2223 2244
2224 2245
2225 /* Verify size of file vs. image size info in file's header */ 2246 /* Verify size of file vs. image size info in file's header */
2226 if (ucode_raw->size != priv->cfg->ops->ucode->get_header_size(api_ver) + 2247 if (ucode_raw->size != iwl3945_ucode_get_header_size(api_ver) +
2227 inst_size + data_size + init_size + 2248 inst_size + data_size + init_size +
2228 init_data_size + boot_size) { 2249 init_data_size + boot_size) {
2229 2250