1. 28 1月, 2016 4 次提交
    • R
      ath10k: add basic skeleton to support ahb · 0b523ced
      Raja Mani 提交于
      qca4019 uses ahb instead of pci where it slightly differs in device
      enumeration, clock control, reset control, etc. Good thing is that
      ahb also uses copy engine for the data transaction. So, the most of
      the stuff implemented in pci.c/ce.c are reusable in ahb case too.
      
      Device enumeration in ahb case comes through platform driver/device
      model. All resource details like irq, memory map, clocks, etc for
      qca4019 can be fetched from of_node of platform device.
      
      Simply flow would look like,
      
       device tree => platform device (kernel) => platform driver (ath10k)
      
      Device tree entry will have all qca4019 resource details and the same
      info will be passed to kernel. Kernel will prepare new platform device
      for that entry and expose DT info to of_node in platform device.
      Later, ath10k would register platform driver with unique compatible name
      and then kernels binds to corresponding compatible entry & calls ath10k
      ahb probe functions. From there onwards, ath10k will take control of it
      and move forward.
      
      New bool flag CONFIG_ATH10K_AHB is added in Kconfig to conditionally
      enable ahb support in ath10k. On enabling this flag, ath10k_pci.ko
      will have ahb support. This patch adds only basic skeleton and few
      macros to support ahb in the context of qca4019.
      Signed-off-by: NRaja Mani <rmani@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      0b523ced
    • R
      ath10k: pull reusable code from pci probe and remove for ahb · 90188f80
      Raja Mani 提交于
      Some of the code present in ath10k_pci_{probe|remove} are reusable
      in ahb case too. To avoid code duplication, move reusable code to
      new functions. Later, those new functions can be called from ahb
      module's probe and exit functions.
      Signed-off-by: NRaja Mani <rmani@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      90188f80
    • R
      ath10k: make ath10k_pci_read32/write32() ops more generic · 4ddb3299
      Raja Mani 提交于
      ath10k_pci_read32/write32() does work more specific to
      PCI by ensuring pci wake/sleep for every read and write.
      There is a plan to use most of stuff available in pci.c
      (irq stuff, copy engine, etc) for AHB case. Such kind
      of pci wake/sleep for every read/write is not required
      in AHB case (qca4019). All those reusable areas in pci.c
      and ce.c calls ath10k_pci_read32/write32() for low level
      read and write.
      
      In fact, ath10k_pci_read32/write32() should do what it does
      today for PCI case. But for AHB, it has to do differently.
      To make ath10k_pci_read32/write32() more generic, new function
      pointers are added in ar_pci for the function which does
      operation more close to the bus. Later, corresponding bus
      specific read and write function will be mapped to that.
      
      ath10k_pci_read32/write32() are changed to call directly
      those function pointers without worrying which bus underlying
      to it. Also, the function to get number of bank is changed
      in the same way.
      Signed-off-by: NRaja Mani <rmani@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      4ddb3299
    • R
      ath10k: make some of ath10k_pci_* func reusable · f52f5171
      Raja Mani 提交于
      Some of static functions present in pci.c file are reusable
      in ahb (qca4019) case. Remove static word for those reusable
      functions and have those function prototype declaration in
      pci.h file. So that, pci.h header file can be included in
      ahb module and reused. There is no functionality changes done
      in this patch.
      Signed-off-by: NRaja Mani <rmani@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      f52f5171
  2. 31 12月, 2015 2 次提交
  3. 17 11月, 2015 1 次提交
  4. 13 11月, 2015 4 次提交
  5. 05 11月, 2015 1 次提交
  6. 29 10月, 2015 4 次提交
  7. 19 10月, 2015 1 次提交
    • A
      ath10k: disable PCI PS for QCA988X and QCA99X0 · 1aaf8efb
      Anilkumar Kolli 提交于
      This patch disables PCI PS for QCA988X and QCA99X0, Since PCI PS is
      validated for QCA6174, let it be enabled only for QCA6174. It would be
      better to execute PCI PS related functions only for the supported devices.
      
      PCI time out issue is observed with QCA99X0 on x86 platform, We will
      disable PCI PS for QCA988X and QCA99X0 until PCI PS is properly implemented.
      
      Taking and releasing ps_lock is causing higher CPU consumption. Michal Kazior
      suggested ps_lock overhead to be reworked so that ath10k_pci_wake/sleep
      functions are called less often, i.e. move the powersave logic up (only during
      irq handling, tx path, submitting fw commands) but that's a bigger change and
      can be implemented later.
      Signed-off-by: NAnilkumar Kolli <akolli@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      1aaf8efb
  8. 16 10月, 2015 5 次提交
  9. 14 10月, 2015 1 次提交
    • M
      ath10k: add board 2 API support · 0a51b343
      Manikanta Pubbisetty 提交于
      QCA6174 needs different board files based on board type. To make it easier to
      distribute multiple board files and automatically choose correct board file
      create a simple TLV file format following the same principles as with FW IEs.
      The file is named board-2.bin and contain multiple board files. Each board file
      then can have multiple names.
      
      ath10k searches for file board-N.bin (where N is the interface version number
      for the board file, just like we for firmware files) in /lib/firmware/*, for
      example for qca99x0 it will try to find it here:
      
      /lib/firmware/ath10k/QCA99X0/hw2.0/board-2.bin
      
      If ath10k doesn't find board-2.bin then it will fallback to the old board.bin file.
      
      This patch adds a simple name scheme using pci device id which for now will be
      used by qca6174:
      
      bus=%s,vendor=%04x,device=%04x,subsystem-vendor=%04x,subsystem-device=%04x
      
      This removes the old method of having subsystem ids in ar->spec_board_id and
      using that in the board file name.
      Signed-off-by: NManikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>
      [kvalo@qca.qualcomm.com: simplified the file format, rewrote commit log, other smaller changes]
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      0a51b343
  10. 09 10月, 2015 2 次提交
  11. 06 10月, 2015 2 次提交
    • K
      ath10k: fix whitespace usage · 9a14969f
      Kalle Valo 提交于
      checkpatch found:
      
      drivers/net/wireless/ath/ath10k/core.c:574: Blank lines aren't necessary before a close brace '}'
      drivers/net/wireless/ath/ath10k/mac.c:4067: Missing a blank line after declarations
      drivers/net/wireless/ath/ath10k/mac.c:4083: Missing a blank line after declarations
      drivers/net/wireless/ath/ath10k/mac.c:4084: spaces required around that '>>=' (ctx:WxV)
      drivers/net/wireless/ath/ath10k/pci.c:1507: Missing a blank line after declarations
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      9a14969f
    • K
      ath10k: indentation fixes · 617b0f4d
      Kalle Valo 提交于
      checkpatch found:
      
      drivers/net/wireless/ath/ath10k/core.c:513: Alignment should match open parenthesis
      drivers/net/wireless/ath/ath10k/core.c:1266: code indent should use tabs where possible
      drivers/net/wireless/ath/ath10k/core.c:1267: code indent should use tabs where possible
      drivers/net/wireless/ath/ath10k/core.c:1268: code indent should use tabs where possible
      drivers/net/wireless/ath/ath10k/core.c:1269: code indent should use tabs where possible
      drivers/net/wireless/ath/ath10k/mac.c:4659: Alignment should match open parenthesis
      drivers/net/wireless/ath/ath10k/mac.c:6271: Alignment should match open parenthesis
      drivers/net/wireless/ath/ath10k/pci.c:2260: Alignment should match open parenthesis
      drivers/net/wireless/ath/ath10k/wmi.c:3510: Alignment should match open parenthesis
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      617b0f4d
  12. 27 9月, 2015 1 次提交
  13. 26 8月, 2015 2 次提交
  14. 30 7月, 2015 1 次提交
  15. 24 7月, 2015 1 次提交
  16. 12 7月, 2015 1 次提交
  17. 30 6月, 2015 4 次提交
  18. 16 6月, 2015 1 次提交
    • M
      ath10k: prevent debugfs mmio access crash kernel · aeae5b4c
      Michal Kazior 提交于
      It was possible to force an out of bounds MMIO
      read/write via debugfs. E.g. on QCA988X this could
      be triggered with:
      
       echo 0x2080e0 | tee /sys/kernel/debug/ieee80211/*/ath10k/reg_addr
       cat /sys/kernel/debug/ieee80211/*/ath10k/reg_value
      
       BUG: unable to handle kernel paging request at ffffc90001e080e0
       IP: [<ffffffff8135c860>] ioread32+0x40/0x50
       ...
       Call Trace:
        [<ffffffffa00d0c7f>] ? ath10k_pci_read32+0x4f/0x70 [ath10k_pci]
        [<ffffffffa0080f50>] ath10k_reg_value_read+0x90/0xf0 [ath10k_core]
        [<ffffffff8115c2c1>] ? handle_mm_fault+0xa91/0x1050
        [<ffffffff81189758>] __vfs_read+0x28/0xe0
        [<ffffffff812e4694>] ? security_file_permission+0x84/0xa0
        [<ffffffff81189ce3>] ? rw_verify_area+0x53/0x100
        [<ffffffff81189e1a>] vfs_read+0x8a/0x140
        [<ffffffff8118acb9>] SyS_read+0x49/0xb0
        [<ffffffff8104e39c>] ? trace_do_page_fault+0x3c/0xc0
        [<ffffffff8196596e>] system_call_fastpath+0x12/0x71
      Reported-by: NBen Greear <greearb@candelatech.com>
      Signed-off-by: NMichal Kazior <michal.kazior@tieto.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      aeae5b4c
  19. 09 6月, 2015 1 次提交
  20. 01 6月, 2015 1 次提交
    • M
      ath10k: fix possible ps sleep crash · 0bcbbe67
      Michal Kazior 提交于
      If probing failed pci sleep timer could remain
      running and trigger after ath10k structures were
      freed causing invalid pointer dereference:
      
       BUG: unable to handle kernel paging request at ffffc90001c80004
       IP: [<ffffffff81354728>] iowrite32+0x38/0x40
       ...
       Call Trace:
        <IRQ>
        [<ffffffffa00da048>] ? __ath10k_pci_sleep+0x48/0x60 [ath10k_pci]
        [<ffffffffa00da44e>] ath10k_pci_ps_timer+0x5e/0x80 [ath10k_pci]
        [<ffffffff810b210e>] call_timer_fn+0x3e/0x120
        [<ffffffffa00da3f0>] ? ath10k_pci_wake+0x150/0x150 [ath10k_pci]
        [<ffffffff810b3d11>] run_timer_softirq+0x201/0x2e0
        [<ffffffff8105d73f>] __do_softirq+0xaf/0x290
        [<ffffffff8105da95>] irq_exit+0x95/0xa0
        [<ffffffff81950406>] smp_apic_timer_interrupt+0x46/0x60
        [<ffffffff8194e77e>] apic_timer_interrupt+0x6e/0x80
      
      Fixes: 77258d40 ("ath10k: enable pci soc powersaving")
      Signed-off-by: NMichal Kazior <michal.kazior@tieto.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      0bcbbe67