Age | Commit message (Collapse) | Author | Files | Lines |
|
Add functions to deal with lldd_dev_found and lldd_dev_gone.
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Add cq interrupt handler and also slot error handler function.
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Add path to send ssp command to HW.
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Add code to interrupts, so now we can get a phy up interrupt when a disk
is connected.
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Add module init code for v1 hw.
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Include initialisation.
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
The SAS address for the HBA comes from the device tree.
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Each completion queue has a structure. This is mainly for passing to irq
handler so we know which queue the irq occured on.
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Add functionality to init slot indexing.
Slot indexing is for the host to track which slots (or tags) are free
and which are used.
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
This patch also includes relevant memory/pool freeing and sas/scsi host
removal.
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Allocate DMA and non-DMA memories for the controller. Also create DMA
pools.
These include:
- Delivery queues
- Completion queues
- Command status buffer
- Command table
- ITCT (For device context)
- Host slot info
- IO status
- Breakpoint
- host slot indexing
- SG data
- FIS
- interrupts names
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Scan the device tree for all properties. Also do this:
- do ioremap for SAS registers
- allocate memory for interrupt names
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Add functionality to register device as a scsi host.
The SAS domain transport ops are empty at this point.
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
This patch adds the initial bare main driver for the HiSilicon SAS
HBA. This only introduces the changes to build and load the main driver
module.
The complete driver consists of the core main module and also a module
platform driver for driving the hw.
The HBA is a platform device.
Signed-off-by: John Garry <[email protected]>
Signed-off-by: Zhangfei Gao <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Add devicetree bindings for HiSilicon SAS driver.
Signed-off-by: John Garry <[email protected]>
Signed-off-by: Zhangfei Gao <[email protected]>
Acked-by: Rob Herring <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
The xfer_rdy, command, and task frame's iu structures are not available
in <scsi/sas.h>, but only aic94xx driver folder. Add them to
include/scsi/sas.h
Signed-off-by: John Garry <[email protected]>
Reviewed-by: Arnd Bergmann <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Move 870-specific init code to a separate function atp870_init()
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Move 885-specific init code to a separate function atp885_init()
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Move 880-specific init code to a separate function atp880_init()
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Call _init_tables before chip-specific initialization. This avoids code
duplication and fixes a bug(?) in 880 init where the values read from flash
into atpdev->sp are then overwritten by calling init_tables.
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
scam_on is used only during probe, no need to keep it later.
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Allocate IRQ later during probe to avoid code duplication and also
remove the need for weird locking in _probe.
(It was probably there to prevent race with the IRQ handler?)
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Use pci_request_regions and do it before accessing the I/O ports.
Also add missing pci_disable_device() call to atp870u_remove().
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Introduce chip type inline functions to simplify code, allowing to delete
dev_id from struct atp_unit.
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Move shpnt common code to the top, remove base_io, use pci_resource_len.
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
chip_ver is used for wide chip detection only. Remove it and use a local
variable instead (for 870; 880 and 885 are always wide).
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Move scsi_host_alloc() to the top of _probe() to remove code duplication,
*p and unneeded atpdev (de)allocation and copying. While at it, fix the
error paths to return real error codes and also add missing
pci_disble_device() call.
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
tscam_885() is empty (except a delay) so remove it.
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
The code for setting host adapter ID is the same for all chips.
Move it to a common function.
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
The ioport region is 0x20 bytes long so accessing 0x3a register using
writeb_io is incorrect. Use writeb_base instead.
There's no change in behavior as 870 chips have ioport = baseport.
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
tscam() is using port 0x80 access for delays but that's x86-only.
Use udelay(2) instead.
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Now that all the is* functions except is885() are gone, rename is885() to
atp_is() to avoid confusion. Don't know what "is" means, though...
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Now that is885() supports everything from is870() and the rest of the code
is almost identical, remove is870() and use is885() instead.
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Move few remaining 870-specific code lines out of is870()
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|
|
Add remaining 870 support to is885():
- different synw, no synuw
- synu[4] = 0x0c
- atp_writeb_io(dev, c, 0x04, 0x00); instead of
atp_writeb_io(dev, c, 0x14, 0x00); (isn't that a bug?)
- atp_writeb_io(dev, c, 0x14, 0xff); instead of
atp_writeb_io(dev, c, 0x14, 0x06);
- different mbuf[3] and mbuf[4] checks
Signed-off-by: Ondrej Zary <[email protected]>
Reviewed-by: Hannes Reinicke <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
|