diff options
author | Arend van Spriel <arend@broadcom.com> | 2011-12-12 18:15:01 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-12-13 15:48:01 -0500 |
commit | b14f16747f143b330d0cef84ff2c590c3f1744a4 (patch) | |
tree | de10ba8a7efd507d3fd23a8f8bc13db6d94b1f86 /drivers/net | |
parent | 373c78e19d6c00ff87fc251584d8bab65150e751 (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.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmsmac/srom.c | 50 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmsmac/srom.h | 2 |
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. */ |
587 | static u8 brcms_srom_crc8_table[CRC8_TABLE_SIZE]; | 587 | static u8 brcms_srom_crc8_table[CRC8_TABLE_SIZE]; |
588 | 588 | ||
589 | static u8 __iomem * | ||
590 | srom_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 | |||
600 | static uint mask_shift(u16 mask) | 589 | static 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 | */ |
781 | static int | 770 | static int |
782 | sprom_read_pci(struct si_pub *sih, u8 __iomem *sprom, uint wordoff, | 771 | sprom_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 | */ |
854 | static int initvars_srom_pci(struct si_pub *sih, void __iomem *curmap) | 853 | int 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 | */ | ||
928 | int 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 */ |
23 | extern int srom_var_init(struct si_pub *sih, void __iomem *curmap); | 23 | extern int srom_var_init(struct si_pub *sih); |
24 | extern void srom_free_vars(struct si_pub *sih); | 24 | extern void srom_free_vars(struct si_pub *sih); |
25 | 25 | ||
26 | extern int srom_read(struct si_pub *sih, uint bus, void *curmap, | 26 | extern int srom_read(struct si_pub *sih, uint bus, void *curmap, |