Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 92f61e3b authored by John Garry's avatar John Garry Committed by Martin K. Petersen
Browse files

scsi: hisi_sas: add skeleton v3 hw driver



Add skeleton driver for v3 hw in hisi_sas_v3_hw.c

File hisi_sas_v3_hw.c will serve 2 purposes:
- probing and initialisation of the controller based on pci device
- hw layer for v3-based controllers

The controller design is quite similar to v2 hw in hip07.

However key differences include:
-All v2 hw bugs are fixed (hopefully), so workarounds are not required
-support for device deregistration
-some interrupt modifications
-configurable max device support

Signed-off-by: default avatarJohn Garry <john.garry@huawei.com>
Signed-off-by: default avatarXiang Chen <chenxiang66@hisilicon.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 0fa24c19
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -6,4 +6,12 @@ config SCSI_HISI_SAS
	select BLK_DEV_INTEGRITY
	depends on ATA
	help
		This driver supports HiSilicon's SAS HBA
		This driver supports HiSilicon's SAS HBA, including support based
		on platform device

config SCSI_HISI_SAS_PCI
	tristate "HiSilicon SAS on PCI bus"
	depends on SCSI_HISI_SAS
	depends on PCI
	help
		This driver supports HiSilicon's SAS HBA based on PCI device
+1 −0
Original line number Diff line number Diff line
obj-$(CONFIG_SCSI_HISI_SAS)		+= hisi_sas_main.o
obj-$(CONFIG_SCSI_HISI_SAS)		+= hisi_sas_v1_hw.o hisi_sas_v2_hw.o
obj-$(CONFIG_SCSI_HISI_SAS_PCI)		+= hisi_sas_v3_hw.o
+47 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2017 Hisilicon Limited.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 */

#include "hisi_sas.h"
#define DRV_NAME "hisi_sas_v3_hw"

static int
hisi_sas_v3_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{
	return 0;
}

static void hisi_sas_v3_remove(struct pci_dev *pdev)
{
}

enum {
	/* instances of the controller */
	hip08,
};

static const struct pci_device_id sas_v3_pci_table[] = {
	{ PCI_VDEVICE(HUAWEI, 0xa230), hip08 },
	{}
};

static struct pci_driver sas_v3_pci_driver = {
	.name		= DRV_NAME,
	.id_table	= sas_v3_pci_table,
	.probe		= hisi_sas_v3_probe,
	.remove		= hisi_sas_v3_remove,
};

module_pci_driver(sas_v3_pci_driver);

MODULE_VERSION(DRV_VERSION);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("John Garry <john.garry@huawei.com>");
MODULE_DESCRIPTION("HISILICON SAS controller v3 hw driver based on pci device");
MODULE_ALIAS("platform:" DRV_NAME);