source: trunk/package/mac80211/patches/570-ath9k-add-external_reset-callback-to-ath9k_platfom_d.patch @ 27187

Last change on this file since 27187 was 27187, checked in by hauke, 5 years ago

package/mac80211: Add linux 3.0 compatibility

Add patches from Hauke adding linux 3.0 compatibility.

Signed-off-by: Jonas Gorski <jonas.gorski+openwrt@…>

File size: 1.8 KB
  • drivers/net/wireless/ath/ath9k/hw.c

    a b static bool ath9k_hw_set_reset(struct at 
    11701170                        rst_flags |= AR_RTC_RC_MAC_COLD; 
    11711171        } 
    11721172 
     1173        if (AR_SREV_9330(ah)) { 
     1174                int npend = 0; 
     1175                int i; 
     1176 
     1177                /* AR9330 WAR: 
     1178                 * call external reset function to reset WMAC if: 
     1179                 * - doing a cold reset 
     1180                 * - we have pending frames in the TX queues 
     1181                 */ 
     1182 
     1183                for (i = 0; i < AR_NUM_QCU; i++) { 
     1184                        npend = ath9k_hw_numtxpending(ah, i); 
     1185                        if (npend) 
     1186                                break; 
     1187                } 
     1188 
     1189                if (ah->external_reset && 
     1190                    (npend || type == ATH9K_RESET_COLD)) { 
     1191                        int reset_err = 0; 
     1192 
     1193                        ath_dbg(ath9k_hw_common(ah), ATH_DBG_RESET, 
     1194                                "reset MAC via external reset\n"); 
     1195 
     1196                        reset_err = ah->external_reset(); 
     1197                        if (reset_err) { 
     1198                                ath_err(ath9k_hw_common(ah), 
     1199                                        "External reset failed, err=%d\n", 
     1200                                        reset_err); 
     1201                                return false; 
     1202                        } 
     1203 
     1204                        REG_WRITE(ah, AR_RTC_RESET, 1); 
     1205                } 
     1206        } 
     1207 
    11731208        REG_WRITE(ah, AR_RTC_RC, rst_flags); 
    11741209 
    11751210        REGWRITE_BUFFER_FLUSH(ah); 
  • drivers/net/wireless/ath/ath9k/hw.h

    a b struct ath_hw { 
    864864 
    865865        bool is_clk_25mhz; 
    866866        int (*get_mac_revision)(void); 
     867        int (*external_reset)(void); 
    867868}; 
    868869 
    869870struct ath_bus_ops { 
  • drivers/net/wireless/ath/ath9k/init.c

    a b static int ath9k_init_softc(u16 devid, s 
    576576                sc->sc_ah->led_pin = pdata->led_pin; 
    577577                ah->is_clk_25mhz = pdata->is_clk_25mhz; 
    578578                ah->get_mac_revision = pdata->get_mac_revision; 
     579                ah->external_reset = pdata->external_reset; 
    579580        } 
    580581 
    581582        common = ath9k_hw_common(ah); 
  • include/linux/ath9k_platform.h

    a b struct ath9k_platform_data { 
    3131 
    3232        bool is_clk_25mhz; 
    3333        int (*get_mac_revision)(void); 
     34        int (*external_reset)(void); 
    3435}; 
    3536 
    3637#endif /* _LINUX_ATH9K_PLATFORM_H */ 
Note: See TracBrowser for help on using the repository browser.