• Gabor Juhos's avatar
    ath9k: use correct OTP register offsets for AR9550 · add295a4
    Gabor Juhos authored
    Accessing the OTP memory on AR9950 causes a data bus
    like this:
    
      Data bus error, epc == 801f7774, ra == 801f7774
      Oops[#1]:
      CPU: 0 PID: 1 Comm: swapper Not tainted 3.10.0-rc3 #592
      task: 87c28000 ti: 87c22000 task.ti: 87c22000
      $ 0   : 00000000 00000061 deadc0de 00000000
      $ 4   : b8115f18 00015f18 00000007 00000004
      $ 8   : 00000001 7c7c3c7c 7c7c7c7c 7c7c7c7c
      $12   : 7c7c3c7c 80320a68 00000000 7c7c7c3c
      $16   : 87cd8010 00015f18 00000007 00000000
      $20   : 00000064 00000004 87c23c7c 8035210c
      $24   : 00000000 801f3674
      $28   : 87c22000 87c23b48 00000001 801f7774
      Hi    : 00000000
      Lo    : 00000064
      epc   : 801f7774 ath9k_hw_wait+0x58/0xb0
          Not tainted
      ra    : 801f7774 ath9k_hw_wait+0x58/0xb0
      Status: 1000cc03 KERNEL EXL IE
      Cause : 4080801c
      PrId  : 00019750 (MIPS 74Kc)
      Modules linked in:
      Process swapper (pid: 1, threadinfo=87c22000, task=87c28000, ts=00000000)
      Stack : 0000000f 00000061 00002710 8006240c 00000001 87cd8010 87c23bb0 87cd8010
              00000000 00000004 00000003 80210c7c 000000b3 67fa8000 0000032a 000006fe
              000003e8 00000002 00000028 87c23bf0 000003ff 80210d24 803e5630 80210e28
              00000000 00000007 87cd8010 00007044 00000004 00000061 000003ff 000001ff
              87c26000 87cd8010 00000220 87cd8bb8 80210000 8020fcf4 87c22000 87c23c08
              ...
      Call Trace:
      [<801f7774>] ath9k_hw_wait+0x58/0xb0
      [<80210c7c>] ar9300_otp_read_word+0x80/0xd4
      [<80210d24>] ar9300_read_otp+0x54/0xb0
      [<8020fcf4>] ar9300_check_eeprom_header+0x1c/0x40
      [<80210fe4>] ath9k_hw_ar9300_fill_eeprom+0x118/0x39c
      [<80206650>] ath9k_hw_eeprom_init+0x74/0xb4
      [<801f96d0>] ath9k_hw_init+0x7ec/0x96c
      [<801e65ec>] ath9k_init_device+0x340/0x758
      [<801f35d0>] ath_ahb_probe+0x21c/0x2c0
      [<801c041c>] driver_probe_device+0xc0/0x1e4
      [<801c05ac>] __driver_attach+0x6c/0xa4
      [<801bea08>] bus_for_each_dev+0x64/0xa8
      [<801bfa40>] bus_add_driver+0xcc/0x24c
      [<801c0954>] driver_register+0xbc/0x17c
      [<803f8fc0>] ath9k_init+0x5c/0x88
      [<800608fc>] do_one_initcall+0xec/0x1a0
      [<803e6a68>] kernel_init_freeable+0x13c/0x200
      [<80309cdc>] kernel_init+0x1c/0xe4
      [<80062450>] ret_from_kernel_thread+0x10/0x18
    
    On the AR9550, the OTP registers are located at
    the same address as on the AR9340. Use the correct
    values to avoid the error.
    
    Cc: stable@vger.kernel.org  # 3.6+
    Signed-off-by: default avatarGabor Juhos <juhosg@openwrt.org>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    add295a4
ar9003_eeprom.h 9.77 KB