aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorArend van Spriel <arend@broadcom.com>2011-12-12 18:15:01 -0500
committerJohn W. Linville <linville@tuxdriver.com>2011-12-13 15:48:01 -0500
commitb14f16747f143b330d0cef84ff2c590c3f1744a4 (patch)
treede10ba8a7efd507d3fd23a8f8bc13db6d94b1f86 /drivers/net
parent373c78e19d6c00ff87fc251584d8bab65150e751 (diff)
brcm80211: smac: use bcma core access function in srom.c
The code in srom.c now uses the core access function provided by BCMA so no need to pass __iomem pointer any longer. Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> Reviewed-by: Alwin Beukers <alwin@broadcom.com> Signed-off-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: Franky Lin <frankyl@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/brcm80211/brcmsmac/aiutils.c2
-rw-r--r--drivers/net/wireless/brcm80211/brcmsmac/srom.c50
-rw-r--r--drivers/net/wireless/brcm80211/brcmsmac/srom.h2
3 files changed, 17 insertions, 37 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
index a54cf32d1eb5..bb12ebc20377 100644
--- a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
@@ -725,7 +725,7 @@ static struct si_info *ai_doattach(struct si_info *sii,
725 goto exit; 725 goto exit;
726 726
727 /* Init nvram from sprom/otp if they exist */ 727 /* Init nvram from sprom/otp if they exist */
728 if (srom_var_init(&sii->pub, cc)) 728 if (srom_var_init(&sii->pub))
729 goto exit; 729 goto exit;
730 730
731 ai_nvram_process(sii); 731 ai_nvram_process(sii);
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/srom.c b/drivers/net/wireless/brcm80211/brcmsmac/srom.c
index 95eb620fc7f0..61092156755e 100644
--- a/drivers/net/wireless/brcm80211/brcmsmac/srom.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/srom.c
@@ -586,17 +586,6 @@ static const struct brcms_sromvar perpath_pci_sromvars[] = {
586 * shared between devices. */ 586 * shared between devices. */
587static u8 brcms_srom_crc8_table[CRC8_TABLE_SIZE]; 587static u8 brcms_srom_crc8_table[CRC8_TABLE_SIZE];
588 588
589static u8 __iomem *
590srom_window_address(struct si_pub *sih, u8 __iomem *curmap)
591{
592 if (ai_get_ccrev(sih) < 32)
593 return curmap + PCI_BAR0_SPROM_OFFSET;
594 if (ai_get_cccaps(sih) & CC_CAP_SROM)
595 return curmap + PCI_16KB0_CCREGS_OFFSET + CC_SROM_OTP;
596
597 return NULL;
598}
599
600static uint mask_shift(u16 mask) 589static uint mask_shift(u16 mask)
601{ 590{
602 uint i; 591 uint i;
@@ -779,17 +768,27 @@ _initvars_srom_pci(u8 sromrev, u16 *srom, struct list_head *var_list)
779 * Return 0 on success, nonzero on error. 768 * Return 0 on success, nonzero on error.
780 */ 769 */
781static int 770static int
782sprom_read_pci(struct si_pub *sih, u8 __iomem *sprom, uint wordoff, 771sprom_read_pci(struct si_pub *sih, u16 *buf, uint nwords, bool check_crc)
783 u16 *buf, uint nwords, bool check_crc)
784{ 772{
785 int err = 0; 773 int err = 0;
786 uint i; 774 uint i;
787 u8 *bbuf = (u8 *)buf; /* byte buffer */ 775 u8 *bbuf = (u8 *)buf; /* byte buffer */
788 uint nbytes = nwords << 1; 776 uint nbytes = nwords << 1;
777 struct bcma_device *core;
778 uint sprom_offset;
779
780 /* determine core to read */
781 if (ai_get_ccrev(sih) < 32) {
782 core = ai_findcore(sih, BCMA_CORE_80211, 0);
783 sprom_offset = PCI_BAR0_SPROM_OFFSET;
784 } else {
785 core = ai_findcore(sih, BCMA_CORE_CHIPCOMMON, 0);
786 sprom_offset = CHIPCREGOFFS(sromotp);
787 }
789 788
790 /* read the sprom in bytes */ 789 /* read the sprom in bytes */
791 for (i = 0; i < nbytes; i++) 790 for (i = 0; i < nbytes; i++)
792 bbuf[i] = readb(sprom+i); 791 bbuf[i] = bcma_read8(core, sprom_offset+i);
793 792
794 if (buf[0] == 0xffff) 793 if (buf[0] == 0xffff)
795 /* 794 /*
@@ -851,10 +850,9 @@ static int otp_read_pci(struct si_pub *sih, u16 *buf, uint nwords)
851 * Initialize nonvolatile variable table from sprom. 850 * Initialize nonvolatile variable table from sprom.
852 * Return 0 on success, nonzero on error. 851 * Return 0 on success, nonzero on error.
853 */ 852 */
854static int initvars_srom_pci(struct si_pub *sih, void __iomem *curmap) 853int srom_var_init(struct si_pub *sih)
855{ 854{
856 u16 *srom; 855 u16 *srom;
857 u8 __iomem *sromwindow;
858 u8 sromrev = 0; 856 u8 sromrev = 0;
859 u32 sr; 857 u32 sr;
860 int err = 0; 858 int err = 0;
@@ -866,12 +864,9 @@ static int initvars_srom_pci(struct si_pub *sih, void __iomem *curmap)
866 if (!srom) 864 if (!srom)
867 return -ENOMEM; 865 return -ENOMEM;
868 866
869 sromwindow = srom_window_address(sih, curmap);
870
871 crc8_populate_lsb(brcms_srom_crc8_table, SROM_CRC8_POLY); 867 crc8_populate_lsb(brcms_srom_crc8_table, SROM_CRC8_POLY);
872 if (ai_is_sprom_available(sih)) { 868 if (ai_is_sprom_available(sih)) {
873 err = sprom_read_pci(sih, sromwindow, 0, srom, 869 err = sprom_read_pci(sih, srom, SROM4_WORDS, true);
874 SROM4_WORDS, true);
875 870
876 if (err == 0) 871 if (err == 0)
877 /* srom read and passed crc */ 872 /* srom read and passed crc */
@@ -921,21 +916,6 @@ void srom_free_vars(struct si_pub *sih)
921 kfree(entry); 916 kfree(entry);
922 } 917 }
923} 918}
924/*
925 * Initialize local vars from the right source for this platform.
926 * Return 0 on success, nonzero on error.
927 */
928int srom_var_init(struct si_pub *sih, void __iomem *curmap)
929{
930 uint len;
931
932 len = 0;
933
934 if (curmap != NULL)
935 return initvars_srom_pci(sih, curmap);
936
937 return -EINVAL;
938}
939 919
940/* 920/*
941 * Search the name=value vars for a specific one and return its value. 921 * Search the name=value vars for a specific one and return its value.
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/srom.h b/drivers/net/wireless/brcm80211/brcmsmac/srom.h
index c81df9798e50..f2a58f262c99 100644
--- a/drivers/net/wireless/brcm80211/brcmsmac/srom.h
+++ b/drivers/net/wireless/brcm80211/brcmsmac/srom.h
@@ -20,7 +20,7 @@
20#include "types.h" 20#include "types.h"
21 21
22/* Prototypes */ 22/* Prototypes */
23extern int srom_var_init(struct si_pub *sih, void __iomem *curmap); 23extern int srom_var_init(struct si_pub *sih);
24extern void srom_free_vars(struct si_pub *sih); 24extern void srom_free_vars(struct si_pub *sih);
25 25
26extern int srom_read(struct si_pub *sih, uint bus, void *curmap, 26extern int srom_read(struct si_pub *sih, uint bus, void *curmap,