aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/oxnas/files/drivers/ata
Commit message (Collapse)AuthorAgeFilesLines
* oxnas: fix qc_prep return in sata driver after kernel 5.4.69Adrian Schmutzler2020-10-091-1/+3
| | | | | | | | | | | | | | | | | | | | | | This fixes a regression after a kernel change in 5.4.69 [1] that led to build failure on oxnas/ox820: drivers/ata/sata_oxnas.c:2238:13: error: initialization of 'enum ata_completion_errors (*)(struct ata_queued_cmd *)' from incompatible pointer type 'void (*)(struct ata_queued_cmd *)' [-Werror=incompatible-pointer-types] .qc_prep = sata_oxnas_qc_prep, ^~~~~~~~~~~~~~~~~~ drivers/ata/sata_oxnas.c:2238:13: note: (near initialization for 'sata_oxnas_ops.qc_prep') Our local driver is changed the same way as prototyped in the kernel patch, i.e. return type is changed and AC_ERR_OK return value is added. [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=e11c83520cd04b813cd1748ee2a8f2c620e5f7e3 Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* oxnas: reduce size of ATA DMA descriptor spaceDaniel Golle2020-08-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After years of trying to find the reason for random kernel crashes while both CPU and SATA are under load it has been found. Some odd commented-out #defines in kref's single-port driver [1] which were copied from the vendor driver made me develop a theory: The IO-mapped memory area for DMA descriptors apparetly got some holes just before the alignment boundaries. This feels like an off-by-one bug in the hardware or maybe those fields are used internally by the SATA controller's firmware. Whatever the cause is: they cannot be used and trying to use them results in reading back unexpected stuff and ends up with oopsing Unable to handle kernel paging request at virtual address d085c004 Work around the issue by reducing the area used for bmdma descriptors. This reduces SATA performance (iops) quite a bit, but finally makes things work reliably. Possibly one could optimize this much more by really just skipping the holes in that memory area -- however, that seems to be non-trivial with the driver and libata in it's current form (suggestions are welcome). The 'proper' way to have good SATA performance would be to make use of the hardware RAID features (one can use the JBOD mode to access even just a single disc transparently through the RAID controller integrated in the SATA host instead of accessing the SATA ports 'raw' as we do now). [1]: https://github.com/kref/linux-oxnas/blob/master/drivers/ata/sata_oxnas.c#L25 Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* oxnas: fix warning in SATA driverDaniel Golle2020-03-311-1/+1
| | | | | | | | | drivers/ata/sata_oxnas.c: In function 'sata_oxnas_port_irq': drivers/ata/sata_oxnas.c:2126:25: warning: left shift count >= width of type [-Wshift-count-overflow] if (ap->qc_active & (1 << ATA_TAG_INTERNAL)) { ^~ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* oxnas: bring in new oxnas targetDaniel Golle2018-06-011-0/+2505
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Reboot the oxnas target based on Linux 4.14 by rebasing our support on top of the now-existing upstream kernel support. This commit brings oxnas support to the level of v4.17 having upstream drivers for Ethernet, Serial and NAND flash. Botch up OpenWrt's local drivers for EHCI, SATA and PCIe based on the new platform code and device-tree. Re-introduce base-files from old oxnas target which works for now but needs further clean-up towards generic board support. Functional issues: * PCIe won't come up (hence no USB3 on Shuttle KD20) * I2C bus of Akitio myCloud device is likely not to work (missing debounce support in new pinctrl driver) Code-style issues: * plla/pllb needs further cleanup -- currently their users or writing into the syscon regmap after acquireling the clk instead of using defined clk_*_*() functions to setup multipliers and dividors. * PCIe phy needs its own little driver. * SATA driver is a monster and should be split into an mfd having a raidctrl regmap, sata controller, sata ports and sata phy. Tested on MitraStar STG-212 aka. Medion Akoya MD86xxx and Shuttle KD20. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* oxnas: kill old oxnas targetDaniel Golle2018-06-011-2477/+0
| | | | Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* oxnas: sata_oxnas: make irq handler more readableFelix Fietkau2014-12-221-12/+13
| | | | | | | | | | safed one level of indention by using 'continue' instead of a lengthy if-clause. Signed-off-by: Daniel Golle <daniel@makrotopia.org> v2: use logic-AND instead of '?' operator when checking for hw bug 6320 SVN-Revision: 43768
* oxnas: sata_oxnas: refactoring phase 2Felix Fietkau2014-12-221-112/+175
| | | | | | | | | | | | | - replaced // comments by /* comments */ - added line-breaks where needed - fixed white-space according to kernel style - fixed some obvious spelling mistakes in comments and printks - removed some unneeded left-overs imported from vendor code-base - replaced printk(...) by libata macros where possible Signed-off-by: Daniel Golle <daniel@makrotopia.org> SVN-Revision: 43767
* oxnas: sata_oxnas: refactoring phase 1Felix Fietkau2014-12-221-114/+142
| | | | | | | | | | | | | locking for 2nd port and hwraid was added from vendor's GPL code which doesn't comply with current kernel coding style. - moved all global variables into host_priv - renamed locks - sanetized acquire() and release() parameter list Signed-off-by: Daniel Golle <daniel@makrotopia.org> SVN-Revision: 43766
* oxnas: add support for 2nd S-ATA port to sata_oxnas driverJohn Crispin2014-12-101-83/+560
| | | | | | | | | | | | | | | | similar to mv_sata, use nr-ports attribute from device tree. import and adapt locking code from vendor GPL sources. add dma controller handling, it may be used in future to avoid full core resets similar to the vendor SDK's "progressive cleanup" function. this is still very dirty and aimed to first of all do things quite exactly like the reference code. and it somehow works. obviously there is lots of room for improvement :) Signed-off-by: Daniel Golle <daniel@makrotopia.org> SVN-Revision: 43598
* oxnas: add copyright header to sata_oxnasJohn Crispin2014-12-101-0/+19
| | | | | | | | | sata_oxnas.c is obviously a refactored version of sata_ox820.c which does contain this header. Signed-off-by: Daniel Golle <daniel@makrotopia.org> SVN-Revision: 43597
* add new target 'oxnas'John Crispin2014-11-261-0/+1889
This is the oxnas target previously developed at http://gitorious.org/openwrt-oxnas Basically, this consolidates the changes and addtionas from http://github.org/kref/linux-oxnas into a new OpenWrt hardware target 'oxnas' adding support for PLX Technology NAS7820/NAS7821/NAS7825/... formally known as Oxford Semiconductor OXE810SE/OXE815/OX820/... For now there are 4 supported boards: Cloud Engines Pogoplug V3 (without PCIe) fully supported Cloud Engines Pogoplug Pro (with PCIe) fully supported MitraStar STG-212 aka ZyXEL NSA-212, aka Medion Akoya P89625 / P89636 / P89626 / P89630, aka Medion MD 86407 / MD 86805 / MD 86517 / MD 86587 fully supported, see http://wiki.openwrt.org/toh/medion/md86587 Shuttle KD-20 partially supported (S-ATA driver lacks support for 2nd port) Signed-off-by: Daniel Golle <daniel@makrotopia.org> SVN-Revision: 43388