drivers/scsi/hisi_sas/hisi_sas.h
105
struct hisi_hba;
drivers/scsi/hisi_sas/hisi_sas.h
139
struct hisi_hba *hisi_hba;
drivers/scsi/hisi_sas/hisi_sas.h
146
{ .hisi_hba = hisi_hba, \
drivers/scsi/hisi_sas/hisi_sas.h
183
struct hisi_hba *hisi_hba;
drivers/scsi/hisi_sas/hisi_sas.h
215
struct hisi_hba *hisi_hba;
drivers/scsi/hisi_sas/hisi_sas.h
224
struct hisi_hba *hisi_hba;
drivers/scsi/hisi_sas/hisi_sas.h
232
struct hisi_hba *hisi_hba;
drivers/scsi/hisi_sas/hisi_sas.h
319
int (*hw_init)(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
320
int (*fw_info_check)(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
321
int (*interrupt_preinit)(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
322
void (*setup_itct)(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas.h
324
int (*slot_index_alloc)(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas.h
327
void (*sl_notify_ssp)(struct hisi_hba *hisi_hba, int phy_no);
drivers/scsi/hisi_sas/hisi_sas.h
329
void (*prep_ssp)(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas.h
331
void (*prep_smp)(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas.h
333
void (*prep_stp)(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas.h
335
void (*prep_abort)(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas.h
337
void (*phys_init)(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
338
void (*phy_start)(struct hisi_hba *hisi_hba, int phy_no);
drivers/scsi/hisi_sas/hisi_sas.h
339
void (*phy_disable)(struct hisi_hba *hisi_hba, int phy_no);
drivers/scsi/hisi_sas/hisi_sas.h
340
void (*phy_hard_reset)(struct hisi_hba *hisi_hba, int phy_no);
drivers/scsi/hisi_sas/hisi_sas.h
341
void (*get_events)(struct hisi_hba *hisi_hba, int phy_no);
drivers/scsi/hisi_sas/hisi_sas.h
342
void (*phy_set_linkrate)(struct hisi_hba *hisi_hba, int phy_no,
drivers/scsi/hisi_sas/hisi_sas.h
345
int (*clear_itct)(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas.h
348
int (*get_wideport_bitmap)(struct hisi_hba *hisi_hba, int port_id);
drivers/scsi/hisi_sas/hisi_sas.h
349
void (*dereg_device)(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas.h
351
int (*soft_reset)(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
352
u32 (*get_phys_state)(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
353
int (*write_gpio)(struct hisi_hba *hisi_hba, u8 reg_type,
drivers/scsi/hisi_sas/hisi_sas.h
355
void (*wait_cmds_complete_timeout)(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas.h
357
int (*debugfs_snapshot_regs)(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
376
struct hisi_hba *hisi_hba;
drivers/scsi/hisi_sas/hisi_sas.h
654
extern void hisi_sas_stop_phys(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
655
extern int hisi_sas_alloc(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
656
extern void hisi_sas_free(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
661
extern int hisi_sas_get_fw_info(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
671
extern void hisi_sas_phy_enable(struct hisi_hba *hisi_hba, int phy_no,
drivers/scsi/hisi_sas/hisi_sas.h
673
extern void hisi_sas_phy_down(struct hisi_hba *hisi_hba, int phy_no, int rdy,
drivers/scsi/hisi_sas/hisi_sas.h
676
extern void hisi_sas_slot_task_free(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas.h
680
extern void hisi_sas_init_mem(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
683
extern void hisi_sas_phy_oob_ready(struct hisi_hba *hisi_hba, int phy_no);
drivers/scsi/hisi_sas/hisi_sas.h
686
extern void hisi_sas_release_tasks(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
688
extern void hisi_sas_sync_cqs(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
689
extern void hisi_sas_sync_poll_cqs(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
690
extern void hisi_sas_controller_reset_prepare(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas.h
691
extern void hisi_sas_controller_reset_done(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
1008
struct hisi_hba *hisi_hba = phy->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
1013
return queue_work(hisi_hba->wq, &phy->works[event]);
drivers/scsi/hisi_sas/hisi_sas_main.c
1020
struct hisi_hba *hisi_hba = phy->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
1021
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
1030
void hisi_sas_phy_oob_ready(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_main.c
1032
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_main.c
1033
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
1062
static void hisi_sas_phy_init(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_main.c
1064
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_main.c
1068
phy->hisi_hba = hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
1071
phy->maximum_linkrate = hisi_hba->hw->phy_get_max_linkrate();
drivers/scsi/hisi_sas/hisi_sas_main.c
1072
sas_phy->enabled = (phy_no < hisi_hba->n_phy) ? 1 : 0;
drivers/scsi/hisi_sas/hisi_sas_main.c
1079
sas_phy->sas_addr = &hisi_hba->sas_addr[0];
drivers/scsi/hisi_sas/hisi_sas_main.c
1081
sas_phy->ha = (struct sas_ha_struct *)hisi_hba->shost->hostdata;
drivers/scsi/hisi_sas/hisi_sas_main.c
1093
void hisi_sas_phy_enable(struct hisi_hba *hisi_hba, int phy_no, int enable)
drivers/scsi/hisi_sas/hisi_sas_main.c
1095
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_main.c
1106
hisi_hba->hw->phy_start(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_main.c
1109
hisi_hba->hw->phy_disable(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_main.c
1132
static void hisi_sas_do_release_task(struct hisi_hba *hisi_hba, struct sas_task *task,
drivers/scsi/hisi_sas/hisi_sas_main.c
1150
hisi_sas_slot_task_free(hisi_hba, task, slot, need_lock);
drivers/scsi/hisi_sas/hisi_sas_main.c
1153
static void hisi_sas_release_task(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
1161
hisi_sas_do_release_task(hisi_hba, slot->task, slot, false);
drivers/scsi/hisi_sas/hisi_sas_main.c
1166
void hisi_sas_release_tasks(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
1173
sas_dev = &hisi_hba->devices[i];
drivers/scsi/hisi_sas/hisi_sas_main.c
1180
hisi_sas_release_task(hisi_hba, device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1185
static void hisi_sas_dereg_device(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
1188
if (hisi_hba->hw->dereg_device)
drivers/scsi/hisi_sas/hisi_sas_main.c
1189
hisi_hba->hw->dereg_device(hisi_hba, device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1198
struct hisi_hba *hisi_hba = sas_dev->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
1201
for (i = 0; i < hisi_hba->cq_nvecs; i++) {
drivers/scsi/hisi_sas/hisi_sas_main.c
1202
struct hisi_sas_cq *cq = &hisi_hba->cq[i];
drivers/scsi/hisi_sas/hisi_sas_main.c
1218
struct hisi_hba *hisi_hba = dev_to_hisi_hba(device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1219
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
1225
down(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_main.c
1226
if (!test_bit(HISI_SAS_RESETTING_BIT, &hisi_hba->flags)) {
drivers/scsi/hisi_sas/hisi_sas_main.c
1229
hisi_sas_dereg_device(hisi_hba, device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1231
ret = hisi_hba->hw->clear_itct(hisi_hba, sas_dev);
drivers/scsi/hisi_sas/hisi_sas_main.c
1235
if (hisi_hba->hw->free_device)
drivers/scsi/hisi_sas/hisi_sas_main.c
1236
hisi_hba->hw->free_device(sas_dev);
drivers/scsi/hisi_sas/hisi_sas_main.c
1242
up(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_main.c
1245
static int hisi_sas_phy_set_linkrate(struct hisi_hba *hisi_hba, int phy_no,
drivers/scsi/hisi_sas/hisi_sas_main.c
1250
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_main.c
1272
hisi_sas_phy_enable(hisi_hba, phy_no, 0);
drivers/scsi/hisi_sas/hisi_sas_main.c
1274
hisi_hba->hw->phy_set_linkrate(hisi_hba, phy_no, &_r);
drivers/scsi/hisi_sas/hisi_sas_main.c
1275
hisi_sas_phy_enable(hisi_hba, phy_no, 1);
drivers/scsi/hisi_sas/hisi_sas_main.c
1286
struct hisi_hba *hisi_hba = sas_ha->lldd_ha;
drivers/scsi/hisi_sas/hisi_sas_main.c
1287
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
1293
down(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_main.c
1298
hisi_hba->hw->phy_hard_reset(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_main.c
1302
hisi_sas_phy_enable(hisi_hba, phy_no, 0);
drivers/scsi/hisi_sas/hisi_sas_main.c
1304
hisi_sas_phy_enable(hisi_hba, phy_no, 1);
drivers/scsi/hisi_sas/hisi_sas_main.c
1308
hisi_sas_phy_enable(hisi_hba, phy_no, 0);
drivers/scsi/hisi_sas/hisi_sas_main.c
1312
ret = hisi_sas_phy_set_linkrate(hisi_hba, phy_no, funcdata);
drivers/scsi/hisi_sas/hisi_sas_main.c
1316
if (hisi_hba->hw->get_events) {
drivers/scsi/hisi_sas/hisi_sas_main.c
1317
hisi_hba->hw->get_events(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_main.c
1338
up(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_main.c
1362
struct hisi_hba *hisi_hba = dev_to_hisi_hba(device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1363
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
1391
hisi_sas_release_task(hisi_hba, device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1396
static void hisi_sas_refresh_port_id(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
1398
u32 state = hisi_hba->hw->get_phys_state(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
1402
struct hisi_sas_device *sas_dev = &hisi_hba->devices[i];
drivers/scsi/hisi_sas/hisi_sas_main.c
1431
hisi_hba->hw->setup_itct(hisi_hba, sas_dev);
drivers/scsi/hisi_sas/hisi_sas_main.c
1437
static void hisi_sas_rescan_topology(struct hisi_hba *hisi_hba, u32 state)
drivers/scsi/hisi_sas/hisi_sas_main.c
1439
u32 new_state = hisi_hba->hw->get_phys_state(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
1443
for (phy_no = 0; phy_no < hisi_hba->n_phy; phy_no++) {
drivers/scsi/hisi_sas/hisi_sas_main.c
1444
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_main.c
1465
hisi_sas_phy_down(hisi_hba, phy_no, 0, GFP_KERNEL);
drivers/scsi/hisi_sas/hisi_sas_main.c
1480
static void hisi_sas_reset_init_all_devices(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
1487
sas_dev = &hisi_hba->devices[i];
drivers/scsi/hisi_sas/hisi_sas_main.c
1497
static void hisi_sas_send_ata_reset_each_phy(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
1502
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
1508
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_main.c
1526
static void hisi_sas_terminate_stp_reject(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
1528
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
1532
struct hisi_sas_device *sas_dev = &hisi_hba->devices[i];
drivers/scsi/hisi_sas/hisi_sas_main.c
1543
for (port_no = 0; port_no < hisi_hba->n_phy; port_no++) {
drivers/scsi/hisi_sas/hisi_sas_main.c
1544
struct hisi_sas_port *port = &hisi_hba->port[port_no];
drivers/scsi/hisi_sas/hisi_sas_main.c
1556
hisi_sas_send_ata_reset_each_phy(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
1565
void hisi_sas_controller_reset_prepare(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
1567
struct Scsi_Host *shost = hisi_hba->shost;
drivers/scsi/hisi_sas/hisi_sas_main.c
1569
hisi_hba->phy_state = hisi_hba->hw->get_phys_state(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
1572
hisi_hba->hw->wait_cmds_complete_timeout(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
1580
if (hisi_hba->hw->sht)
drivers/scsi/hisi_sas/hisi_sas_main.c
1581
timer_delete_sync(&hisi_hba->timer);
drivers/scsi/hisi_sas/hisi_sas_main.c
1583
set_bit(HISI_SAS_REJECT_CMD_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_main.c
1590
struct hisi_hba *hisi_hba = phy->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
1591
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
1596
hisi_sas_phy_enable(hisi_hba, phy_no, 1);
drivers/scsi/hisi_sas/hisi_sas_main.c
1604
void hisi_sas_controller_reset_done(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
1606
struct Scsi_Host *shost = hisi_hba->shost;
drivers/scsi/hisi_sas/hisi_sas_main.c
1611
for (phy_no = 0; phy_no < hisi_hba->n_phy; phy_no++) {
drivers/scsi/hisi_sas/hisi_sas_main.c
1612
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_main.c
1618
if (!(hisi_hba->phy_state & BIT(phy_no))) {
drivers/scsi/hisi_sas/hisi_sas_main.c
1619
hisi_sas_phy_enable(hisi_hba, phy_no, 1);
drivers/scsi/hisi_sas/hisi_sas_main.c
1628
hisi_sas_refresh_port_id(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
1629
clear_bit(HISI_SAS_REJECT_CMD_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_main.c
1631
if (hisi_hba->reject_stp_links_msk)
drivers/scsi/hisi_sas/hisi_sas_main.c
1632
hisi_sas_terminate_stp_reject(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
1633
hisi_sas_reset_init_all_devices(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
1635
clear_bit(HISI_SAS_RESETTING_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_main.c
1636
up(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_main.c
1638
hisi_sas_rescan_topology(hisi_hba, hisi_hba->phy_state);
drivers/scsi/hisi_sas/hisi_sas_main.c
1642
static int hisi_sas_controller_prereset(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
1644
if (!hisi_hba->hw->soft_reset)
drivers/scsi/hisi_sas/hisi_sas_main.c
1647
down(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_main.c
1648
if (test_and_set_bit(HISI_SAS_RESETTING_BIT, &hisi_hba->flags)) {
drivers/scsi/hisi_sas/hisi_sas_main.c
1649
up(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_main.c
1654
hisi_hba->hw->debugfs_snapshot_regs(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
1659
static int hisi_sas_controller_reset(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
1661
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
1662
struct Scsi_Host *shost = hisi_hba->shost;
drivers/scsi/hisi_sas/hisi_sas_main.c
1666
hisi_sas_controller_reset_prepare(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
1668
rc = hisi_hba->hw->soft_reset(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
167
static struct hisi_hba *dev_to_hisi_hba(struct domain_device *device)
drivers/scsi/hisi_sas/hisi_sas_main.c
1671
clear_bit(HISI_SAS_REJECT_CMD_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_main.c
1672
up(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_main.c
1674
clear_bit(HISI_SAS_RESETTING_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_main.c
1677
clear_bit(HISI_SAS_HW_FAULT_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_main.c
1679
hisi_sas_controller_reset_done(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
1691
struct hisi_hba *hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
1699
hisi_hba = dev_to_hisi_hba(task->dev);
drivers/scsi/hisi_sas/hisi_sas_main.c
1700
dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
1711
cq = &hisi_hba->cq[slot->dlvry_queue];
drivers/scsi/hisi_sas/hisi_sas_main.c
1745
hisi_sas_do_release_task(hisi_hba, task, slot, true);
drivers/scsi/hisi_sas/hisi_sas_main.c
1757
hisi_sas_dereg_device(hisi_hba, device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1765
hisi_sas_do_release_task(hisi_hba, task, slot, true);
drivers/scsi/hisi_sas/hisi_sas_main.c
1774
struct hisi_sas_cq *cq = &hisi_hba->cq[slot->dlvry_queue];
drivers/scsi/hisi_sas/hisi_sas_main.c
178
void hisi_sas_stop_phys(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
1799
struct hisi_hba *hisi_hba = dev_to_hisi_hba(device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1800
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
1808
hisi_sas_dereg_device(hisi_hba, device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1812
hisi_sas_release_task(hisi_hba, device);
drivers/scsi/hisi_sas/hisi_sas_main.c
182
for (phy_no = 0; phy_no < hisi_hba->n_phy; phy_no++)
drivers/scsi/hisi_sas/hisi_sas_main.c
1821
struct hisi_hba *hisi_hba = dev_to_hisi_hba(device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1822
struct sas_ha_struct *sas_ha = &hisi_hba->sha;
drivers/scsi/hisi_sas/hisi_sas_main.c
183
hisi_sas_phy_enable(hisi_hba, phy_no, 0);
drivers/scsi/hisi_sas/hisi_sas_main.c
1861
hisi_sas_phy_down(hisi_hba, sas_phy->id, 0, GFP_KERNEL);
drivers/scsi/hisi_sas/hisi_sas_main.c
187
static void hisi_sas_slot_index_clear(struct hisi_hba *hisi_hba, int slot_idx)
drivers/scsi/hisi_sas/hisi_sas_main.c
1884
struct hisi_hba *hisi_hba = dev_to_hisi_hba(device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1885
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
189
void *bitmap = hisi_hba->slot_index_tags;
drivers/scsi/hisi_sas/hisi_sas_main.c
1896
hisi_sas_dereg_device(hisi_hba, device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1907
hisi_sas_release_task(hisi_hba, device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1915
struct hisi_hba *hisi_hba = dev_to_hisi_hba(device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1916
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
1925
hisi_sas_dereg_device(hisi_hba, device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1932
hisi_sas_release_task(hisi_hba, device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1937
hisi_sas_release_task(hisi_hba, device);
drivers/scsi/hisi_sas/hisi_sas_main.c
194
static void hisi_sas_slot_index_free(struct hisi_hba *hisi_hba, int slot_idx)
drivers/scsi/hisi_sas/hisi_sas_main.c
1949
struct hisi_hba *hisi_hba = dev_to_hisi_hba(device);
drivers/scsi/hisi_sas/hisi_sas_main.c
1954
dev_info(hisi_hba->dev, "I_T_nexus reset fail for dev:%016llx rc=%d\n",
drivers/scsi/hisi_sas/hisi_sas_main.c
196
if (hisi_hba->hw->slot_index_alloc ||
drivers/scsi/hisi_sas/hisi_sas_main.c
1960
struct hisi_hba *hisi_hba = sas_ha->lldd_ha;
drivers/scsi/hisi_sas/hisi_sas_main.c
1965
queue_work(hisi_hba->wq, &r.work);
drivers/scsi/hisi_sas/hisi_sas_main.c
1971
struct hisi_sas_device *sas_dev = &hisi_hba->devices[i];
drivers/scsi/hisi_sas/hisi_sas_main.c
198
spin_lock(&hisi_hba->lock);
drivers/scsi/hisi_sas/hisi_sas_main.c
1983
hisi_sas_release_tasks(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
199
hisi_sas_slot_index_clear(hisi_hba, slot_idx);
drivers/scsi/hisi_sas/hisi_sas_main.c
200
spin_unlock(&hisi_hba->lock);
drivers/scsi/hisi_sas/hisi_sas_main.c
2016
struct hisi_hba *hisi_hba = dev_to_hisi_hba(device);
drivers/scsi/hisi_sas/hisi_sas_main.c
2027
down(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_main.c
2028
hisi_hba->hw->debugfs_snapshot_regs(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
2030
up(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_main.c
2039
set_bit(HISI_SAS_HW_FAULT_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_main.c
204
static void hisi_sas_slot_index_set(struct hisi_hba *hisi_hba, int slot_idx)
drivers/scsi/hisi_sas/hisi_sas_main.c
2043
&hisi_hba->cq[slot->dlvry_queue];
drivers/scsi/hisi_sas/hisi_sas_main.c
2055
queue_work(hisi_hba->wq, &hisi_hba->rst_work);
drivers/scsi/hisi_sas/hisi_sas_main.c
206
void *bitmap = hisi_hba->slot_index_tags;
drivers/scsi/hisi_sas/hisi_sas_main.c
2075
struct hisi_hba *hisi_hba = sha->lldd_ha;
drivers/scsi/hisi_sas/hisi_sas_main.c
2077
if (!hisi_hba->hw->write_gpio)
drivers/scsi/hisi_sas/hisi_sas_main.c
2080
return hisi_hba->hw->write_gpio(hisi_hba, reg_type,
drivers/scsi/hisi_sas/hisi_sas_main.c
2102
void hisi_sas_phy_down(struct hisi_hba *hisi_hba, int phy_no, int rdy,
drivers/scsi/hisi_sas/hisi_sas_main.c
2105
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_main.c
2107
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
211
static int hisi_sas_slot_index_alloc(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
2111
hisi_sas_bytes_dmaed(hisi_hba, phy_no, gfp_flags);
drivers/scsi/hisi_sas/hisi_sas_main.c
2116
if (test_bit(HISI_SAS_RESETTING_BIT, &hisi_hba->flags) ||
drivers/scsi/hisi_sas/hisi_sas_main.c
2129
if (!hisi_hba->hw->get_wideport_bitmap(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
2143
struct hisi_hba *hisi_hba = phy->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
2145
if (test_bit(HISI_SAS_RESETTING_BIT, &hisi_hba->flags))
drivers/scsi/hisi_sas/hisi_sas_main.c
215
void *bitmap = hisi_hba->slot_index_tags;
drivers/scsi/hisi_sas/hisi_sas_main.c
2154
struct hisi_hba *hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_main.c
2159
queue_work(hisi_hba->wq, &hisi_hba->rst_work);
drivers/scsi/hisi_sas/hisi_sas_main.c
2185
void hisi_sas_init_mem(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
2188
struct hisi_sas_breakpoint *sata_breakpoint = hisi_hba->sata_breakpoint;
drivers/scsi/hisi_sas/hisi_sas_main.c
2190
for (i = 0; i < hisi_hba->queue_count; i++) {
drivers/scsi/hisi_sas/hisi_sas_main.c
2191
struct hisi_sas_cq *cq = &hisi_hba->cq[i];
drivers/scsi/hisi_sas/hisi_sas_main.c
2192
struct hisi_sas_dq *dq = &hisi_hba->dq[i];
drivers/scsi/hisi_sas/hisi_sas_main.c
2193
struct hisi_sas_cmd_hdr *cmd_hdr = hisi_hba->cmd_hdr[i];
drivers/scsi/hisi_sas/hisi_sas_main.c
220
spin_lock(&hisi_hba->lock);
drivers/scsi/hisi_sas/hisi_sas_main.c
2201
s = hisi_hba->hw->complete_hdr_size * HISI_SAS_QUEUE_SLOTS;
drivers/scsi/hisi_sas/hisi_sas_main.c
2202
memset(hisi_hba->complete_hdr[i], 0, s);
drivers/scsi/hisi_sas/hisi_sas_main.c
2206
s = sizeof(struct hisi_sas_initial_fis) * hisi_hba->n_phy;
drivers/scsi/hisi_sas/hisi_sas_main.c
2207
memset(hisi_hba->initial_fis, 0, s);
drivers/scsi/hisi_sas/hisi_sas_main.c
2210
memset(hisi_hba->iost, 0, s);
drivers/scsi/hisi_sas/hisi_sas_main.c
2213
memset(hisi_hba->breakpoint, 0, s);
drivers/scsi/hisi_sas/hisi_sas_main.c
222
hisi_hba->last_slot_index + 1);
drivers/scsi/hisi_sas/hisi_sas_main.c
2221
int hisi_sas_alloc(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
2223
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
2228
sema_init(&hisi_hba->sem, 1);
drivers/scsi/hisi_sas/hisi_sas_main.c
2229
spin_lock_init(&hisi_hba->lock);
drivers/scsi/hisi_sas/hisi_sas_main.c
2230
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_main.c
2231
hisi_sas_phy_init(hisi_hba, i);
drivers/scsi/hisi_sas/hisi_sas_main.c
2232
hisi_hba->port[i].port_attached = 0;
drivers/scsi/hisi_sas/hisi_sas_main.c
2233
hisi_hba->port[i].id = -1;
drivers/scsi/hisi_sas/hisi_sas_main.c
2237
hisi_hba->devices[i].dev_type = SAS_PHY_UNUSED;
drivers/scsi/hisi_sas/hisi_sas_main.c
2238
hisi_hba->devices[i].device_id = i;
drivers/scsi/hisi_sas/hisi_sas_main.c
2239
hisi_hba->devices[i].dev_status = HISI_SAS_DEV_INIT;
drivers/scsi/hisi_sas/hisi_sas_main.c
2242
for (i = 0; i < hisi_hba->queue_count; i++) {
drivers/scsi/hisi_sas/hisi_sas_main.c
2243
struct hisi_sas_cq *cq = &hisi_hba->cq[i];
drivers/scsi/hisi_sas/hisi_sas_main.c
2244
struct hisi_sas_dq *dq = &hisi_hba->dq[i];
drivers/scsi/hisi_sas/hisi_sas_main.c
2248
cq->hisi_hba = hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
2255
dq->hisi_hba = hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
2259
hisi_hba->cmd_hdr[i] = dmam_alloc_coherent(dev, s,
drivers/scsi/hisi_sas/hisi_sas_main.c
2260
&hisi_hba->cmd_hdr_dma[i],
drivers/scsi/hisi_sas/hisi_sas_main.c
2262
if (!hisi_hba->cmd_hdr[i])
drivers/scsi/hisi_sas/hisi_sas_main.c
2266
s = hisi_hba->hw->complete_hdr_size * HISI_SAS_QUEUE_SLOTS;
drivers/scsi/hisi_sas/hisi_sas_main.c
2267
hisi_hba->complete_hdr[i] = dmam_alloc_coherent(dev, s,
drivers/scsi/hisi_sas/hisi_sas_main.c
2268
&hisi_hba->complete_hdr_dma[i],
drivers/scsi/hisi_sas/hisi_sas_main.c
2270
if (!hisi_hba->complete_hdr[i])
drivers/scsi/hisi_sas/hisi_sas_main.c
2275
hisi_hba->itct = dmam_alloc_coherent(dev, s, &hisi_hba->itct_dma,
drivers/scsi/hisi_sas/hisi_sas_main.c
2277
if (!hisi_hba->itct)
drivers/scsi/hisi_sas/hisi_sas_main.c
228
spin_unlock(&hisi_hba->lock);
drivers/scsi/hisi_sas/hisi_sas_main.c
2280
hisi_hba->slot_info = devm_kcalloc(dev, max_command_entries,
drivers/scsi/hisi_sas/hisi_sas_main.c
2283
if (!hisi_hba->slot_info)
drivers/scsi/hisi_sas/hisi_sas_main.c
2289
if (hisi_hba->prot_mask & HISI_SAS_DIX_PROT_MASK)
drivers/scsi/hisi_sas/hisi_sas_main.c
2312
slot = &hisi_hba->slot_info[slot_index];
drivers/scsi/hisi_sas/hisi_sas_main.c
232
hisi_sas_slot_index_set(hisi_hba, index);
drivers/scsi/hisi_sas/hisi_sas_main.c
2323
hisi_hba->iost = dmam_alloc_coherent(dev, s, &hisi_hba->iost_dma,
drivers/scsi/hisi_sas/hisi_sas_main.c
2325
if (!hisi_hba->iost)
drivers/scsi/hisi_sas/hisi_sas_main.c
2329
hisi_hba->breakpoint = dmam_alloc_coherent(dev, s,
drivers/scsi/hisi_sas/hisi_sas_main.c
233
hisi_hba->last_slot_index = index;
drivers/scsi/hisi_sas/hisi_sas_main.c
2330
&hisi_hba->breakpoint_dma,
drivers/scsi/hisi_sas/hisi_sas_main.c
2332
if (!hisi_hba->breakpoint)
drivers/scsi/hisi_sas/hisi_sas_main.c
2335
s = hisi_hba->slot_index_count = max_command_entries;
drivers/scsi/hisi_sas/hisi_sas_main.c
2336
hisi_hba->slot_index_tags = devm_bitmap_zalloc(dev, s, GFP_KERNEL);
drivers/scsi/hisi_sas/hisi_sas_main.c
2337
if (!hisi_hba->slot_index_tags)
drivers/scsi/hisi_sas/hisi_sas_main.c
234
spin_unlock(&hisi_hba->lock);
drivers/scsi/hisi_sas/hisi_sas_main.c
2341
hisi_hba->initial_fis = dmam_alloc_coherent(dev, s,
drivers/scsi/hisi_sas/hisi_sas_main.c
2342
&hisi_hba->initial_fis_dma,
drivers/scsi/hisi_sas/hisi_sas_main.c
2344
if (!hisi_hba->initial_fis)
drivers/scsi/hisi_sas/hisi_sas_main.c
2348
hisi_hba->sata_breakpoint = dmam_alloc_coherent(dev, s,
drivers/scsi/hisi_sas/hisi_sas_main.c
2349
&hisi_hba->sata_breakpoint_dma,
drivers/scsi/hisi_sas/hisi_sas_main.c
2351
if (!hisi_hba->sata_breakpoint)
drivers/scsi/hisi_sas/hisi_sas_main.c
2354
hisi_hba->last_slot_index = 0;
drivers/scsi/hisi_sas/hisi_sas_main.c
2356
hisi_hba->wq =
drivers/scsi/hisi_sas/hisi_sas_main.c
2358
if (!hisi_hba->wq) {
drivers/scsi/hisi_sas/hisi_sas_main.c
2369
void hisi_sas_free(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
2373
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_main.c
2374
struct hisi_sas_phy *phy = &hisi_hba->phy[i];
drivers/scsi/hisi_sas/hisi_sas_main.c
2379
if (hisi_hba->wq)
drivers/scsi/hisi_sas/hisi_sas_main.c
2380
destroy_workqueue(hisi_hba->wq);
drivers/scsi/hisi_sas/hisi_sas_main.c
2386
struct hisi_hba *hisi_hba =
drivers/scsi/hisi_sas/hisi_sas_main.c
2387
container_of(work, struct hisi_hba, rst_work);
drivers/scsi/hisi_sas/hisi_sas_main.c
2389
if (hisi_sas_controller_prereset(hisi_hba))
drivers/scsi/hisi_sas/hisi_sas_main.c
239
void hisi_sas_slot_task_free(struct hisi_hba *hisi_hba, struct sas_task *task,
drivers/scsi/hisi_sas/hisi_sas_main.c
2392
hisi_sas_controller_reset(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
2401
if (hisi_sas_controller_prereset(rst->hisi_hba))
drivers/scsi/hisi_sas/hisi_sas_main.c
2404
if (!hisi_sas_controller_reset(rst->hisi_hba))
drivers/scsi/hisi_sas/hisi_sas_main.c
2411
int hisi_sas_get_fw_info(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
2413
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
2414
struct platform_device *pdev = hisi_hba->platform_dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
2418
if (device_property_read_u8_array(dev, "sas-addr", hisi_hba->sas_addr,
drivers/scsi/hisi_sas/hisi_sas_main.c
2429
hisi_hba->ctrl = syscon_regmap_lookup_by_phandle(np,
drivers/scsi/hisi_sas/hisi_sas_main.c
243
struct hisi_sas_device *sas_dev = &hisi_hba->devices[device_id];
drivers/scsi/hisi_sas/hisi_sas_main.c
2431
if (IS_ERR(hisi_hba->ctrl)) {
drivers/scsi/hisi_sas/hisi_sas_main.c
2437
&hisi_hba->ctrl_reset_reg)) {
drivers/scsi/hisi_sas/hisi_sas_main.c
2443
&hisi_hba->ctrl_reset_sts_reg)) {
drivers/scsi/hisi_sas/hisi_sas_main.c
2449
&hisi_hba->ctrl_clock_ena_reg)) {
drivers/scsi/hisi_sas/hisi_sas_main.c
2459
hisi_hba->refclk_frequency_mhz = clk_get_rate(refclk) /
drivers/scsi/hisi_sas/hisi_sas_main.c
246
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
2462
if (device_property_read_u32(dev, "phy-count", &hisi_hba->n_phy)) {
drivers/scsi/hisi_sas/hisi_sas_main.c
2468
&hisi_hba->queue_count)) {
drivers/scsi/hisi_sas/hisi_sas_main.c
2482
struct hisi_hba *hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
2486
shost = scsi_host_alloc(hw->sht, sizeof(*hisi_hba));
drivers/scsi/hisi_sas/hisi_sas_main.c
2491
hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_main.c
2493
INIT_WORK(&hisi_hba->rst_work, hisi_sas_rst_work_handler);
drivers/scsi/hisi_sas/hisi_sas_main.c
2494
hisi_hba->hw = hw;
drivers/scsi/hisi_sas/hisi_sas_main.c
2495
hisi_hba->dev = dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
2496
hisi_hba->platform_dev = pdev;
drivers/scsi/hisi_sas/hisi_sas_main.c
2497
hisi_hba->shost = shost;
drivers/scsi/hisi_sas/hisi_sas_main.c
2498
SHOST_TO_SAS_HA(shost) = &hisi_hba->sha;
drivers/scsi/hisi_sas/hisi_sas_main.c
2500
timer_setup(&hisi_hba->timer, NULL, 0);
drivers/scsi/hisi_sas/hisi_sas_main.c
2502
if (hisi_sas_get_fw_info(hisi_hba) < 0)
drivers/scsi/hisi_sas/hisi_sas_main.c
2505
if (hisi_hba->hw->fw_info_check) {
drivers/scsi/hisi_sas/hisi_sas_main.c
2506
if (hisi_hba->hw->fw_info_check(hisi_hba))
drivers/scsi/hisi_sas/hisi_sas_main.c
2516
hisi_hba->regs = devm_platform_ioremap_resource(pdev, 0);
drivers/scsi/hisi_sas/hisi_sas_main.c
2517
if (IS_ERR(hisi_hba->regs))
drivers/scsi/hisi_sas/hisi_sas_main.c
2522
hisi_hba->sgpio_regs = devm_ioremap_resource(dev, res);
drivers/scsi/hisi_sas/hisi_sas_main.c
2523
if (IS_ERR(hisi_hba->sgpio_regs))
drivers/scsi/hisi_sas/hisi_sas_main.c
2527
if (hisi_sas_alloc(hisi_hba)) {
drivers/scsi/hisi_sas/hisi_sas_main.c
2528
hisi_sas_free(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
2539
static int hisi_sas_interrupt_preinit(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
2541
if (hisi_hba->hw->interrupt_preinit)
drivers/scsi/hisi_sas/hisi_sas_main.c
2542
return hisi_hba->hw->interrupt_preinit(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
2550
struct hisi_hba *hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
2562
hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_main.c
2565
phy_nr = port_nr = hisi_hba->n_phy;
drivers/scsi/hisi_sas/hisi_sas_main.c
2576
sha->lldd_ha = hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
2583
if (hisi_hba->hw->slot_index_alloc) {
drivers/scsi/hisi_sas/hisi_sas_main.c
2592
sha->dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
2593
sha->sas_addr = &hisi_hba->sas_addr[0];
drivers/scsi/hisi_sas/hisi_sas_main.c
2594
sha->num_phys = hisi_hba->n_phy;
drivers/scsi/hisi_sas/hisi_sas_main.c
2595
sha->shost = hisi_hba->shost;
drivers/scsi/hisi_sas/hisi_sas_main.c
2597
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_main.c
2598
sha->sas_phy[i] = &hisi_hba->phy[i].sas_phy;
drivers/scsi/hisi_sas/hisi_sas_main.c
2599
sha->sas_port[i] = &hisi_hba->port[i].sas_port;
drivers/scsi/hisi_sas/hisi_sas_main.c
26
static void hisi_sas_release_task(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
2602
rc = hisi_sas_interrupt_preinit(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
2614
rc = hisi_hba->hw->hw_init(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
2627
hisi_sas_free(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
2636
struct hisi_hba *hisi_hba = sha->lldd_ha;
drivers/scsi/hisi_sas/hisi_sas_main.c
2639
timer_delete_sync(&hisi_hba->timer);
drivers/scsi/hisi_sas/hisi_sas_main.c
2644
hisi_sas_free(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
284
hisi_sas_slot_index_free(hisi_hba, slot->idx);
drivers/scsi/hisi_sas/hisi_sas_main.c
288
static void hisi_sas_task_prep_smp(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
291
hisi_hba->hw->prep_smp(hisi_hba, slot);
drivers/scsi/hisi_sas/hisi_sas_main.c
294
static void hisi_sas_task_prep_ssp(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
297
hisi_hba->hw->prep_ssp(hisi_hba, slot);
drivers/scsi/hisi_sas/hisi_sas_main.c
300
static void hisi_sas_task_prep_ata(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
303
hisi_hba->hw->prep_stp(hisi_hba, slot);
drivers/scsi/hisi_sas/hisi_sas_main.c
306
static void hisi_sas_task_prep_abort(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
309
hisi_hba->hw->prep_abort(hisi_hba, slot);
drivers/scsi/hisi_sas/hisi_sas_main.c
312
static void hisi_sas_dma_unmap(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
315
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
328
static int hisi_sas_dma_map(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
331
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
371
hisi_sas_dma_unmap(hisi_hba, task, *n_elem);
drivers/scsi/hisi_sas/hisi_sas_main.c
376
static void hisi_sas_dif_dma_unmap(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
379
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
391
static int hisi_sas_dif_dma_map(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
394
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
430
void hisi_sas_task_deliver(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_main.c
455
cmd_hdr_base = hisi_hba->cmd_hdr[dlvry_queue];
drivers/scsi/hisi_sas/hisi_sas_main.c
467
hisi_sas_task_prep_smp(hisi_hba, slot);
drivers/scsi/hisi_sas/hisi_sas_main.c
470
hisi_sas_task_prep_ssp(hisi_hba, slot);
drivers/scsi/hisi_sas/hisi_sas_main.c
475
hisi_sas_task_prep_ata(hisi_hba, slot);
drivers/scsi/hisi_sas/hisi_sas_main.c
478
hisi_sas_task_prep_abort(hisi_hba, slot);
drivers/scsi/hisi_sas/hisi_sas_main.c
489
hisi_hba->hw->start_delivery(dq);
drivers/scsi/hisi_sas/hisi_sas_main.c
502
struct hisi_hba *hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
522
hisi_hba = dev_to_hisi_hba(device);
drivers/scsi/hisi_sas/hisi_sas_main.c
523
dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
531
if (unlikely(test_bit(HISI_SAS_REJECT_CMD_BIT, &hisi_hba->flags))) {
drivers/scsi/hisi_sas/hisi_sas_main.c
535
down(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_main.c
536
up(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_main.c
566
dq = &hisi_hba->dq[dq_index];
drivers/scsi/hisi_sas/hisi_sas_main.c
570
if (hisi_hba->iopoll_q_cnt) {
drivers/scsi/hisi_sas/hisi_sas_main.c
578
struct Scsi_Host *shost = hisi_hba->shost;
drivers/scsi/hisi_sas/hisi_sas_main.c
583
dq = &hisi_hba->dq[queue];
drivers/scsi/hisi_sas/hisi_sas_main.c
587
if (!hisi_hba->hw->prep_abort)
drivers/scsi/hisi_sas/hisi_sas_main.c
590
if (test_bit(HISI_SAS_HW_FAULT_BIT, &hisi_hba->flags))
drivers/scsi/hisi_sas/hisi_sas_main.c
593
hisi_hba = dev_to_hisi_hba(device);
drivers/scsi/hisi_sas/hisi_sas_main.c
595
if (unlikely(test_bit(HISI_SAS_REJECT_CMD_BIT, &hisi_hba->flags)))
drivers/scsi/hisi_sas/hisi_sas_main.c
599
dq = &hisi_hba->dq[task->abort_task.qid];
drivers/scsi/hisi_sas/hisi_sas_main.c
602
dev_err(hisi_hba->dev, "task prep: unknown/unsupported proto (0x%x)\n",
drivers/scsi/hisi_sas/hisi_sas_main.c
607
rc = hisi_sas_dma_map(hisi_hba, task, &n_elem);
drivers/scsi/hisi_sas/hisi_sas_main.c
612
rc = hisi_sas_dif_dma_map(hisi_hba, &n_elem_dif, task);
drivers/scsi/hisi_sas/hisi_sas_main.c
617
if (!internal_abort && hisi_hba->hw->slot_index_alloc)
drivers/scsi/hisi_sas/hisi_sas_main.c
618
rc = hisi_hba->hw->slot_index_alloc(hisi_hba, device);
drivers/scsi/hisi_sas/hisi_sas_main.c
620
rc = hisi_sas_slot_index_alloc(hisi_hba, rq);
drivers/scsi/hisi_sas/hisi_sas_main.c
625
slot = &hisi_hba->slot_info[rc];
drivers/scsi/hisi_sas/hisi_sas_main.c
635
hisi_sas_task_deliver(hisi_hba, slot, dq, sas_dev);
drivers/scsi/hisi_sas/hisi_sas_main.c
641
hisi_sas_dif_dma_unmap(hisi_hba, task, n_elem_dif);
drivers/scsi/hisi_sas/hisi_sas_main.c
643
hisi_sas_dma_unmap(hisi_hba, task, n_elem);
drivers/scsi/hisi_sas/hisi_sas_main.c
649
static void hisi_sas_bytes_dmaed(struct hisi_hba *hisi_hba, int phy_no,
drivers/scsi/hisi_sas/hisi_sas_main.c
652
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_main.c
666
hisi_hba->hw->phy_get_max_linkrate();
drivers/scsi/hisi_sas/hisi_sas_main.c
691
struct hisi_hba *hisi_hba = dev_to_hisi_hba(device);
drivers/scsi/hisi_sas/hisi_sas_main.c
693
int last = hisi_hba->last_dev_id;
drivers/scsi/hisi_sas/hisi_sas_main.c
694
int first = (hisi_hba->last_dev_id + 1) % HISI_SAS_MAX_DEVICES;
drivers/scsi/hisi_sas/hisi_sas_main.c
697
spin_lock(&hisi_hba->lock);
drivers/scsi/hisi_sas/hisi_sas_main.c
699
if (hisi_hba->devices[i].dev_type == SAS_PHY_UNUSED) {
drivers/scsi/hisi_sas/hisi_sas_main.c
700
int queue = i % hisi_hba->queue_count;
drivers/scsi/hisi_sas/hisi_sas_main.c
701
struct hisi_sas_dq *dq = &hisi_hba->dq[queue];
drivers/scsi/hisi_sas/hisi_sas_main.c
703
hisi_hba->devices[i].device_id = i;
drivers/scsi/hisi_sas/hisi_sas_main.c
704
sas_dev = &hisi_hba->devices[i];
drivers/scsi/hisi_sas/hisi_sas_main.c
707
sas_dev->hisi_hba = hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
711
INIT_LIST_HEAD(&hisi_hba->devices[i].list);
drivers/scsi/hisi_sas/hisi_sas_main.c
716
hisi_hba->last_dev_id = i;
drivers/scsi/hisi_sas/hisi_sas_main.c
717
spin_unlock(&hisi_hba->lock);
drivers/scsi/hisi_sas/hisi_sas_main.c
731
struct hisi_hba *hisi_hba = cq->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
733
if (cq->id < hisi_hba->queue_count - hisi_hba->iopoll_q_cnt)
drivers/scsi/hisi_sas/hisi_sas_main.c
746
void hisi_sas_sync_poll_cqs(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
750
for (i = 0; i < hisi_hba->queue_count; i++) {
drivers/scsi/hisi_sas/hisi_sas_main.c
751
struct hisi_sas_cq *cq = &hisi_hba->cq[i];
drivers/scsi/hisi_sas/hisi_sas_main.c
759
void hisi_sas_sync_cqs(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_main.c
763
for (i = 0; i < hisi_hba->queue_count; i++) {
drivers/scsi/hisi_sas/hisi_sas_main.c
764
struct hisi_sas_cq *cq = &hisi_hba->cq[i];
drivers/scsi/hisi_sas/hisi_sas_main.c
776
struct hisi_hba *hisi_hba = sas_dev->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
780
&hisi_hba->cq[slot->dlvry_queue];
drivers/scsi/hisi_sas/hisi_sas_main.c
796
struct hisi_hba *hisi_hba = dev_to_hisi_hba(device);
drivers/scsi/hisi_sas/hisi_sas_main.c
805
hisi_sas_release_task(hisi_hba, device);
drivers/scsi/hisi_sas/hisi_sas_main.c
860
struct hisi_hba *hisi_hba = dev_to_hisi_hba(device);
drivers/scsi/hisi_sas/hisi_sas_main.c
863
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
866
if (hisi_hba->hw->alloc_dev)
drivers/scsi/hisi_sas/hisi_sas_main.c
867
sas_dev = hisi_hba->hw->alloc_dev(device);
drivers/scsi/hisi_sas/hisi_sas_main.c
877
hisi_hba->hw->setup_itct(hisi_hba, sas_dev);
drivers/scsi/hisi_sas/hisi_sas_main.c
919
struct hisi_hba *hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_main.c
921
hisi_hba->hw->phys_init(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_main.c
927
struct hisi_hba *hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_main.c
928
struct sas_ha_struct *sha = &hisi_hba->sha;
drivers/scsi/hisi_sas/hisi_sas_main.c
944
struct hisi_hba *hisi_hba = phy->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
948
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_main.c
952
if (!test_bit(HISI_SAS_RESETTING_BIT, &hisi_hba->flags) &&
drivers/scsi/hisi_sas/hisi_sas_main.c
970
hisi_hba->hw->sl_notify_ssp(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_main.c
971
hisi_sas_bytes_dmaed(hisi_hba, phy_no, GFP_KERNEL);
drivers/scsi/hisi_sas/hisi_sas_main.c
992
struct hisi_hba *hisi_hba = phy->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_main.c
993
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1012
prep_prd_sge_v1_hw(hisi_hba, slot, hdr, task->scatter,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1045
static void slot_err_v1_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1052
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1173
static void slot_complete_v1_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1178
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1182
hisi_hba->complete_hdr[slot->cmplt_queue];
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1212
u32 info_reg = hisi_sas_read32(hisi_hba, HGC_INVLD_DQE_INFO);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1254
slot_err_v1_hw(hisi_hba, task, slot);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1308
hisi_sas_slot_task_free(hisi_hba, task, slot, true);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1318
struct hisi_hba *hisi_hba = phy->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1319
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1327
irq_value = hisi_sas_phy_read32(hisi_hba, phy_no, CHL_INT2);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1335
context = hisi_sas_read32(hisi_hba, PHY_CONTEXT);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1342
port_id = (hisi_sas_read32(hisi_hba, PHY_PORT_NUM_MA) >> (4 * phy_no))
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1351
u32 idaf = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1357
link_rate = hisi_sas_read32(hisi_hba, PHY_CONN_RATE);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1381
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT2,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1385
u32 chl_int0 = hisi_sas_phy_read32(hisi_hba, phy_no, CHL_INT0);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1388
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT0, chl_int0);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1389
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT0_MSK, 0x3ce3ee);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1398
struct hisi_hba *hisi_hba = phy->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1400
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1405
irq_value = hisi_sas_phy_read32(hisi_hba, phy_no, CHL_INT2);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1417
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT2,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1426
struct hisi_hba *hisi_hba = phy->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1427
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1433
irq_mask_old = hisi_sas_phy_read32(hisi_hba, phy_no, CHL_INT0_MSK);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1434
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT0_MSK, 0x3fffff);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1437
irq_value = hisi_sas_phy_read32(hisi_hba, phy_no, CHL_INT0);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1440
u32 phy_state = hisi_sas_read32(hisi_hba, PHY_STATE);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1442
hisi_sas_phy_down(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1467
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT0, irq_value);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1470
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT0_MSK,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1473
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT0_MSK,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1482
struct hisi_hba *hisi_hba = cq->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1487
hisi_hba->complete_hdr[queue];
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1490
spin_lock(&hisi_hba->lock);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1491
hisi_sas_write32(hisi_hba, OQ_INT_SRC, 1 << queue);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1492
wr_point = hisi_sas_read32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1504
slot = &hisi_hba->slot_info[idx];
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1512
slot_complete_v1_hw(hisi_hba, slot);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1520
hisi_sas_write32(hisi_hba, COMPL_Q_0_RD_PTR + (0x14 * queue), rd_point);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1521
spin_unlock(&hisi_hba->lock);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1528
struct hisi_hba *hisi_hba = p;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1529
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1530
u32 ecc_int = hisi_sas_read32(hisi_hba, SAS_ECC_INTR);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1533
u32 ecc_err = hisi_sas_read32(hisi_hba, HGC_ECC_ERR);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1540
u32 addr = (hisi_sas_read32(hisi_hba, HGC_DQ_ECC_ADDR) &
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1549
u32 ecc_err = hisi_sas_read32(hisi_hba, HGC_ECC_ERR);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1556
u32 addr = (hisi_sas_read32(hisi_hba, HGC_IOST_ECC_ADDR) &
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1565
u32 addr = (hisi_sas_read32(hisi_hba, HGC_ITCT_ECC_ADDR) &
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1574
u32 ecc_err = hisi_sas_read32(hisi_hba, HGC_ECC_ERR);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1580
hisi_sas_write32(hisi_hba, SAS_ECC_INTR, ecc_int | 0x3f);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1587
struct hisi_hba *hisi_hba = p;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1588
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1589
u32 axi_int = hisi_sas_read32(hisi_hba, ENT_INT_SRC2);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1590
u32 axi_info = hisi_sas_read32(hisi_hba, HGC_AXI_FIFO_ERR_INFO);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1608
hisi_sas_write32(hisi_hba, ENT_INT_SRC2, axi_int | 0x30000000);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1624
static int interrupt_init_v1_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1626
struct platform_device *pdev = hisi_hba->platform_dev;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1630
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1631
struct hisi_sas_phy *phy = &hisi_hba->phy[i];
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1649
idx = hisi_hba->n_phy * HISI_SAS_PHY_INT_NR;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1650
for (i = 0; i < hisi_hba->queue_count; i++, idx++) {
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1656
DRV_NAME " cq", &hisi_hba->cq[i]);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1664
idx = (hisi_hba->n_phy * HISI_SAS_PHY_INT_NR) + hisi_hba->queue_count;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1671
DRV_NAME " fatal", hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1679
hisi_hba->cq_nvecs = hisi_hba->queue_count;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1684
static int interrupt_openall_v1_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1689
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1691
val = hisi_sas_phy_read32(hisi_hba, i, CHL_INT0);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1692
hisi_sas_phy_write32(hisi_hba, i, CHL_INT0, val);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1693
val = hisi_sas_phy_read32(hisi_hba, i, CHL_INT1);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1694
hisi_sas_phy_write32(hisi_hba, i, CHL_INT1, val);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1695
val = hisi_sas_phy_read32(hisi_hba, i, CHL_INT2);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1696
hisi_sas_phy_write32(hisi_hba, i, CHL_INT2, val);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1699
hisi_sas_phy_write32(hisi_hba, i, CHL_INT0_MSK, 0x3ce3ee);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1700
hisi_sas_phy_write32(hisi_hba, i, CHL_INT1_MSK, 0x17fff);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1701
hisi_sas_phy_write32(hisi_hba, i, CHL_INT2_MSK, 0x8000012a);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1704
hisi_sas_phy_write32(hisi_hba, i, CHL_INT0_MSK,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1711
static int hisi_sas_v1_init(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1715
rc = hw_init_v1_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1719
rc = interrupt_init_v1_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1723
rc = interrupt_openall_v1_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1737
static int check_fw_info_v1_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1739
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1741
if (hisi_hba->n_phy < 0 || hisi_hba->n_phy > 9) {
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
1746
if (hisi_hba->queue_count < 0 || hisi_hba->queue_count > 32) {
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
412
static u32 hisi_sas_read32(struct hisi_hba *hisi_hba, u32 off)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
414
void __iomem *regs = hisi_hba->regs + off;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
419
static void hisi_sas_write32(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
422
void __iomem *regs = hisi_hba->regs + off;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
427
static void hisi_sas_phy_write32(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
430
void __iomem *regs = hisi_hba->regs + (0x400 * phy_no) + off;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
435
static u32 hisi_sas_phy_read32(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
438
void __iomem *regs = hisi_hba->regs + (0x400 * phy_no) + off;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
443
static void config_phy_opt_mode_v1_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
445
u32 cfg = hisi_sas_phy_read32(hisi_hba, phy_no, PHY_CFG);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
449
hisi_sas_phy_write32(hisi_hba, phy_no, PHY_CFG, cfg);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
452
static void config_tx_tfe_autoneg_v1_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
454
u32 cfg = hisi_sas_phy_read32(hisi_hba, phy_no, PHY_CONFIG2);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
457
hisi_sas_phy_write32(hisi_hba, phy_no, PHY_CONFIG2, cfg);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
460
static void config_id_frame_v1_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
471
memcpy(&identify_frame._un4_11[0], hisi_hba->sas_addr, SAS_ADDR_SIZE);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
472
memcpy(&identify_frame.sas_addr[0], hisi_hba->sas_addr, SAS_ADDR_SIZE);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
476
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD0,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
478
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD1,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
480
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD2,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
482
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD3,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
484
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD4,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
486
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD5,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
490
static void setup_itct_v1_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
494
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
496
struct hisi_sas_itct *itct = &hisi_hba->itct[device_id];
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
534
static int clear_itct_v1_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
538
struct hisi_sas_itct *itct = &hisi_hba->itct[dev_id];
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
540
u32 reg_val = hisi_sas_read32(hisi_hba, CFG_AGING_TIME);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
543
hisi_sas_write32(hisi_hba, CFG_AGING_TIME, reg_val);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
547
reg_val = hisi_sas_read32(hisi_hba, CFG_AGING_TIME);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
549
hisi_sas_write32(hisi_hba, CFG_AGING_TIME, reg_val);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
558
static int reset_hw_v1_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
563
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
565
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
566
u32 phy_ctrl = hisi_sas_phy_read32(hisi_hba, i, PHY_CTRL);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
569
hisi_sas_phy_write32(hisi_hba, i, PHY_CTRL, phy_ctrl);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
574
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
580
dma_tx_status = hisi_sas_phy_read32(hisi_hba, i,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
582
dma_rx_status = hisi_sas_phy_read32(hisi_hba, i,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
599
hisi_sas_read32(hisi_hba, AXI_CFG);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
617
} else if (hisi_hba->ctrl) {
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
620
regmap_write(hisi_hba->ctrl, hisi_hba->ctrl_reset_reg,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
622
regmap_write(hisi_hba->ctrl, hisi_hba->ctrl_clock_ena_reg + 4,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
625
regmap_read(hisi_hba->ctrl, hisi_hba->ctrl_reset_sts_reg, &val);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
633
regmap_write(hisi_hba->ctrl, hisi_hba->ctrl_reset_reg + 4,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
635
regmap_write(hisi_hba->ctrl, hisi_hba->ctrl_clock_ena_reg,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
638
regmap_read(hisi_hba->ctrl, hisi_hba->ctrl_reset_sts_reg, &val);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
651
static void init_reg_v1_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
656
hisi_sas_write32(hisi_hba, DLVRY_QUEUE_ENABLE,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
657
(u32)((1ULL << hisi_hba->queue_count) - 1));
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
658
hisi_sas_write32(hisi_hba, HGC_TRANS_TASK_CNT_LIMIT, 0x11);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
659
hisi_sas_write32(hisi_hba, DEVICE_MSG_WORK_MODE, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
660
hisi_sas_write32(hisi_hba, HGC_SAS_TXFAIL_RETRY_CTRL, 0x1ff);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
661
hisi_sas_write32(hisi_hba, HGC_ERR_STAT_EN, 0x401);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
662
hisi_sas_write32(hisi_hba, CFG_1US_TIMER_TRSH, 0x64);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
663
hisi_sas_write32(hisi_hba, HGC_GET_ITV_TIME, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
664
hisi_sas_write32(hisi_hba, I_T_NEXUS_LOSS_TIME, 0x64);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
665
hisi_sas_write32(hisi_hba, BUS_INACTIVE_LIMIT_TIME, 0x2710);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
666
hisi_sas_write32(hisi_hba, REJECT_TO_OPEN_LIMIT_TIME, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
667
hisi_sas_write32(hisi_hba, CFG_AGING_TIME, 0x7a12);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
668
hisi_sas_write32(hisi_hba, HGC_DFX_CFG2, 0x9c40);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
669
hisi_sas_write32(hisi_hba, FIS_LIST_BADDR_L, 0x2);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
670
hisi_sas_write32(hisi_hba, INT_COAL_EN, 0xc);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
671
hisi_sas_write32(hisi_hba, OQ_INT_COAL_TIME, 0x186a0);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
672
hisi_sas_write32(hisi_hba, OQ_INT_COAL_CNT, 1);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
673
hisi_sas_write32(hisi_hba, ENT_INT_COAL_TIME, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
674
hisi_sas_write32(hisi_hba, ENT_INT_COAL_CNT, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
675
hisi_sas_write32(hisi_hba, OQ_INT_SRC, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
676
hisi_sas_write32(hisi_hba, OQ_INT_SRC_MSK, 0);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
677
hisi_sas_write32(hisi_hba, ENT_INT_SRC1, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
678
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK1, 0);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
679
hisi_sas_write32(hisi_hba, ENT_INT_SRC2, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
680
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK2, 0);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
681
hisi_sas_write32(hisi_hba, SAS_ECC_INTR_MSK, 0);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
682
hisi_sas_write32(hisi_hba, AXI_AHB_CLK_CFG, 0x2);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
683
hisi_sas_write32(hisi_hba, CFG_SAS_CONFIG, 0x22000000);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
685
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
686
hisi_sas_phy_write32(hisi_hba, i, PROG_PHY_LINK_RATE, 0x88a);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
687
hisi_sas_phy_write32(hisi_hba, i, PHY_CONFIG2, 0x7c080);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
688
hisi_sas_phy_write32(hisi_hba, i, PHY_RATE_NEGO, 0x415ee00);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
689
hisi_sas_phy_write32(hisi_hba, i, PHY_PCN, 0x80a80000);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
690
hisi_sas_phy_write32(hisi_hba, i, SL_TOUT_CFG, 0x7d7d7d7d);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
691
hisi_sas_phy_write32(hisi_hba, i, DONE_RECEIVED_TIME, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
692
hisi_sas_phy_write32(hisi_hba, i, RXOP_CHECK_CFG_H, 0x1000);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
693
hisi_sas_phy_write32(hisi_hba, i, DONE_RECEIVED_TIME, 0);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
694
hisi_sas_phy_write32(hisi_hba, i, CON_CFG_DRIVER, 0x13f0a);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
695
hisi_sas_phy_write32(hisi_hba, i, CHL_INT_COAL_EN, 3);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
696
hisi_sas_phy_write32(hisi_hba, i, DONE_RECEIVED_TIME, 8);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
699
for (i = 0; i < hisi_hba->queue_count; i++) {
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
701
hisi_sas_write32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
703
upper_32_bits(hisi_hba->cmd_hdr_dma[i]));
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
705
hisi_sas_write32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
707
lower_32_bits(hisi_hba->cmd_hdr_dma[i]));
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
709
hisi_sas_write32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
714
hisi_sas_write32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
716
upper_32_bits(hisi_hba->complete_hdr_dma[i]));
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
718
hisi_sas_write32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
720
lower_32_bits(hisi_hba->complete_hdr_dma[i]));
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
722
hisi_sas_write32(hisi_hba, COMPL_Q_0_DEPTH + (i * 0x14),
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
727
hisi_sas_write32(hisi_hba, ITCT_BASE_ADDR_LO,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
728
lower_32_bits(hisi_hba->itct_dma));
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
730
hisi_sas_write32(hisi_hba, ITCT_BASE_ADDR_HI,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
731
upper_32_bits(hisi_hba->itct_dma));
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
734
hisi_sas_write32(hisi_hba, IOST_BASE_ADDR_LO,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
735
lower_32_bits(hisi_hba->iost_dma));
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
737
hisi_sas_write32(hisi_hba, IOST_BASE_ADDR_HI,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
738
upper_32_bits(hisi_hba->iost_dma));
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
741
hisi_sas_write32(hisi_hba, BROKEN_MSG_ADDR_LO,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
742
lower_32_bits(hisi_hba->breakpoint_dma));
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
744
hisi_sas_write32(hisi_hba, BROKEN_MSG_ADDR_HI,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
745
upper_32_bits(hisi_hba->breakpoint_dma));
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
748
static int hw_init_v1_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
750
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
753
rc = reset_hw_v1_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
760
init_reg_v1_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
765
static void enable_phy_v1_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
767
u32 cfg = hisi_sas_phy_read32(hisi_hba, phy_no, PHY_CFG);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
770
hisi_sas_phy_write32(hisi_hba, phy_no, PHY_CFG, cfg);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
773
static void disable_phy_v1_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
775
u32 cfg = hisi_sas_phy_read32(hisi_hba, phy_no, PHY_CFG);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
778
hisi_sas_phy_write32(hisi_hba, phy_no, PHY_CFG, cfg);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
781
static void start_phy_v1_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
783
config_id_frame_v1_hw(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
784
config_phy_opt_mode_v1_hw(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
785
config_tx_tfe_autoneg_v1_hw(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
786
enable_phy_v1_hw(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
789
static void phy_hard_reset_v1_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
791
hisi_sas_phy_enable(hisi_hba, phy_no, 0);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
793
hisi_sas_phy_enable(hisi_hba, phy_no, 1);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
798
struct hisi_hba *hisi_hba = timer_container_of(hisi_hba, t, timer);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
801
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
802
hisi_sas_phy_write32(hisi_hba, i, CHL_INT2_MSK, 0x12a);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
803
hisi_sas_phy_enable(hisi_hba, i, 1);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
807
static void phys_init_v1_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
810
struct timer_list *timer = &hisi_hba->timer;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
812
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
813
hisi_sas_phy_write32(hisi_hba, i, CHL_INT2_MSK, 0x6a);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
814
hisi_sas_phy_read32(hisi_hba, i, CHL_INT2_MSK);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
821
static void sl_notify_ssp_v1_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
825
sl_control = hisi_sas_phy_read32(hisi_hba, phy_no, SL_CONTROL);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
827
hisi_sas_phy_write32(hisi_hba, phy_no, SL_CONTROL, sl_control);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
829
sl_control = hisi_sas_phy_read32(hisi_hba, phy_no, SL_CONTROL);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
831
hisi_sas_phy_write32(hisi_hba, phy_no, SL_CONTROL, sl_control);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
839
static void phy_set_linkrate_v1_hw(struct hisi_hba *hisi_hba, int phy_no,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
846
hisi_sas_phy_write32(hisi_hba, phy_no, PROG_PHY_LINK_RATE,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
850
static int get_wideport_bitmap_v1_hw(struct hisi_hba *hisi_hba, int port_id)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
853
u32 phy_port_num_ma = hisi_sas_read32(hisi_hba, PHY_PORT_NUM_MA);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
855
for (i = 0; i < hisi_hba->n_phy; i++)
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
865
struct hisi_hba *hisi_hba = dq->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
886
hisi_sas_write32(hisi_hba, DLVRY_Q_0_WR_PTR + (dlvry_queue * 0x14), wp);
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
889
static void prep_prd_sge_v1_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
913
static void prep_smp_v1_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
951
static void prep_ssp_v1_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1008
struct hisi_hba *hisi_hba = sas_dev->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1012
clear_bit(sas_dev->sata_idx, hisi_hba->sata_dev_bitmap);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1015
static int reset_hw_v2_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1020
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1023
if (hisi_hba->n_phy == 9)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1028
hisi_sas_write32(hisi_hba, DLVRY_QUEUE_ENABLE, 0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1031
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1032
u32 phy_cfg = hisi_sas_phy_read32(hisi_hba, i, PHY_CFG);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1035
hisi_sas_phy_write32(hisi_hba, i, PHY_CFG, phy_cfg);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1040
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1046
dma_tx_status = hisi_sas_phy_read32(hisi_hba, i,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1048
dma_rx_status = hisi_sas_phy_read32(hisi_hba, i,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1065
hisi_sas_read32(hisi_hba, AXI_CFG);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1083
} else if (hisi_hba->ctrl) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1085
regmap_write(hisi_hba->ctrl, hisi_hba->ctrl_reset_reg,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1087
regmap_write(hisi_hba->ctrl, hisi_hba->ctrl_clock_ena_reg + 4,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1090
regmap_read(hisi_hba->ctrl, hisi_hba->ctrl_reset_sts_reg, &val);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1097
regmap_write(hisi_hba->ctrl, hisi_hba->ctrl_reset_reg + 4,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1099
regmap_write(hisi_hba->ctrl, hisi_hba->ctrl_clock_ena_reg,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1102
regmap_read(hisi_hba->ctrl, hisi_hba->ctrl_reset_sts_reg,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1117
static void phys_reject_stp_links_v2_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1122
hisi_hba->reject_stp_links_msk = (1 << hisi_hba->n_phy) - 1;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1123
for (phy_no = 0; phy_no < hisi_hba->n_phy; phy_no++) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1124
cfg = hisi_sas_phy_read32(hisi_hba, phy_no, CON_CONTROL);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1129
hisi_sas_phy_write32(hisi_hba, phy_no, CON_CONTROL, cfg);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1133
static void phys_try_accept_stp_links_v2_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1138
for (phy_no = 0; phy_no < hisi_hba->n_phy; phy_no++) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1139
if (!(hisi_hba->reject_stp_links_msk & BIT(phy_no)))
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1142
dma_tx_dfx1 = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1145
u32 cfg = hisi_sas_phy_read32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1149
hisi_sas_phy_write32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1151
clear_bit(phy_no, &hisi_hba->reject_stp_links_msk);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1161
static void init_reg_v2_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1163
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1172
hisi_sas_write32(hisi_hba, AM_CFG_MAX_TRANS, 0x2020);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1173
hisi_sas_write32(hisi_hba, AM_CFG_SINGLE_PORT_MAX_TRANS,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1177
hisi_sas_write32(hisi_hba, DLVRY_QUEUE_ENABLE,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1178
(u32)((1ULL << hisi_hba->queue_count) - 1));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1179
hisi_sas_write32(hisi_hba, AXI_USER1, 0xc0000000);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1180
hisi_sas_write32(hisi_hba, AXI_USER2, 0x10000);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1181
hisi_sas_write32(hisi_hba, HGC_SAS_TXFAIL_RETRY_CTRL, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1182
hisi_sas_write32(hisi_hba, HGC_SAS_TX_OPEN_FAIL_RETRY_CTRL, 0x7FF);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1183
hisi_sas_write32(hisi_hba, OPENA_WT_CONTI_TIME, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1184
hisi_sas_write32(hisi_hba, I_T_NEXUS_LOSS_TIME, 0x1F4);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1185
hisi_sas_write32(hisi_hba, MAX_CON_TIME_LIMIT_TIME, 0x32);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1186
hisi_sas_write32(hisi_hba, BUS_INACTIVE_LIMIT_TIME, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1187
hisi_sas_write32(hisi_hba, CFG_AGING_TIME, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1188
hisi_sas_write32(hisi_hba, HGC_ERR_STAT_EN, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1189
hisi_sas_write32(hisi_hba, HGC_GET_ITV_TIME, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1190
hisi_sas_write32(hisi_hba, INT_COAL_EN, 0xc);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1191
hisi_sas_write32(hisi_hba, OQ_INT_COAL_TIME, 0x60);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1192
hisi_sas_write32(hisi_hba, OQ_INT_COAL_CNT, 0x3);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1193
hisi_sas_write32(hisi_hba, ENT_INT_COAL_TIME, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1194
hisi_sas_write32(hisi_hba, ENT_INT_COAL_CNT, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1195
hisi_sas_write32(hisi_hba, OQ_INT_SRC, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1196
hisi_sas_write32(hisi_hba, ENT_INT_SRC1, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1197
hisi_sas_write32(hisi_hba, ENT_INT_SRC2, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1198
hisi_sas_write32(hisi_hba, ENT_INT_SRC3, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1199
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK1, 0x7efefefe);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1200
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK2, 0x7efefefe);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1201
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK3, 0x7ffe20fe);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1202
hisi_sas_write32(hisi_hba, SAS_ECC_INTR_MSK, 0xfff00c30);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1203
for (i = 0; i < hisi_hba->queue_count; i++)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1204
hisi_sas_write32(hisi_hba, OQ0_INT_SRC_MSK + 0x4 * i, 0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1206
hisi_sas_write32(hisi_hba, AXI_AHB_CLK_CFG, 1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1207
hisi_sas_write32(hisi_hba, HYPER_STREAM_ID_EN_CFG, 1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1228
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1229
struct hisi_sas_phy *phy = &hisi_hba->phy[i];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1243
hisi_sas_phy_write32(hisi_hba, i, PROG_PHY_LINK_RATE,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1245
hisi_sas_phy_write32(hisi_hba, i, SAS_PHY_CTRL, sas_phy_ctrl);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1246
hisi_sas_phy_write32(hisi_hba, i, SL_TOUT_CFG, 0x7d7d7d7d);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1247
hisi_sas_phy_write32(hisi_hba, i, SL_CONTROL, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1248
hisi_sas_phy_write32(hisi_hba, i, TXID_AUTO, 0x2);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1249
hisi_sas_phy_write32(hisi_hba, i, DONE_RECEIVED_TIME, 0x8);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1250
hisi_sas_phy_write32(hisi_hba, i, CHL_INT0, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1251
hisi_sas_phy_write32(hisi_hba, i, CHL_INT1, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1252
hisi_sas_phy_write32(hisi_hba, i, CHL_INT2, 0xfff87fff);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1253
hisi_sas_phy_write32(hisi_hba, i, RXOP_CHECK_CFG_H, 0x1000);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1254
hisi_sas_phy_write32(hisi_hba, i, CHL_INT1_MSK, 0xff857fff);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1255
hisi_sas_phy_write32(hisi_hba, i, CHL_INT2_MSK, 0x8ffffbfe);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1256
hisi_sas_phy_write32(hisi_hba, i, SL_CFG, 0x13f801fc);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1257
hisi_sas_phy_write32(hisi_hba, i, PHY_CTRL_RDY_MSK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1258
hisi_sas_phy_write32(hisi_hba, i, PHYCTRL_NOT_RDY_MSK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1259
hisi_sas_phy_write32(hisi_hba, i, PHYCTRL_DWS_RESET_MSK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1260
hisi_sas_phy_write32(hisi_hba, i, PHYCTRL_PHY_ENA_MSK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1261
hisi_sas_phy_write32(hisi_hba, i, SL_RX_BCAST_CHK_MSK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1262
hisi_sas_phy_write32(hisi_hba, i, CHL_INT_COAL_EN, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1263
hisi_sas_phy_write32(hisi_hba, i, PHYCTRL_OOB_RESTART_MSK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1264
if (hisi_hba->refclk_frequency_mhz == 66)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1265
hisi_sas_phy_write32(hisi_hba, i, PHY_CTRL, 0x199B694);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1269
for (i = 0; i < hisi_hba->queue_count; i++) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1271
hisi_sas_write32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1273
upper_32_bits(hisi_hba->cmd_hdr_dma[i]));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1275
hisi_sas_write32(hisi_hba, DLVRY_Q_0_BASE_ADDR_LO + (i * 0x14),
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1276
lower_32_bits(hisi_hba->cmd_hdr_dma[i]));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1278
hisi_sas_write32(hisi_hba, DLVRY_Q_0_DEPTH + (i * 0x14),
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1282
hisi_sas_write32(hisi_hba, COMPL_Q_0_BASE_ADDR_HI + (i * 0x14),
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1283
upper_32_bits(hisi_hba->complete_hdr_dma[i]));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1285
hisi_sas_write32(hisi_hba, COMPL_Q_0_BASE_ADDR_LO + (i * 0x14),
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1286
lower_32_bits(hisi_hba->complete_hdr_dma[i]));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1288
hisi_sas_write32(hisi_hba, COMPL_Q_0_DEPTH + (i * 0x14),
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1293
hisi_sas_write32(hisi_hba, ITCT_BASE_ADDR_LO,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1294
lower_32_bits(hisi_hba->itct_dma));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1296
hisi_sas_write32(hisi_hba, ITCT_BASE_ADDR_HI,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1297
upper_32_bits(hisi_hba->itct_dma));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1300
hisi_sas_write32(hisi_hba, IOST_BASE_ADDR_LO,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1301
lower_32_bits(hisi_hba->iost_dma));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1303
hisi_sas_write32(hisi_hba, IOST_BASE_ADDR_HI,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1304
upper_32_bits(hisi_hba->iost_dma));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1307
hisi_sas_write32(hisi_hba, IO_BROKEN_MSG_ADDR_LO,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1308
lower_32_bits(hisi_hba->breakpoint_dma));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1310
hisi_sas_write32(hisi_hba, IO_BROKEN_MSG_ADDR_HI,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1311
upper_32_bits(hisi_hba->breakpoint_dma));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1314
hisi_sas_write32(hisi_hba, IO_SATA_BROKEN_MSG_ADDR_LO,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1315
lower_32_bits(hisi_hba->sata_breakpoint_dma));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1317
hisi_sas_write32(hisi_hba, IO_SATA_BROKEN_MSG_ADDR_HI,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1318
upper_32_bits(hisi_hba->sata_breakpoint_dma));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1321
hisi_sas_write32(hisi_hba, SATA_INITI_D2H_STORE_ADDR_LO,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1322
lower_32_bits(hisi_hba->initial_fis_dma));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1324
hisi_sas_write32(hisi_hba, SATA_INITI_D2H_STORE_ADDR_HI,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1325
upper_32_bits(hisi_hba->initial_fis_dma));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1330
struct hisi_hba *hisi_hba = timer_container_of(hisi_hba, t, timer);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1333
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1334
if (hisi_hba->reject_stp_links_msk & BIT(i))
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1337
reg_val = hisi_sas_phy_read32(hisi_hba, i, CON_CONTROL);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1339
hisi_sas_phy_write32(hisi_hba, i,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1345
hisi_hba->timer.function = link_timeout_disable_link;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1346
mod_timer(&hisi_hba->timer, jiffies + msecs_to_jiffies(900));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1351
struct hisi_hba *hisi_hba = timer_container_of(hisi_hba, t, timer);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1354
reg_val = hisi_sas_read32(hisi_hba, PHY_STATE);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1355
for (i = 0; i < hisi_hba->n_phy && reg_val; i++) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1356
if (hisi_hba->reject_stp_links_msk & BIT(i))
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1360
hisi_sas_phy_write32(hisi_hba, i,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1366
hisi_hba->timer.function = link_timeout_enable_link;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1367
mod_timer(&hisi_hba->timer, jiffies + msecs_to_jiffies(100));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1370
static void set_link_timer_quirk(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1372
hisi_hba->timer.function = link_timeout_disable_link;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1373
hisi_hba->timer.expires = jiffies + msecs_to_jiffies(1000);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1374
add_timer(&hisi_hba->timer);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1377
static int hw_init_v2_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1379
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1382
rc = reset_hw_v2_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1389
init_reg_v2_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1394
static void enable_phy_v2_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1396
u32 cfg = hisi_sas_phy_read32(hisi_hba, phy_no, PHY_CFG);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1399
hisi_sas_phy_write32(hisi_hba, phy_no, PHY_CFG, cfg);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1402
static bool is_sata_phy_v2_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1406
context = hisi_sas_read32(hisi_hba, PHY_CONTEXT);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1413
static bool tx_fifo_is_empty_v2_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1417
dfx_val = hisi_sas_phy_read32(hisi_hba, phy_no, DMA_TX_DFX1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1425
static bool axi_bus_is_idle_v2_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1428
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1432
status = hisi_sas_read32_relaxed(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1435
axi_status = hisi_sas_read32(hisi_hba, AXI_CFG);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1436
dfx_val = hisi_sas_phy_read32(hisi_hba, phy_no, DMA_TX_DFX1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1437
dfx_tx_val = hisi_sas_phy_read32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1451
static bool wait_io_done_v2_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1454
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1458
status = hisi_sas_phy_read32(hisi_hba, phy_no, LINK_DFX2);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1464
tx_dfx0 = hisi_sas_phy_read32(hisi_hba, phy_no, DMA_TX_DFX0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1474
static bool allowed_disable_phy_v2_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1476
if (tx_fifo_is_empty_v2_hw(hisi_hba, phy_no))
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1479
if (!axi_bus_is_idle_v2_hw(hisi_hba, phy_no))
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1482
if (!wait_io_done_v2_hw(hisi_hba, phy_no))
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1489
static void disable_phy_v2_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1492
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1495
axi_val = hisi_sas_read32(hisi_hba, AXI_MASTER_CFG_BASE +
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1498
hisi_sas_write32(hisi_hba, AXI_MASTER_CFG_BASE +
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1501
if (is_sata_phy_v2_hw(hisi_hba, phy_no)) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1502
if (allowed_disable_phy_v2_hw(hisi_hba, phy_no))
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1506
queue_work(hisi_hba->wq, &hisi_hba->rst_work);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1510
dfx0_val = hisi_sas_phy_read32(hisi_hba, phy_no, PORT_DFX0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1515
if (!tx_fifo_is_empty_v2_hw(hisi_hba, phy_no)) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1518
txid_auto = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1521
hisi_sas_phy_write32(hisi_hba, phy_no, TXID_AUTO,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1526
cfg = hisi_sas_phy_read32(hisi_hba, phy_no, PHY_CFG);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1528
hisi_sas_phy_write32(hisi_hba, phy_no, PHY_CFG, cfg);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1532
hisi_sas_write32(hisi_hba, AXI_MASTER_CFG_BASE +
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1536
static void start_phy_v2_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1538
config_id_frame_v2_hw(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1539
config_phy_opt_mode_v2_hw(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1540
enable_phy_v2_hw(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1543
static void phy_hard_reset_v2_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1545
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1548
hisi_sas_phy_enable(hisi_hba, phy_no, 0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1550
txid_auto = hisi_sas_phy_read32(hisi_hba, phy_no, TXID_AUTO);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1551
hisi_sas_phy_write32(hisi_hba, phy_no, TXID_AUTO,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1555
hisi_sas_phy_enable(hisi_hba, phy_no, 1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1558
static void phy_get_events_v2_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1560
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1566
err4_reg_val = hisi_sas_phy_read32(hisi_hba, phy_no, SAS_ERR_CNT4_REG);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1569
err6_reg_val = hisi_sas_phy_read32(hisi_hba, phy_no, SAS_ERR_CNT6_REG);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1577
static void phys_init_v2_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1581
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1582
struct hisi_sas_phy *phy = &hisi_hba->phy[i];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1588
hisi_sas_phy_enable(hisi_hba, i, 1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1592
static void sl_notify_ssp_v2_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1596
sl_control = hisi_sas_phy_read32(hisi_hba, phy_no, SL_CONTROL);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1598
hisi_sas_phy_write32(hisi_hba, phy_no, SL_CONTROL, sl_control);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1600
sl_control = hisi_sas_phy_read32(hisi_hba, phy_no, SL_CONTROL);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1602
hisi_sas_phy_write32(hisi_hba, phy_no, SL_CONTROL, sl_control);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1610
static void phy_set_linkrate_v2_hw(struct hisi_hba *hisi_hba, int phy_no,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1617
hisi_sas_phy_write32(hisi_hba, phy_no, PROG_PHY_LINK_RATE,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1621
static int get_wideport_bitmap_v2_hw(struct hisi_hba *hisi_hba, int port_id)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1624
u32 phy_port_num_ma = hisi_sas_read32(hisi_hba, PHY_PORT_NUM_MA);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1625
u32 phy_state = hisi_sas_read32(hisi_hba, PHY_STATE);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1627
for (i = 0; i < (hisi_hba->n_phy < 9 ? hisi_hba->n_phy : 8); i++)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1632
if (hisi_hba->n_phy == 9) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1633
u32 port_state = hisi_sas_read32(hisi_hba, PORT_STATE);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1647
struct hisi_hba *hisi_hba = dq->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1668
hisi_sas_write32(hisi_hba, DLVRY_Q_0_WR_PTR + (dlvry_queue * 0x14), wp);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1671
static void prep_prd_sge_v2_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1695
static void prep_smp_v2_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1734
static void prep_ssp_v2_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
1788
prep_prd_sge_v2_hw(hisi_hba, slot, hdr, task->scatter,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2014
static void slot_err_v2_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2028
hisi_hba->complete_hdr[slot->cmplt_queue];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2325
static void slot_complete_v2_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2330
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2335
hisi_hba->complete_hdr[slot->cmplt_queue];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2398
slot_err_v2_hw(hisi_hba, task, slot, 1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2400
slot_err_v2_hw(hisi_hba, task, slot, 2);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2474
hisi_sas_slot_task_free(hisi_hba, task, slot, true);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2491
static void prep_ata_v2_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2565
prep_prd_sge_v2_hw(hisi_hba, slot, hdr, task->scatter,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2596
struct hisi_hba *hisi_hba = phy->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2600
link_dfx2 = hisi_sas_phy_read32(hisi_hba, phy_no, LINK_DFX2);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2605
txid_auto = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2608
hisi_sas_phy_write32(hisi_hba, phy_no, TXID_AUTO,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2615
static void prep_abort_v2_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2646
static int phy_up_v2_hw(int phy_no, struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2650
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2652
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2656
hisi_sas_phy_write32(hisi_hba, phy_no, PHYCTRL_PHY_ENA_MSK, 1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2658
if (is_sata_phy_v2_hw(hisi_hba, phy_no))
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2664
u32 port_state = hisi_sas_read32(hisi_hba, PORT_STATE);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2671
port_id = hisi_sas_read32(hisi_hba, PHY_PORT_NUM_MA);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2673
link_rate = hisi_sas_read32(hisi_hba, PHY_CONN_RATE);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2684
u32 idaf = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2705
if (!timer_pending(&hisi_hba->timer))
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2706
set_link_timer_quirk(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2712
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT0,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2714
hisi_sas_phy_write32(hisi_hba, phy_no, PHYCTRL_PHY_ENA_MSK, 0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2719
static bool check_any_wideports_v2_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2723
port_state = hisi_sas_read32(hisi_hba, PORT_STATE);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2730
static int phy_down_v2_hw(int phy_no, struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2733
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2735
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2738
hisi_sas_phy_write32(hisi_hba, phy_no, PHYCTRL_NOT_RDY_MSK, 1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2740
phy_state = hisi_sas_read32(hisi_hba, PHY_STATE);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2742
hisi_sas_phy_down(hisi_hba, phy_no, (phy_state & 1 << phy_no) ? 1 : 0,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2745
sl_ctrl = hisi_sas_phy_read32(hisi_hba, phy_no, SL_CONTROL);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2746
hisi_sas_phy_write32(hisi_hba, phy_no, SL_CONTROL,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2748
if (port && !get_wideport_bitmap_v2_hw(hisi_hba, port->id))
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2749
if (!check_any_wideports_v2_hw(hisi_hba) &&
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2750
timer_pending(&hisi_hba->timer))
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2751
timer_delete(&hisi_hba->timer);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2753
txid_auto = hisi_sas_phy_read32(hisi_hba, phy_no, TXID_AUTO);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2754
hisi_sas_phy_write32(hisi_hba, phy_no, TXID_AUTO,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2757
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT0, CHL_INT0_NOT_RDY_MSK);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2758
hisi_sas_phy_write32(hisi_hba, phy_no, PHYCTRL_NOT_RDY_MSK, 0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2765
struct hisi_hba *hisi_hba = p;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2770
irq_msk = (hisi_sas_read32(hisi_hba, HGC_INVLD_DQE_INFO)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2774
u32 reg_value = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2782
if (phy_up_v2_hw(phy_no, hisi_hba) ==
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2789
if (phy_down_v2_hw(phy_no, hisi_hba) ==
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2796
reg_value = hisi_sas_read32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2800
if (phy_up_v2_hw(phy_no, hisi_hba) ==
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2805
if (phy_down_v2_hw(phy_no, hisi_hba) ==
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2823
static void phy_bcast_v2_hw(int phy_no, struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2825
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2828
hisi_sas_phy_write32(hisi_hba, phy_no, SL_RX_BCAST_CHK_MSK, 1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2829
bcast_status = hisi_sas_phy_read32(hisi_hba, phy_no, RX_PRIMS_STATUS);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2832
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT0,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2834
hisi_sas_phy_write32(hisi_hba, phy_no, SL_RX_BCAST_CHK_MSK, 0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2866
struct hisi_hba *hisi_hba = p;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2867
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2871
ent_msk = hisi_sas_read32(hisi_hba, ENT_INT_SRC_MSK3);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2874
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK3, ent_msk);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2876
irq_msk = (hisi_sas_read32(hisi_hba, HGC_INVLD_DQE_INFO) >>
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2880
u32 irq_value0 = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2882
u32 irq_value1 = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2884
u32 irq_value2 = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2899
queue_work(hisi_hba->wq, &hisi_hba->rst_work);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2902
hisi_sas_phy_write32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2907
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2916
hisi_sas_phy_write32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2922
phy_bcast_v2_hw(phy_no, hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2925
hisi_sas_phy_oob_ready(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2927
hisi_sas_phy_write32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2937
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK3, ent_tmp);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2943
one_bit_ecc_error_process_v2_hw(struct hisi_hba *hisi_hba, u32 irq_value)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2945
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2953
val = hisi_sas_read32(hisi_hba, ecc_error->reg);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2962
static void multi_bit_ecc_error_process_v2_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2965
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2973
val = hisi_sas_read32(hisi_hba, ecc_error->reg);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2978
queue_work(hisi_hba->wq, &hisi_hba->rst_work);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2987
struct hisi_hba *hisi_hba = p;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2990
irq_msk = hisi_sas_read32(hisi_hba, SAS_ECC_INTR_MSK);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2991
hisi_sas_write32(hisi_hba, SAS_ECC_INTR_MSK, irq_msk | 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2993
irq_value = hisi_sas_read32(hisi_hba, SAS_ECC_INTR);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2995
one_bit_ecc_error_process_v2_hw(hisi_hba, irq_value);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2996
multi_bit_ecc_error_process_v2_hw(hisi_hba, irq_value);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
2999
hisi_sas_write32(hisi_hba, SAS_ECC_INTR, irq_value);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3000
hisi_sas_write32(hisi_hba, SAS_ECC_INTR_MSK, irq_msk);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3061
struct hisi_hba *hisi_hba = p;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3063
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3067
irq_msk = hisi_sas_read32(hisi_hba, ENT_INT_SRC_MSK3);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3068
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK3, irq_msk | 0xfffffffe);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3070
irq_value = hisi_sas_read32(hisi_hba, ENT_INT_SRC3);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3077
hisi_sas_write32(hisi_hba, ENT_INT_SRC3,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3082
err_value = hisi_sas_read32(hisi_hba, axi_error->reg);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3088
queue_work(hisi_hba->wq, &hisi_hba->rst_work);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3093
queue_work(hisi_hba->wq, &hisi_hba->rst_work);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3098
u32 reg_val = hisi_sas_read32(hisi_hba, ITCT_CLR);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3100
struct hisi_sas_device *sas_dev = &hisi_hba->devices[dev_id];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3102
hisi_sas_write32(hisi_hba, ITCT_CLR, 0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3107
hisi_sas_write32(hisi_hba, ENT_INT_SRC3, irq_value);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3108
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK3, irq_msk);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3116
struct hisi_hba *hisi_hba = cq->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3123
if (unlikely(hisi_hba->reject_stp_links_msk))
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3124
phys_try_accept_stp_links_v2_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3126
complete_queue = hisi_hba->complete_hdr[queue];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3128
wr_point = hisi_sas_read32(hisi_hba, COMPL_Q_0_WR_PTR +
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3145
itct = &hisi_hba->itct[dev_id];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3158
slot = &hisi_hba->slot_info[iptt];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3161
slot_complete_v2_hw(hisi_hba, slot);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3170
slot = &hisi_hba->slot_info[iptt];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3173
slot_complete_v2_hw(hisi_hba, slot);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3182
hisi_sas_write32(hisi_hba, COMPL_Q_0_RD_PTR + (0x14 * queue), rd_point);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3190
struct hisi_hba *hisi_hba = cq->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3193
hisi_sas_write32(hisi_hba, OQ_INT_SRC, 1 << queue);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3201
struct hisi_hba *hisi_hba = phy->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3203
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3214
initial_fis = &hisi_hba->initial_fis[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3218
ent_msk = hisi_sas_read32(hisi_hba, ENT_INT_SRC_MSK1 + offset);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3219
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK1 + offset,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3222
ent_int = hisi_sas_read32(hisi_hba, ENT_INT_SRC1 + offset);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3242
u32 port_state = hisi_sas_read32(hisi_hba, PORT_STATE);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3249
port_id = hisi_sas_read32(hisi_hba, PHY_PORT_NUM_MA);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3251
link_rate = hisi_sas_read32(hisi_hba, PHY_CONN_RATE);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3262
hard_phy_linkrate = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3270
attached_sas_addr[6] = hisi_hba->shost->host_no;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3287
hisi_sas_write32(hisi_hba, ENT_INT_SRC1 + offset, ent_tmp);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3288
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK1 + offset, ent_msk);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3305
static int hisi_sas_v2_interrupt_preinit(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3307
struct platform_device *pdev = hisi_hba->platform_dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3308
struct Scsi_Host *shost = hisi_hba->shost;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3316
&hisi_hba->irq_map);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3320
shost->nr_hw_queues = hisi_hba->cq_nvecs = nvec - resv;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3329
static int interrupt_init_v2_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3331
struct platform_device *pdev = hisi_hba->platform_dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3337
irq = hisi_hba->irq_map[i + 1]; /* Phy up/down is irq1 */
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3339
DRV_NAME " phy", hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3348
for (phy_no = 0; phy_no < hisi_hba->n_phy; phy_no++) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3349
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3351
irq = hisi_hba->irq_map[phy_no + 72];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3363
irq = hisi_hba->irq_map[fatal_no + 81];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3365
DRV_NAME " fatal", hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3374
for (queue_no = 0; queue_no < hisi_hba->cq_nvecs; queue_no++) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3375
struct hisi_sas_cq *cq = &hisi_hba->cq[queue_no];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3377
cq->irq_no = hisi_hba->irq_map[queue_no + 96];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3394
static int hisi_sas_v2_init(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3398
memset(hisi_hba->sata_dev_bitmap, 0, sizeof(hisi_hba->sata_dev_bitmap));
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3400
rc = hw_init_v2_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3404
rc = interrupt_init_v2_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3411
static void interrupt_disable_v2_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3413
struct platform_device *pdev = hisi_hba->platform_dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3416
for (i = 0; i < hisi_hba->queue_count; i++)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3417
hisi_sas_write32(hisi_hba, OQ0_INT_SRC_MSK + 0x4 * i, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3419
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK1, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3420
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK2, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3421
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK3, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3422
hisi_sas_write32(hisi_hba, SAS_ECC_INTR_MSK, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3424
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3425
hisi_sas_phy_write32(hisi_hba, i, CHL_INT1_MSK, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3426
hisi_sas_phy_write32(hisi_hba, i, CHL_INT2_MSK, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3434
static u32 get_phys_state_v2_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3436
return hisi_sas_read32(hisi_hba, PHY_STATE);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3439
static int soft_reset_v2_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3441
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3444
interrupt_disable_v2_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3445
hisi_sas_write32(hisi_hba, DLVRY_QUEUE_ENABLE, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3447
hisi_sas_stop_phys(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3451
hisi_sas_write32(hisi_hba, AXI_MASTER_CFG_BASE + AM_CTRL_GLOBAL, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3456
u32 status = hisi_sas_read32_relaxed(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3469
hisi_sas_init_mem(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3471
rc = hw_init_v2_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3475
phys_reject_stp_links_v2_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3480
static int write_gpio_v2_hw(struct hisi_hba *hisi_hba, u8 reg_type,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3483
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3486
if (!hisi_hba->sgpio_regs)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3492
count = min(count, hisi_hba->n_phy);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3501
void __iomem *reg_addr = hisi_hba->sgpio_regs +
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3518
static void wait_cmds_complete_timeout_v2_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3521
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3525
entries = hisi_sas_read32(hisi_hba, CQE_SEND_CNT);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3556
struct hisi_hba *hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3562
mask = irq_get_affinity_mask(hisi_hba->irq_map[96 + queue]);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3571
static int check_fw_info_v2_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3573
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3575
if (hisi_hba->n_phy < 0 || hisi_hba->n_phy > 9) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
3580
if (hisi_hba->queue_count < 0 || hisi_hba->queue_count > 16) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
729
static u32 hisi_sas_read32(struct hisi_hba *hisi_hba, u32 off)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
731
void __iomem *regs = hisi_hba->regs + off;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
736
static u32 hisi_sas_read32_relaxed(struct hisi_hba *hisi_hba, u32 off)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
738
void __iomem *regs = hisi_hba->regs + off;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
743
static void hisi_sas_write32(struct hisi_hba *hisi_hba, u32 off, u32 val)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
745
void __iomem *regs = hisi_hba->regs + off;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
750
static void hisi_sas_phy_write32(struct hisi_hba *hisi_hba, int phy_no,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
753
void __iomem *regs = hisi_hba->regs + (0x400 * phy_no) + off;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
758
static u32 hisi_sas_phy_read32(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
761
void __iomem *regs = hisi_hba->regs + (0x400 * phy_no) + off;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
768
slot_index_alloc_quirk_v2_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
772
void *bitmap = hisi_hba->slot_index_tags;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
784
end = hisi_hba->slot_index_count;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
799
spin_lock(&hisi_hba->lock);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
802
hisi_hba->slot_index_count, start);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
804
spin_unlock(&hisi_hba->lock);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
816
spin_unlock(&hisi_hba->lock);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
820
static bool sata_index_alloc_v2_hw(struct hisi_hba *hisi_hba, int *idx)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
823
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
824
void *bitmap = hisi_hba->sata_dev_bitmap;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
841
struct hisi_hba *hisi_hba = device->port->ha->lldd_ha;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
846
spin_lock(&hisi_hba->lock);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
849
if (!sata_index_alloc_v2_hw(hisi_hba, &sata_idx))
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
858
if (hisi_hba->devices[i].dev_type == SAS_PHY_UNUSED) {
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
859
int queue = i % hisi_hba->queue_count;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
860
struct hisi_sas_dq *dq = &hisi_hba->dq[queue];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
862
hisi_hba->devices[i].device_id = i;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
863
sas_dev = &hisi_hba->devices[i];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
866
sas_dev->hisi_hba = hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
871
INIT_LIST_HEAD(&hisi_hba->devices[i].list);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
877
spin_unlock(&hisi_hba->lock);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
882
static void config_phy_opt_mode_v2_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
884
u32 cfg = hisi_sas_phy_read32(hisi_hba, phy_no, PHY_CFG);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
888
hisi_sas_phy_write32(hisi_hba, phy_no, PHY_CFG, cfg);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
891
static void config_id_frame_v2_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
902
memcpy(&identify_frame._un4_11[0], hisi_hba->sas_addr, SAS_ADDR_SIZE);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
903
memcpy(&identify_frame.sas_addr[0], hisi_hba->sas_addr, SAS_ADDR_SIZE);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
907
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD0,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
909
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD1,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
911
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD2,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
913
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD3,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
915
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD4,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
917
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD5,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
921
static void setup_itct_v2_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
925
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
927
struct hisi_sas_itct *itct = &hisi_hba->itct[device_id];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
974
static int clear_itct_v2_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
979
struct hisi_sas_itct *itct = &hisi_hba->itct[dev_id];
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
980
u32 reg_val = hisi_sas_read32(hisi_hba, ENT_INT_SRC3);
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
981
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
988
hisi_sas_write32(hisi_hba, ENT_INT_SRC3,
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
994
hisi_sas_write32(hisi_hba, ITCT_CLR, reg_val);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1012
static int hw_init_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1014
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1020
rc = reset_hw_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1027
init_reg_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1052
static void enable_phy_v3_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1054
u32 cfg = hisi_sas_phy_read32(hisi_hba, phy_no, PHY_CFG);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1058
hisi_sas_phy_write32(hisi_hba, phy_no, PHY_CFG, cfg);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1061
static void disable_phy_v3_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1063
u32 cfg = hisi_sas_phy_read32(hisi_hba, phy_no, PHY_CFG);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1064
u32 irq_msk = hisi_sas_phy_read32(hisi_hba, phy_no, CHL_INT2_MSK);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1070
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT2_MSK, msk | irq_msk);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1073
hisi_sas_phy_write32(hisi_hba, phy_no, PHY_CFG, cfg);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1077
state = hisi_sas_read32(hisi_hba, PHY_STATE);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1080
hisi_sas_phy_write32(hisi_hba, phy_no, PHY_CFG, cfg);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1085
hisi_sas_phy_read32(hisi_hba, phy_no, ERR_CNT_INVLD_DW);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1086
hisi_sas_phy_read32(hisi_hba, phy_no, ERR_CNT_DISP_ERR);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1087
hisi_sas_phy_read32(hisi_hba, phy_no, ERR_CNT_CODE_ERR);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1089
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT2, msk);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1090
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT2_MSK, irq_msk);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1093
static void start_phy_v3_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1095
config_id_frame_v3_hw(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1096
config_phy_opt_mode_v3_hw(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1097
enable_phy_v3_hw(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1100
static void phy_hard_reset_v3_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1102
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1105
hisi_sas_phy_enable(hisi_hba, phy_no, 0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1107
txid_auto = hisi_sas_phy_read32(hisi_hba, phy_no, TXID_AUTO);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1108
hisi_sas_phy_write32(hisi_hba, phy_no, TXID_AUTO,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1112
hisi_sas_phy_enable(hisi_hba, phy_no, 1);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1120
static void phys_init_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1124
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1125
struct hisi_sas_phy *phy = &hisi_hba->phy[i];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1131
hisi_sas_phy_enable(hisi_hba, i, 1);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1135
static void sl_notify_ssp_v3_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1139
sl_control = hisi_sas_phy_read32(hisi_hba, phy_no, SL_CONTROL);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1141
hisi_sas_phy_write32(hisi_hba, phy_no, SL_CONTROL, sl_control);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1143
sl_control = hisi_sas_phy_read32(hisi_hba, phy_no, SL_CONTROL);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1145
hisi_sas_phy_write32(hisi_hba, phy_no, SL_CONTROL, sl_control);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1148
static int get_wideport_bitmap_v3_hw(struct hisi_hba *hisi_hba, int port_id)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1151
u32 phy_port_num_ma = hisi_sas_read32(hisi_hba, PHY_PORT_NUM_MA);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1152
u32 phy_state = hisi_sas_read32(hisi_hba, PHY_STATE);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1154
for (i = 0; i < hisi_hba->n_phy; i++)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1165
struct hisi_hba *hisi_hba = dq->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1186
hisi_sas_write32(hisi_hba, DLVRY_Q_0_WR_PTR + (dlvry_queue * 0x14), wp);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1189
static void prep_prd_sge_v3_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1213
static void prep_prd_sge_dif_v3_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1308
static void prep_ssp_v3_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1362
prep_prd_sge_v3_hw(hisi_hba, slot, hdr, task->scatter,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1366
prep_prd_sge_dif_v3_hw(hisi_hba, slot, hdr,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1432
static void prep_smp_v3_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1473
static void prep_ata_v3_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1541
prep_prd_sge_v3_hw(hisi_hba, slot, hdr, task->scatter,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1556
static void prep_abort_v3_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1582
static irqreturn_t phy_up_v3_hw(int phy_no, struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1587
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1589
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1591
hisi_sas_phy_write32(hisi_hba, phy_no, PHYCTRL_PHY_ENA_MSK, 1);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1593
port_id = hisi_sas_read32(hisi_hba, PHY_PORT_NUM_MA);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1595
link_rate = hisi_sas_read32(hisi_hba, PHY_CONN_RATE);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1607
context = hisi_sas_read32(hisi_hba, PHY_CONTEXT);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1612
struct Scsi_Host *shost = hisi_hba->shost;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1615
initial_fis = &hisi_hba->initial_fis[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1647
u32 idaf = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1688
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT0,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1690
hisi_sas_phy_write32(hisi_hba, phy_no, PHYCTRL_PHY_ENA_MSK, 0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1695
static irqreturn_t phy_down_v3_hw(int phy_no, struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1697
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1699
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1704
hisi_sas_phy_write32(hisi_hba, phy_no, PHYCTRL_NOT_RDY_MSK, 1);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1706
phy_state = hisi_sas_read32(hisi_hba, PHY_STATE);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1708
hisi_sas_phy_down(hisi_hba, phy_no, (phy_state & 1 << phy_no) ? 1 : 0,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1711
sl_ctrl = hisi_sas_phy_read32(hisi_hba, phy_no, SL_CONTROL);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1712
hisi_sas_phy_write32(hisi_hba, phy_no, SL_CONTROL,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1715
txid_auto = hisi_sas_phy_read32(hisi_hba, phy_no, TXID_AUTO);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1716
hisi_sas_phy_write32(hisi_hba, phy_no, TXID_AUTO,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1719
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT0, CHL_INT0_NOT_RDY_MSK);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1720
hisi_sas_phy_write32(hisi_hba, phy_no, PHYCTRL_NOT_RDY_MSK, 0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1725
static irqreturn_t phy_bcast_v3_hw(int phy_no, struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1727
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1730
hisi_sas_phy_write32(hisi_hba, phy_no, SL_RX_BCAST_CHK_MSK, 1);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1731
bcast_status = hisi_sas_phy_read32(hisi_hba, phy_no, RX_PRIMS_STATUS);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1734
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT0,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1736
hisi_sas_phy_write32(hisi_hba, phy_no, SL_RX_BCAST_CHK_MSK, 0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1743
struct hisi_hba *hisi_hba = p;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1748
irq_msk = hisi_sas_read32(hisi_hba, CHNL_INT_STATUS)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1752
u32 irq_value = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1754
u32 phy_state = hisi_sas_read32(hisi_hba, PHY_STATE);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1760
if (phy_up_v3_hw(phy_no, hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1765
if (phy_bcast_v3_hw(phy_no, hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1771
if (phy_down_v3_hw(phy_no, hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1826
static void handle_chl_int1_v3_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1828
u32 irq_value = hisi_sas_phy_read32(hisi_hba, phy_no, CHL_INT1);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1829
u32 irq_msk = hisi_sas_phy_read32(hisi_hba, phy_no, CHL_INT1_MSK);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1830
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1848
queue_work(hisi_hba->wq, &hisi_hba->rst_work);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1851
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT1, irq_value);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1854
static void phy_get_events_v3_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1856
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1865
reg_value = hisi_sas_phy_read32(hisi_hba, phy_no, ERR_CNT_DWS_LOST);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1869
reg_value = hisi_sas_phy_read32(hisi_hba, phy_no, ERR_CNT_RESET_PROB);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1873
reg_value = hisi_sas_phy_read32(hisi_hba, phy_no, ERR_CNT_INVLD_DW);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1877
reg_value = hisi_sas_phy_read32(hisi_hba, phy_no, ERR_CNT_DISP_ERR);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1881
reg_value = hisi_sas_phy_read32(hisi_hba, phy_no, ERR_CNT_CODE_ERR);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1887
static void handle_chl_int2_v3_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1889
u32 irq_msk = hisi_sas_phy_read32(hisi_hba, phy_no, CHL_INT2_MSK);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1890
u32 irq_value = hisi_sas_phy_read32(hisi_hba, phy_no, CHL_INT2);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1891
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1892
struct pci_dev *pci_dev = hisi_hba->pci_dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1893
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1911
u32 reg_value = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1924
phy_get_events_v3_hw(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1952
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT2, irq_value);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1955
static void handle_chl_int0_v3_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1957
u32 irq_value0 = hisi_sas_phy_read32(hisi_hba, phy_no, CHL_INT0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1960
hisi_sas_phy_oob_ready(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1962
hisi_sas_phy_write32(hisi_hba, phy_no, CHL_INT0,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1970
struct hisi_hba *hisi_hba = p;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1974
irq_msk = hisi_sas_read32(hisi_hba, CHNL_INT_STATUS) & CHNL_INT_STS_MSK;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1978
handle_chl_int0_v3_hw(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1981
handle_chl_int1_v3_hw(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
1984
handle_chl_int2_v3_hw(hisi_hba, phy_no);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2073
static void multi_bit_ecc_error_process_v3_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2076
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2084
val = hisi_sas_read32(hisi_hba, ecc_error->reg);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2089
queue_work(hisi_hba->wq, &hisi_hba->rst_work);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2094
static void fatal_ecc_int_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2098
irq_msk = hisi_sas_read32(hisi_hba, SAS_ECC_INTR_MSK);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2099
hisi_sas_write32(hisi_hba, SAS_ECC_INTR_MSK, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2101
irq_value = hisi_sas_read32(hisi_hba, SAS_ECC_INTR);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2103
multi_bit_ecc_error_process_v3_hw(hisi_hba, irq_value);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2105
hisi_sas_write32(hisi_hba, SAS_ECC_INTR, irq_value);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2106
hisi_sas_write32(hisi_hba, SAS_ECC_INTR_MSK, irq_msk);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2183
struct hisi_hba *hisi_hba = p;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2184
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2185
struct pci_dev *pdev = hisi_hba->pci_dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2188
irq_msk = hisi_sas_read32(hisi_hba, ENT_INT_SRC_MSK3);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2189
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK3, irq_msk | 0x1df00);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2191
irq_value = hisi_sas_read32(hisi_hba, ENT_INT_SRC3);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2202
u32 err_value = hisi_sas_read32(hisi_hba, error->reg);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2210
queue_work(hisi_hba->wq, &hisi_hba->rst_work);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2215
queue_work(hisi_hba->wq, &hisi_hba->rst_work);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2221
reg_val = hisi_sas_read32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2225
hisi_sas_write32(hisi_hba, AXI_MASTER_CFG_BASE +
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2230
fatal_ecc_int_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2233
u32 reg_val = hisi_sas_read32(hisi_hba, ITCT_CLR);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2236
&hisi_hba->devices[dev_id];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2238
hisi_sas_write32(hisi_hba, ITCT_CLR, 0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2243
hisi_sas_write32(hisi_hba, ENT_INT_SRC3, irq_value & 0x1df00);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2244
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK3, irq_msk);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2262
slot_err_v3_hw(struct hisi_hba *hisi_hba, struct sas_task *task,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2267
hisi_hba->complete_hdr[slot->cmplt_queue];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2337
static void slot_complete_v3_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2342
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2347
hisi_hba->complete_hdr[slot->cmplt_queue];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2408
if (slot_err_v3_hw(hisi_hba, task, slot)) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2476
hisi_sas_slot_task_free(hisi_hba, task, slot, true);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2496
struct hisi_hba *hisi_hba = cq->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2502
complete_queue = hisi_hba->complete_hdr[queue];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2504
wr_point = hisi_sas_read32(hisi_hba, COMPL_Q_0_WR_PTR +
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2510
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2526
&hisi_hba->itct[device_id];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2528
&hisi_hba->devices[device_id];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2540
slot = &hisi_hba->slot_info[iptt];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2543
slot_complete_v3_hw(hisi_hba, slot);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2553
hisi_sas_write32(hisi_hba, COMPL_Q_0_RD_PTR + (0x14 * queue), rd_point);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2561
struct hisi_hba *hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2562
struct hisi_sas_cq *cq = &hisi_hba->cq[queue];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2584
struct hisi_hba *hisi_hba = cq->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2587
hisi_sas_write32(hisi_hba, OQ_INT_SRC, 1 << queue);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2599
static int interrupt_preinit_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2604
struct Scsi_Host *shost = hisi_hba->shost;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2605
struct pci_dev *pdev = hisi_hba->pci_dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2619
hisi_hba->cq_nvecs = vectors - BASE_VECTORS_V3_HW - hisi_hba->iopoll_q_cnt;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2620
shost->nr_hw_queues = hisi_hba->cq_nvecs + hisi_hba->iopoll_q_cnt;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2625
static int interrupt_init_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2627
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2628
struct pci_dev *pdev = hisi_hba->pci_dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2633
DRV_NAME " phy", hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2641
DRV_NAME " channel", hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2649
DRV_NAME " fatal", hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2658
for (i = 0; i < hisi_hba->cq_nvecs; i++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2659
struct hisi_sas_cq *cq = &hisi_hba->cq[i];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2686
static int hisi_sas_v3_init(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2690
rc = hw_init_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2694
rc = interrupt_init_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2701
static void phy_set_linkrate_v3_hw(struct hisi_hba *hisi_hba, int phy_no,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2705
u32 prog_phy_link_rate = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2710
hisi_sas_phy_write32(hisi_hba, phy_no, PROG_PHY_LINK_RATE,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2714
static void interrupt_disable_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2716
struct pci_dev *pdev = hisi_hba->pci_dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2722
for (i = 0; i < hisi_hba->queue_count; i++)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2723
hisi_sas_write32(hisi_hba, OQ0_INT_SRC_MSK + 0x4 * i, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2725
for (i = 0; i < hisi_hba->cq_nvecs; i++)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2728
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK1, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2729
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK2, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2730
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK3, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2731
hisi_sas_write32(hisi_hba, SAS_ECC_INTR_MSK, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2733
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2734
hisi_sas_phy_write32(hisi_hba, i, CHL_INT1_MSK, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2735
hisi_sas_phy_write32(hisi_hba, i, CHL_INT2_MSK, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2736
hisi_sas_phy_write32(hisi_hba, i, PHYCTRL_NOT_RDY_MSK, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2737
hisi_sas_phy_write32(hisi_hba, i, PHYCTRL_PHY_ENA_MSK, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2738
hisi_sas_phy_write32(hisi_hba, i, SL_RX_BCAST_CHK_MSK, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2742
static u32 get_phys_state_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2744
return hisi_sas_read32(hisi_hba, PHY_STATE);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2747
static int disable_host_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2749
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2753
hisi_sas_sync_poll_cqs(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2754
hisi_sas_write32(hisi_hba, DLVRY_QUEUE_ENABLE, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2756
hisi_sas_stop_phys(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2760
reg_val = hisi_sas_read32(hisi_hba, AXI_MASTER_CFG_BASE +
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2763
hisi_sas_write32(hisi_hba, AXI_MASTER_CFG_BASE +
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2778
static int soft_reset_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2780
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2783
interrupt_disable_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2784
rc = disable_host_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2790
hisi_sas_init_mem(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2792
return hw_init_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2795
static int write_gpio_v3_hw(struct hisi_hba *hisi_hba, u8 reg_type,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2798
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2804
if ((reg_index + reg_count) > ((hisi_hba->n_phy + 3) / 4)) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2811
hisi_sas_write32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2824
static void wait_cmds_complete_timeout_v3_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2827
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2831
entries = hisi_sas_read32(hisi_hba, CQE_SEND_CNT);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2854
static void config_intr_coal_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2857
hisi_sas_stop_phys(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2858
hisi_sas_write32(hisi_hba, INT_COAL_EN, 0x3);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2860
if (hisi_hba->intr_coal_ticks == 0 ||
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2861
hisi_hba->intr_coal_count == 0) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2863
hisi_sas_write32(hisi_hba, OQ_INT_COAL_TIME, 0xa);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2865
hisi_sas_write32(hisi_hba, OQ_INT_COAL_CNT, 0xa);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2867
hisi_sas_write32(hisi_hba, OQ_INT_COAL_TIME,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2868
hisi_hba->intr_coal_ticks);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2869
hisi_sas_write32(hisi_hba, OQ_INT_COAL_CNT,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2870
hisi_hba->intr_coal_count);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2872
phys_init_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2880
struct hisi_hba *hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2883
hisi_hba->intr_coal_ticks);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2891
struct hisi_hba *hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2906
hisi_hba->intr_coal_ticks = intr_coal_ticks;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2908
config_intr_coal_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2919
struct hisi_hba *hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2922
hisi_hba->intr_coal_count);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2930
struct hisi_hba *hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2945
hisi_hba->intr_coal_count = intr_coal_count;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2947
config_intr_coal_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2958
struct hisi_hba *hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2961
hisi_hba->iopoll_q_cnt);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2969
struct hisi_hba *hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
2971
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3180
static void debugfs_snapshot_prepare_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3182
struct Scsi_Host *shost = hisi_hba->shost;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3185
wait_cmds_complete_timeout_v3_hw(hisi_hba, WAIT_RETRY, WAIT_TMROUT);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3187
set_bit(HISI_SAS_REJECT_CMD_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3188
hisi_sas_sync_cqs(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3189
hisi_sas_write32(hisi_hba, DLVRY_QUEUE_ENABLE, 0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3192
static void debugfs_snapshot_restore_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3194
struct Scsi_Host *shost = hisi_hba->shost;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3196
hisi_sas_write32(hisi_hba, DLVRY_QUEUE_ENABLE,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3197
(u32)((1ULL << hisi_hba->queue_count) - 1));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3199
clear_bit(HISI_SAS_REJECT_CMD_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3203
static void read_iost_itct_cache_v3_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3209
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3213
hisi_sas_write32(hisi_hba, TAB_RD_TYPE, type);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3216
val = hisi_sas_read32(hisi_hba, TAB_DFX);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3230
buf[i] = hisi_sas_read32(hisi_hba, TAB_DFX);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3233
static void hisi_sas_bist_test_prep_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3236
int phy_no = hisi_hba->debugfs_bist_phy_no;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3240
hisi_sas_phy_enable(hisi_hba, phy_no, 0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3244
hisi_sas_phy_write32(hisi_hba, phy_no, TXDEEMPH_G1 + (i * 0x4),
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3245
hisi_hba->debugfs_bist_ffe[phy_no][i]);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3248
reg_val = hisi_sas_phy_read32(hisi_hba, phy_no, SERDES_CFG);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3250
hisi_sas_phy_write32(hisi_hba, phy_no, SERDES_CFG, reg_val);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3253
static void hisi_sas_bist_test_restore_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3256
int phy_no = hisi_hba->debugfs_bist_phy_no;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3259
reg_val = hisi_sas_phy_read32(hisi_hba, phy_no, SAS_PHY_BIST_CTRL);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3262
hisi_sas_phy_write32(hisi_hba, phy_no, SAS_PHY_BIST_CTRL, reg_val);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3265
reg_val = hisi_sas_phy_read32(hisi_hba, phy_no, SERDES_CFG);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3267
hisi_sas_phy_write32(hisi_hba, phy_no, SERDES_CFG, reg_val);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3270
reg_val = hisi_sas_phy_read32(hisi_hba, phy_no, PROG_PHY_LINK_RATE);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3274
hisi_sas_phy_write32(hisi_hba, phy_no, PROG_PHY_LINK_RATE, reg_val);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3277
hisi_sas_phy_enable(hisi_hba, phy_no, 1);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3285
static int debugfs_set_bist_v3_hw(struct hisi_hba *hisi_hba, bool enable)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3288
u32 linkrate = hisi_hba->debugfs_bist_linkrate;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3289
u32 phy_no = hisi_hba->debugfs_bist_phy_no;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3290
u32 *ffe = hisi_hba->debugfs_bist_ffe[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3291
u32 code_mode = hisi_hba->debugfs_bist_code_mode;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3292
u32 path_mode = hisi_hba->debugfs_bist_mode;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3293
u32 *fix_code = &hisi_hba->debugfs_bist_fixed_code[0];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3294
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3307
hisi_sas_bist_test_prep_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3310
reg_val = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3314
hisi_sas_phy_write32(hisi_hba, phy_no, PROG_PHY_LINK_RATE,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3318
reg_val = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3326
hisi_sas_phy_write32(hisi_hba, phy_no, SAS_PHY_BIST_CTRL,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3331
reg_val = hisi_hba->debugfs_bist_fixed_code[0];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3332
hisi_sas_phy_write32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3335
reg_val = hisi_hba->debugfs_bist_fixed_code[1];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3336
hisi_sas_phy_write32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3339
hisi_sas_phy_write32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3342
hisi_sas_phy_write32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3349
hisi_sas_phy_write32(hisi_hba, phy_no, SAS_PHY_BIST_CTRL,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3354
hisi_sas_phy_read32(hisi_hba, phy_no, SAS_BIST_ERR_CNT);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3357
hisi_hba->debugfs_bist_cnt += hisi_sas_phy_read32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3359
hisi_sas_bist_test_restore_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3367
struct hisi_hba *hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3374
qmap->nr_queues = hisi_hba->cq_nvecs;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3376
qmap->nr_queues = hisi_hba->iopoll_q_cnt;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3389
blk_mq_map_hw_queues(qmap, hisi_hba->dev,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3438
static int check_fw_info_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3440
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3442
if (hisi_hba->n_phy < 0 || hisi_hba->n_phy > 8) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3447
if (hisi_hba->queue_count < 0 || hisi_hba->queue_count > 16) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3459
struct hisi_hba *hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3462
shost = scsi_host_alloc(&sht_v3_hw, sizeof(*hisi_hba));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3467
hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3469
INIT_WORK(&hisi_hba->rst_work, hisi_sas_rst_work_handler);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3470
hisi_hba->hw = &hisi_sas_v3_hw;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3471
hisi_hba->pci_dev = pdev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3472
hisi_hba->dev = dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3473
hisi_hba->shost = shost;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3474
SHOST_TO_SAS_HA(shost) = &hisi_hba->sha;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3480
hisi_hba->prot_mask = prot_mask;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3482
if (hisi_sas_get_fw_info(hisi_hba) < 0)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3485
if (check_fw_info_v3_hw(hisi_hba) < 0)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3489
experimental_iopoll_q_cnt >= hisi_hba->queue_count)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3493
hisi_hba->iopoll_q_cnt = experimental_iopoll_q_cnt;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3495
if (hisi_sas_alloc(hisi_hba)) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3496
hisi_sas_free(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3507
static void debugfs_snapshot_cq_reg_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3509
int queue_entry_size = hisi_hba->hw->complete_hdr_size;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3510
int dump_index = hisi_hba->debugfs_dump_index;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3513
for (i = 0; i < hisi_hba->queue_count; i++)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3514
memcpy(hisi_hba->debugfs_cq[dump_index][i].complete_hdr,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3515
hisi_hba->complete_hdr[i],
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3519
static void debugfs_snapshot_dq_reg_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3522
int dump_index = hisi_hba->debugfs_dump_index;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3525
for (i = 0; i < hisi_hba->queue_count; i++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3529
debugfs_cmd_hdr = hisi_hba->debugfs_dq[dump_index][i].hdr;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3530
cmd_hdr = hisi_hba->cmd_hdr[i];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3538
static void debugfs_snapshot_port_reg_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3540
int dump_index = hisi_hba->debugfs_dump_index;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3546
for (phy_cnt = 0; phy_cnt < hisi_hba->n_phy; phy_cnt++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3547
databuf = hisi_hba->debugfs_port_reg[dump_index][phy_cnt].data;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3550
*databuf = hisi_sas_phy_read32(hisi_hba, phy_cnt,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3556
static void debugfs_snapshot_global_reg_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3558
int dump_index = hisi_hba->debugfs_dump_index;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3559
u32 *databuf = hisi_hba->debugfs_regs[dump_index][DEBUGFS_GLOBAL].data;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3563
*databuf = hisi_sas_read32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3567
static void debugfs_snapshot_axi_reg_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3569
int dump_index = hisi_hba->debugfs_dump_index;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3570
u32 *databuf = hisi_hba->debugfs_regs[dump_index][DEBUGFS_AXI].data;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3575
*databuf = hisi_sas_read32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3580
static void debugfs_snapshot_ras_reg_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3582
int dump_index = hisi_hba->debugfs_dump_index;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3583
u32 *databuf = hisi_hba->debugfs_regs[dump_index][DEBUGFS_RAS].data;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3588
*databuf = hisi_sas_read32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3593
static void debugfs_snapshot_itct_reg_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3595
int dump_index = hisi_hba->debugfs_dump_index;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3596
void *cachebuf = hisi_hba->debugfs_itct_cache[dump_index].cache;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3597
void *databuf = hisi_hba->debugfs_itct[dump_index].itct;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3601
read_iost_itct_cache_v3_hw(hisi_hba, HISI_SAS_ITCT_CACHE, cachebuf);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3603
itct = hisi_hba->itct;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3611
static void debugfs_snapshot_iost_reg_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3613
int dump_index = hisi_hba->debugfs_dump_index;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3615
void *cachebuf = hisi_hba->debugfs_iost_cache[dump_index].cache;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3616
void *databuf = hisi_hba->debugfs_iost[dump_index].iost;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3620
read_iost_itct_cache_v3_hw(hisi_hba, HISI_SAS_IOST_CACHE, cachebuf);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3622
iost = hisi_hba->iost;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3758
struct hisi_hba *hisi_hba = cq->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3760
(hisi_hba->hw->complete_hdr_size * slot);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3763
hisi_hba->hw->complete_hdr_size,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3905
static void debugfs_create_files_v3_hw(struct hisi_hba *hisi_hba, int index)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3917
dump_dentry = debugfs_create_dir(name, hisi_hba->debugfs_dump_dentry);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3919
debugfs_timestamp = &hisi_hba->debugfs_timestamp[index];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3925
&hisi_hba->debugfs_regs[index][DEBUGFS_GLOBAL],
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3930
for (p = 0; p < hisi_hba->n_phy; p++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3934
&hisi_hba->debugfs_port_reg[index][p],
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3940
for (c = 0; c < hisi_hba->queue_count; c++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3944
&hisi_hba->debugfs_cq[index][c],
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3950
for (d = 0; d < hisi_hba->queue_count; d++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3954
&hisi_hba->debugfs_dq[index][d],
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3959
&hisi_hba->debugfs_iost[index],
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3963
&hisi_hba->debugfs_iost_cache[index],
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3967
&hisi_hba->debugfs_itct[index],
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3971
&hisi_hba->debugfs_itct_cache[index],
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3975
&hisi_hba->debugfs_regs[index][DEBUGFS_AXI],
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3979
&hisi_hba->debugfs_regs[index][DEBUGFS_RAS],
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3987
struct hisi_hba *hisi_hba = file->f_inode->i_private;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
3999
down(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4000
if (debugfs_snapshot_regs_v3_hw(hisi_hba)) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4001
up(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4004
up(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4032
struct hisi_hba *hisi_hba = s->private;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4036
int match = (hisi_hba->debugfs_bist_linkrate ==
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4053
struct hisi_hba *hisi_hba = m->private;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4058
if (hisi_hba->debugfs_bist_enable)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4072
hisi_hba->debugfs_bist_linkrate =
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4106
struct hisi_hba *hisi_hba = s->private;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4110
int match = (hisi_hba->debugfs_bist_code_mode ==
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4128
struct hisi_hba *hisi_hba = m->private;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4133
if (hisi_hba->debugfs_bist_enable)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4147
hisi_hba->debugfs_bist_code_mode =
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4166
struct hisi_hba *hisi_hba = m->private;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4170
if (hisi_hba->debugfs_bist_enable)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4177
if (phy_no >= hisi_hba->n_phy)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4180
hisi_hba->debugfs_bist_phy_no = phy_no;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4187
struct hisi_hba *hisi_hba = s->private;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4189
seq_printf(s, "%d\n", hisi_hba->debugfs_bist_phy_no);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4200
struct hisi_hba *hisi_hba = m->private;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4204
if (hisi_hba->debugfs_bist_enable)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4214
hisi_hba->debugfs_bist_cnt = 0;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4220
struct hisi_hba *hisi_hba = s->private;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4222
seq_printf(s, "%u\n", hisi_hba->debugfs_bist_cnt);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4239
struct hisi_hba *hisi_hba = s->private;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4243
int match = (hisi_hba->debugfs_bist_mode ==
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4260
struct hisi_hba *hisi_hba = m->private;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4265
if (hisi_hba->debugfs_bist_enable)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4279
hisi_hba->debugfs_bist_mode =
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4298
struct hisi_hba *hisi_hba = m->private;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4309
if (enable == hisi_hba->debugfs_bist_enable)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4312
val = debugfs_set_bist_v3_hw(hisi_hba, enable);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4316
hisi_hba->debugfs_bist_enable = enable;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4323
struct hisi_hba *hisi_hba = s->private;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4325
seq_printf(s, "%d\n", hisi_hba->debugfs_bist_enable);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4414
struct hisi_hba *hisi_hba = phy->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4417
dev_info(hisi_hba->dev, "Invalid signal select: %u\n",
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4428
dev_info(hisi_hba->dev, "Invalid dump mode: %u\n",
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4443
dev_info(hisi_hba->dev, "Invalid trigger mode: %u\n",
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4455
struct hisi_hba *hisi_hba = phy->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4465
reg_val = hisi_sas_phy_read32(hisi_hba, phy_no, DFX_FIFO_CTRL);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4477
hisi_sas_phy_write32(hisi_hba, phy_no, DFX_FIFO_CTRL, reg_val);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4479
hisi_sas_phy_write32(hisi_hba, phy_no, DFX_FIFO_DUMP_MSK,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4482
hisi_sas_phy_write32(hisi_hba, phy_no, DFX_FIFO_TRIGGER,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4485
hisi_sas_phy_write32(hisi_hba, phy_no, DFX_FIFO_TRIGGER_MSK,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4489
reg_val = hisi_sas_phy_read32(hisi_hba, phy_no, DFX_FIFO_CTRL);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4491
hisi_sas_phy_write32(hisi_hba, phy_no, DFX_FIFO_CTRL, reg_val);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4526
struct hisi_hba *hisi_hba = phy->hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4535
val = hisi_sas_phy_read32(hisi_hba, phy_no, DFX_FIFO_CTRL);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4537
hisi_sas_phy_write32(hisi_hba, phy_no, DFX_FIFO_CTRL, val);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4540
val = hisi_sas_phy_read32(hisi_hba, phy_no,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4546
val = hisi_sas_phy_read32(hisi_hba, phy_no, DFX_FIFO_CTRL);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4548
hisi_sas_phy_write32(hisi_hba, phy_no, DFX_FIFO_CTRL, val);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4565
static void debugfs_fifo_init_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4569
hisi_hba->debugfs_fifo_dentry =
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4570
debugfs_create_dir("fifo", hisi_hba->debugfs_dir);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4572
for (phy_no = 0; phy_no < hisi_hba->n_phy; phy_no++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4573
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4579
val = hisi_sas_phy_read32(hisi_hba, phy_no, DFX_FIFO_CTRL);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4584
val = hisi_sas_phy_read32(hisi_hba, phy_no, DFX_FIFO_CTRL);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4589
val = hisi_sas_phy_read32(hisi_hba, phy_no, DFX_FIFO_CTRL);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4594
val = hisi_sas_phy_read32(hisi_hba, phy_no, DFX_FIFO_DUMP_MSK);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4597
val = hisi_sas_phy_read32(hisi_hba, phy_no, DFX_FIFO_TRIGGER);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4599
val = hisi_sas_phy_read32(hisi_hba, phy_no, DFX_FIFO_TRIGGER_MSK);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4604
hisi_hba->debugfs_fifo_dentry);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4638
static void debugfs_release_v3_hw(struct hisi_hba *hisi_hba, int dump_index)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4640
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4643
devm_kfree(dev, hisi_hba->debugfs_iost_cache[dump_index].cache);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4644
hisi_hba->debugfs_iost_cache[dump_index].cache = NULL;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4645
devm_kfree(dev, hisi_hba->debugfs_itct_cache[dump_index].cache);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4646
hisi_hba->debugfs_itct_cache[dump_index].cache = NULL;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4647
devm_kfree(dev, hisi_hba->debugfs_iost[dump_index].iost);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4648
hisi_hba->debugfs_iost[dump_index].iost = NULL;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4649
devm_kfree(dev, hisi_hba->debugfs_itct[dump_index].itct);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4650
hisi_hba->debugfs_itct[dump_index].itct = NULL;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4652
for (i = 0; i < hisi_hba->queue_count; i++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4653
devm_kfree(dev, hisi_hba->debugfs_dq[dump_index][i].hdr);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4654
hisi_hba->debugfs_dq[dump_index][i].hdr = NULL;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4657
for (i = 0; i < hisi_hba->queue_count; i++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4659
hisi_hba->debugfs_cq[dump_index][i].complete_hdr);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4660
hisi_hba->debugfs_cq[dump_index][i].complete_hdr = NULL;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4664
devm_kfree(dev, hisi_hba->debugfs_regs[dump_index][i].data);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4665
hisi_hba->debugfs_regs[dump_index][i].data = NULL;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4668
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4669
devm_kfree(dev, hisi_hba->debugfs_port_reg[dump_index][i].data);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4670
hisi_hba->debugfs_port_reg[dump_index][i].data = NULL;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4680
static int debugfs_alloc_v3_hw(struct hisi_hba *hisi_hba, int dump_index)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4682
const struct hisi_sas_hw *hw = hisi_hba->hw;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4683
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4689
&hisi_hba->debugfs_regs[dump_index][r];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4695
regs->hisi_hba = hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4699
for (p = 0; p < hisi_hba->n_phy; p++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4701
&hisi_hba->debugfs_port_reg[dump_index][p];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4706
port->phy = &hisi_hba->phy[p];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4710
for (c = 0; c < hisi_hba->queue_count; c++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4712
&hisi_hba->debugfs_cq[dump_index][c];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4717
cq->cq = &hisi_hba->cq[c];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4721
for (d = 0; d < hisi_hba->queue_count; d++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4723
&hisi_hba->debugfs_dq[dump_index][d];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4728
dq->dq = &hisi_hba->dq[d];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4733
hisi_hba->debugfs_iost[dump_index].iost =
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4735
if (!hisi_hba->debugfs_iost[dump_index].iost)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4741
hisi_hba->debugfs_iost_cache[dump_index].cache =
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4743
if (!hisi_hba->debugfs_iost_cache[dump_index].cache)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4749
hisi_hba->debugfs_itct_cache[dump_index].cache =
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4751
if (!hisi_hba->debugfs_itct_cache[dump_index].cache)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4757
hisi_hba->debugfs_itct[dump_index].itct =
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4759
if (!hisi_hba->debugfs_itct[dump_index].itct)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4764
debugfs_release_v3_hw(hisi_hba, dump_index);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4768
static int debugfs_snapshot_regs_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4770
int debugfs_dump_index = hisi_hba->debugfs_dump_index;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4771
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4779
if (debugfs_alloc_v3_hw(hisi_hba, debugfs_dump_index)) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4785
hisi_hba->debugfs_timestamp[debugfs_dump_index] = timestamp;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4787
debugfs_snapshot_prepare_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4789
debugfs_snapshot_global_reg_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4790
debugfs_snapshot_port_reg_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4791
debugfs_snapshot_axi_reg_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4792
debugfs_snapshot_ras_reg_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4793
debugfs_snapshot_cq_reg_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4794
debugfs_snapshot_dq_reg_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4795
debugfs_snapshot_itct_reg_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4796
debugfs_snapshot_iost_reg_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4798
debugfs_snapshot_restore_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4799
hisi_hba->debugfs_dump_index++;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4804
static void debugfs_phy_down_cnt_init_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4807
hisi_hba->debugfs_dir);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4811
for (phy_no = 0; phy_no < hisi_hba->n_phy; phy_no++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4814
&hisi_hba->phy[phy_no],
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4819
static void debugfs_bist_init_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4824
hisi_hba->debugfs_bist_dentry =
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4825
debugfs_create_dir("bist", hisi_hba->debugfs_dir);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4827
hisi_hba->debugfs_bist_dentry, hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4831
hisi_hba->debugfs_bist_dentry, hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4835
hisi_hba->debugfs_bist_dentry,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4836
&hisi_hba->debugfs_bist_fixed_code[0],
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4840
hisi_hba->debugfs_bist_dentry,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4841
&hisi_hba->debugfs_bist_fixed_code[1],
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4844
debugfs_create_file("phy_id", 0600, hisi_hba->debugfs_bist_dentry,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4845
hisi_hba, &debugfs_bist_phy_v3_hw_fops);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4847
debugfs_create_file("cnt", 0600, hisi_hba->debugfs_bist_dentry,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4848
hisi_hba, &debugfs_bist_cnt_v3_hw_fops);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4851
hisi_hba->debugfs_bist_dentry,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4852
hisi_hba, &debugfs_bist_mode_v3_hw_fops);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4854
debugfs_create_file("enable", 0600, hisi_hba->debugfs_bist_dentry,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4855
hisi_hba, &debugfs_bist_enable_v3_hw_fops);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4857
ports_dentry = debugfs_create_dir("port", hisi_hba->debugfs_bist_dentry);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4859
for (phy_no = 0; phy_no < hisi_hba->n_phy; phy_no++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4873
&hisi_hba->debugfs_bist_ffe[phy_no][i],
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4878
hisi_hba->debugfs_bist_linkrate = SAS_LINK_RATE_1_5_GBPS;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4894
static void debugfs_dump_init_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4898
hisi_hba->debugfs_dump_dentry =
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4899
debugfs_create_dir("dump", hisi_hba->debugfs_dir);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4901
debugfs_create_file("latest_dump", 0400, hisi_hba->debugfs_dump_dentry,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4902
&hisi_hba->debugfs_dump_index,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4906
debugfs_create_files_v3_hw(hisi_hba, i);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4909
static void debugfs_exit_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4911
debugfs_remove_recursive(hisi_hba->debugfs_dir);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4912
hisi_hba->debugfs_dir = NULL;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4915
static void debugfs_init_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4917
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4919
hisi_hba->debugfs_dir = debugfs_create_dir(dev_name(dev),
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4922
debugfs_bist_init_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4924
debugfs_dump_init_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4926
debugfs_phy_down_cnt_init_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4927
debugfs_fifo_init_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4929
hisi_hba->debugfs_dir,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4930
hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4938
struct hisi_hba *hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4969
hisi_hba = shost_priv(shost);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4972
hisi_hba->regs = pcim_iomap_table(pdev)[BAR_NO_V3_HW];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4973
if (!hisi_hba->regs) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4979
phy_nr = port_nr = hisi_hba->n_phy;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
4991
sha->lldd_ha = hisi_hba;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5000
if (hisi_hba->iopoll_q_cnt)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5007
sha->sas_addr = &hisi_hba->sas_addr[0];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5008
sha->num_phys = hisi_hba->n_phy;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5010
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5011
sha->sas_phy[i] = &hisi_hba->phy[i].sas_phy;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5012
sha->sas_port[i] = &hisi_hba->port[i].sas_port;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5015
if (hisi_hba->prot_mask) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5018
scsi_host_set_prot(hisi_hba->shost, prot_mask);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5019
if (hisi_hba->prot_mask & HISI_SAS_DIX_PROT_MASK)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5020
scsi_host_set_guard(hisi_hba->shost,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5024
rc = interrupt_preinit_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5036
rc = hisi_sas_v3_init(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5042
debugfs_init_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5064
hisi_sas_free(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5071
hisi_sas_v3_destroy_irqs(struct pci_dev *pdev, struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5075
devm_free_irq(&pdev->dev, pci_irq_vector(pdev, IRQ_PHY_UP_DOWN_INDEX), hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5076
devm_free_irq(&pdev->dev, pci_irq_vector(pdev, IRQ_CHL_INDEX), hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5077
devm_free_irq(&pdev->dev, pci_irq_vector(pdev, IRQ_AXI_INDEX), hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5078
for (i = 0; i < hisi_hba->cq_nvecs; i++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5079
struct hisi_sas_cq *cq = &hisi_hba->cq[i];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5091
struct hisi_hba *hisi_hba = sha->lldd_ha;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5096
debugfs_exit_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5099
flush_workqueue(hisi_hba->wq);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5102
hisi_sas_v3_destroy_irqs(pdev, hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5103
hisi_sas_free(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5110
struct hisi_hba *hisi_hba = sha->lldd_ha;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5111
struct Scsi_Host *shost = hisi_hba->shost;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5112
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5117
down(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5118
set_bit(HISI_SAS_RESETTING_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5119
hisi_sas_controller_reset_prepare(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5121
interrupt_disable_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5122
rc = disable_host_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5130
struct hisi_hba *hisi_hba = sha->lldd_ha;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5131
struct Scsi_Host *shost = hisi_hba->shost;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5132
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5135
hisi_sas_init_mem(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5137
rc = hw_init_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5140
clear_bit(HISI_SAS_REJECT_CMD_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5142
clear_bit(HISI_SAS_RESETTING_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5143
up(&hisi_hba->sem);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5147
hisi_sas_controller_reset_done(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5156
static void enable_host_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5160
hisi_sas_write32(hisi_hba, DLVRY_QUEUE_ENABLE,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5161
(u32)((1ULL << hisi_hba->queue_count) - 1));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5163
phys_init_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5164
reg_val = hisi_sas_read32(hisi_hba, AXI_MASTER_CFG_BASE +
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5167
hisi_sas_write32(hisi_hba, AXI_MASTER_CFG_BASE +
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5175
struct hisi_hba *hisi_hba = sha->lldd_ha;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5176
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5177
struct Scsi_Host *shost = hisi_hba->shost;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5185
if (test_and_set_bit(HISI_SAS_RESETTING_BIT, &hisi_hba->flags))
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5191
set_bit(HISI_SAS_REJECT_CMD_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5192
flush_workqueue(hisi_hba->wq);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5193
interrupt_disable_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5204
rc = disable_host_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5210
hisi_sas_init_mem(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5212
hisi_sas_release_tasks(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5220
enable_host_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5224
interrupt_enable_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5225
clear_bit(HISI_SAS_REJECT_CMD_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5226
clear_bit(HISI_SAS_RESETTING_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5235
struct hisi_hba *hisi_hba = sha->lldd_ha;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5236
struct Scsi_Host *shost = hisi_hba->shost;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5237
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5245
clear_bit(HISI_SAS_REJECT_CMD_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5248
rc = hw_init_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5253
phys_init_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5263
clear_bit(HISI_SAS_RESETTING_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5274
struct hisi_hba *hisi_hba = sha->lldd_ha;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5277
set_bit(HISI_SAS_PM_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5281
clear_bit(HISI_SAS_PM_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5290
struct hisi_hba *hisi_hba = sha->lldd_ha;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
5293
clear_bit(HISI_SAS_PM_BIT, &hisi_hba->flags);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
609
static int debugfs_snapshot_regs_v3_hw(struct hisi_hba *hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
611
static u32 hisi_sas_read32(struct hisi_hba *hisi_hba, u32 off)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
613
void __iomem *regs = hisi_hba->regs + off;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
618
static void hisi_sas_write32(struct hisi_hba *hisi_hba, u32 off, u32 val)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
620
void __iomem *regs = hisi_hba->regs + off;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
625
static void hisi_sas_phy_write32(struct hisi_hba *hisi_hba, int phy_no,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
628
void __iomem *regs = hisi_hba->regs + (0x400 * phy_no) + off;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
633
static u32 hisi_sas_phy_read32(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
636
void __iomem *regs = hisi_hba->regs + (0x400 * phy_no) + off;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
644
void __iomem *regs = hisi_hba->regs + off; \
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
651
void __iomem *regs = hisi_hba->regs + off; \
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
655
static void interrupt_enable_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
659
for (i = 0; i < hisi_hba->queue_count; i++)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
660
hisi_sas_write32(hisi_hba, OQ0_INT_SRC_MSK + 0x4 * i, 0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
662
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK1, 0xfefefefe);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
663
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK2, 0xfefefefe);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
664
hisi_sas_write32(hisi_hba, ENT_INT_SRC_MSK3, 0xffc220ff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
665
hisi_sas_write32(hisi_hba, SAS_ECC_INTR_MSK, 0x155555);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
667
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
668
hisi_sas_phy_write32(hisi_hba, i, CHL_INT1_MSK, 0xf2057fff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
669
hisi_sas_phy_write32(hisi_hba, i, CHL_INT2_MSK, 0xffffbfe);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
670
hisi_sas_phy_write32(hisi_hba, i, PHYCTRL_NOT_RDY_MSK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
671
hisi_sas_phy_write32(hisi_hba, i, PHYCTRL_PHY_ENA_MSK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
672
hisi_sas_phy_write32(hisi_hba, i, SL_RX_BCAST_CHK_MSK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
676
static void init_reg_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
678
struct pci_dev *pdev = hisi_hba->pci_dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
682
hisi_sas_write32(hisi_hba, DLVRY_QUEUE_ENABLE,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
683
(u32)((1ULL << hisi_hba->queue_count) - 1));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
684
hisi_sas_write32(hisi_hba, CFG_MAX_TAG, 0xfff0400);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
686
hisi_sas_write32(hisi_hba, TRANS_LOCK_ICT_TIME, 0x4A817C80);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
687
hisi_sas_write32(hisi_hba, HGC_SAS_TXFAIL_RETRY_CTRL, 0x108);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
688
hisi_sas_write32(hisi_hba, CFG_AGING_TIME, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
689
hisi_sas_write32(hisi_hba, CFG_ICT_TIMER_STEP_TRSH, 0xf4240);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
690
hisi_sas_write32(hisi_hba, INT_COAL_EN, 0x3);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
692
hisi_sas_write32(hisi_hba, OQ_INT_COAL_TIME, 0xa);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
694
hisi_sas_write32(hisi_hba, OQ_INT_COAL_CNT, 0xa);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
695
hisi_sas_write32(hisi_hba, CQ_INT_CONVERGE_EN,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
697
hisi_sas_write32(hisi_hba, OQ_INT_SRC, 0xffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
698
hisi_sas_write32(hisi_hba, ENT_INT_SRC1, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
699
hisi_sas_write32(hisi_hba, ENT_INT_SRC2, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
700
hisi_sas_write32(hisi_hba, ENT_INT_SRC3, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
701
hisi_sas_write32(hisi_hba, CHNL_PHYUPDOWN_INT_MSK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
702
hisi_sas_write32(hisi_hba, CHNL_ENT_INT_MSK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
703
hisi_sas_write32(hisi_hba, HGC_COM_INT_MSK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
704
hisi_sas_write32(hisi_hba, AWQOS_AWCACHE_CFG, 0xf0f0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
705
hisi_sas_write32(hisi_hba, ARQOS_ARCACHE_CFG, 0xf0f0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
706
hisi_sas_write32(hisi_hba, HYPER_STREAM_ID_EN_CFG, 1);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
709
hisi_sas_write32(hisi_hba, SAS_AXI_USER3, 0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
711
interrupt_enable_v3_hw(hisi_hba);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
712
for (i = 0; i < hisi_hba->n_phy; i++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
714
struct hisi_sas_phy *phy = &hisi_hba->phy[i];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
716
u32 prog_phy_link_rate = hisi_sas_phy_read32(hisi_hba, i,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
726
hisi_sas_phy_write32(hisi_hba, i, PROG_PHY_LINK_RATE,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
728
hisi_sas_phy_write32(hisi_hba, i, SAS_RX_TRAIN_TIMER, 0x13e80);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
729
hisi_sas_phy_write32(hisi_hba, i, CHL_INT0, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
730
hisi_sas_phy_write32(hisi_hba, i, CHL_INT1, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
731
hisi_sas_phy_write32(hisi_hba, i, CHL_INT2, 0xffffffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
732
hisi_sas_phy_write32(hisi_hba, i, RXOP_CHECK_CFG_H, 0x1000);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
733
hisi_sas_phy_write32(hisi_hba, i, PHY_CTRL_RDY_MSK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
734
hisi_sas_phy_write32(hisi_hba, i, PHYCTRL_DWS_RESET_MSK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
735
hisi_sas_phy_write32(hisi_hba, i, PHYCTRL_OOB_RESTART_MSK, 0x1);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
736
hisi_sas_phy_write32(hisi_hba, i, STP_LINK_TIMER, 0x7ffffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
737
hisi_sas_phy_write32(hisi_hba, i, CON_CFG_DRIVER, 0x2a0a01);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
738
hisi_sas_phy_write32(hisi_hba, i, SAS_EC_INT_COAL_TIME,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
740
hisi_sas_phy_write32(hisi_hba, i, AIP_LIMIT, 0x2ffff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
744
hisi_sas_phy_write32(hisi_hba, i, SAS_SSP_CON_TIMER_CFG, 0x32);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
745
hisi_sas_phy_write32(hisi_hba, i, SERDES_CFG, 0xffc00);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
747
hisi_sas_phy_write32(hisi_hba, i, COARSETUNE_TIME, 0x1e);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
752
u32 val = hisi_sas_phy_read32(hisi_hba, i,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
754
hisi_hba->debugfs_bist_ffe[i][j] = val;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
758
for (i = 0; i < hisi_hba->queue_count; i++) {
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
760
hisi_sas_write32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
762
upper_32_bits(hisi_hba->cmd_hdr_dma[i]));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
764
hisi_sas_write32(hisi_hba, DLVRY_Q_0_BASE_ADDR_LO + (i * 0x14),
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
765
lower_32_bits(hisi_hba->cmd_hdr_dma[i]));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
767
hisi_sas_write32(hisi_hba, DLVRY_Q_0_DEPTH + (i * 0x14),
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
771
hisi_sas_write32(hisi_hba, COMPL_Q_0_BASE_ADDR_HI + (i * 0x14),
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
772
upper_32_bits(hisi_hba->complete_hdr_dma[i]));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
774
hisi_sas_write32(hisi_hba, COMPL_Q_0_BASE_ADDR_LO + (i * 0x14),
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
775
lower_32_bits(hisi_hba->complete_hdr_dma[i]));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
777
hisi_sas_write32(hisi_hba, COMPL_Q_0_DEPTH + (i * 0x14),
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
782
hisi_sas_write32(hisi_hba, ITCT_BASE_ADDR_LO,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
783
lower_32_bits(hisi_hba->itct_dma));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
785
hisi_sas_write32(hisi_hba, ITCT_BASE_ADDR_HI,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
786
upper_32_bits(hisi_hba->itct_dma));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
789
hisi_sas_write32(hisi_hba, IOST_BASE_ADDR_LO,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
790
lower_32_bits(hisi_hba->iost_dma));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
792
hisi_sas_write32(hisi_hba, IOST_BASE_ADDR_HI,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
793
upper_32_bits(hisi_hba->iost_dma));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
796
hisi_sas_write32(hisi_hba, IO_BROKEN_MSG_ADDR_LO,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
797
lower_32_bits(hisi_hba->breakpoint_dma));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
799
hisi_sas_write32(hisi_hba, IO_BROKEN_MSG_ADDR_HI,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
800
upper_32_bits(hisi_hba->breakpoint_dma));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
803
hisi_sas_write32(hisi_hba, IO_SATA_BROKEN_MSG_ADDR_LO,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
804
lower_32_bits(hisi_hba->sata_breakpoint_dma));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
806
hisi_sas_write32(hisi_hba, IO_SATA_BROKEN_MSG_ADDR_HI,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
807
upper_32_bits(hisi_hba->sata_breakpoint_dma));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
810
hisi_sas_write32(hisi_hba, SATA_INITI_D2H_STORE_ADDR_LO,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
811
lower_32_bits(hisi_hba->initial_fis_dma));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
813
hisi_sas_write32(hisi_hba, SATA_INITI_D2H_STORE_ADDR_HI,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
814
upper_32_bits(hisi_hba->initial_fis_dma));
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
817
hisi_sas_write32(hisi_hba, SAS_RAS_INTR0_MASK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
818
hisi_sas_write32(hisi_hba, SAS_RAS_INTR1_MASK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
819
hisi_sas_write32(hisi_hba, SAS_RAS_INTR2_MASK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
820
hisi_sas_write32(hisi_hba, CFG_SAS_RAS_INTR_MASK, 0x0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
823
hisi_sas_write32(hisi_hba, SAS_CFG_DRIVE_VLD, 0x80000ff);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
824
hisi_sas_write32(hisi_hba, SAS_GPIO_TX_0_1, 0x80808080);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
825
hisi_sas_write32(hisi_hba, SAS_GPIO_TX_0_1 + 0x4, 0x80808080);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
827
hisi_sas_write32(hisi_hba, SAS_GPIO_CFG_1, 0x121700);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
828
hisi_sas_write32(hisi_hba, SAS_GPIO_CFG_0, 0x800000);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
831
static void config_phy_opt_mode_v3_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
833
u32 cfg = hisi_sas_phy_read32(hisi_hba, phy_no, PHY_CFG);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
837
hisi_sas_phy_write32(hisi_hba, phy_no, PHY_CFG, cfg);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
840
static void config_id_frame_v3_hw(struct hisi_hba *hisi_hba, int phy_no)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
851
memcpy(&identify_frame._un4_11[0], hisi_hba->sas_addr, SAS_ADDR_SIZE);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
852
memcpy(&identify_frame.sas_addr[0], hisi_hba->sas_addr, SAS_ADDR_SIZE);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
856
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD0,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
858
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD1,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
860
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD2,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
862
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD3,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
864
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD4,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
866
hisi_sas_phy_write32(hisi_hba, phy_no, TX_ID_DWORD5,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
870
static void setup_itct_v3_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
874
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
876
struct hisi_sas_itct *itct = &hisi_hba->itct[device_id];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
921
static int clear_itct_v3_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
926
struct hisi_sas_itct *itct = &hisi_hba->itct[dev_id];
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
927
u32 reg_val = hisi_sas_read32(hisi_hba, ENT_INT_SRC3);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
928
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
934
hisi_sas_write32(hisi_hba, ENT_INT_SRC3,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
939
hisi_sas_write32(hisi_hba, ITCT_CLR, reg_val);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
951
static void dereg_device_v3_hw(struct hisi_hba *hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
958
cfg_abt_set_query_iptt = hisi_sas_read32(hisi_hba,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
965
hisi_sas_write32(hisi_hba, CFG_ABT_SET_QUERY_IPTT,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
970
hisi_sas_write32(hisi_hba, CFG_ABT_SET_QUERY_IPTT,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
972
hisi_sas_write32(hisi_hba, CFG_ABT_SET_IPTT_DONE,
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
976
static int reset_hw_v3_hw(struct hisi_hba *hisi_hba)
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
978
struct device *dev = hisi_hba->dev;
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
982
hisi_sas_write32(hisi_hba, DLVRY_QUEUE_ENABLE, 0);
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
985
hisi_sas_stop_phys(hisi_hba);