• Home
  • Raw
  • Download

Lines Matching +full:sha +full:- +full:1

2  * PMC-Sierra 8001/8081/8088/8089 SAS/SATA based host adapters driver
4 * Copyright (c) 2008-2009 USI Co., Ltd.
10 * 1. Redistributions of source code must retain the above copyright
18 * 3. Neither the names of the above-listed copyright holders nor the names
48 * pm8001_ctl_mpi_interface_rev_show - MPI interface revision number
53 * A sysfs 'read-only' shost attribute.
59 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_mpi_interface_rev_show() local
60 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_mpi_interface_rev_show()
62 if (pm8001_ha->chip_id == chip_8001) { in pm8001_ctl_mpi_interface_rev_show()
64 pm8001_ha->main_cfg_tbl.pm8001_tbl.interface_rev); in pm8001_ctl_mpi_interface_rev_show()
67 pm8001_ha->main_cfg_tbl.pm80xx_tbl.interface_rev); in pm8001_ctl_mpi_interface_rev_show()
74 * controller_fatal_error_show - check controller is under fatal err
85 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in controller_fatal_error_show() local
86 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in controller_fatal_error_show()
89 pm8001_ha->controller_fatal_error); in controller_fatal_error_show()
94 * pm8001_ctl_fw_version_show - firmware version
99 * A sysfs 'read-only' shost attribute.
105 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_fw_version_show() local
106 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_fw_version_show()
108 if (pm8001_ha->chip_id == chip_8001) { in pm8001_ctl_fw_version_show()
110 (u8)(pm8001_ha->main_cfg_tbl.pm8001_tbl.firmware_rev >> 24), in pm8001_ctl_fw_version_show()
111 (u8)(pm8001_ha->main_cfg_tbl.pm8001_tbl.firmware_rev >> 16), in pm8001_ctl_fw_version_show()
112 (u8)(pm8001_ha->main_cfg_tbl.pm8001_tbl.firmware_rev >> 8), in pm8001_ctl_fw_version_show()
113 (u8)(pm8001_ha->main_cfg_tbl.pm8001_tbl.firmware_rev)); in pm8001_ctl_fw_version_show()
116 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.firmware_rev >> 24), in pm8001_ctl_fw_version_show()
117 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.firmware_rev >> 16), in pm8001_ctl_fw_version_show()
118 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.firmware_rev >> 8), in pm8001_ctl_fw_version_show()
119 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.firmware_rev)); in pm8001_ctl_fw_version_show()
125 * pm8001_ctl_ila_version_show - ila version
130 * A sysfs 'read-only' shost attribute.
136 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_ila_version_show() local
137 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_ila_version_show()
139 if (pm8001_ha->chip_id != chip_8001) { in pm8001_ctl_ila_version_show()
141 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.ila_version >> 24), in pm8001_ctl_ila_version_show()
142 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.ila_version >> 16), in pm8001_ctl_ila_version_show()
143 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.ila_version >> 8), in pm8001_ctl_ila_version_show()
144 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.ila_version)); in pm8001_ctl_ila_version_show()
151 * pm8001_ctl_inactive_fw_version_show - Inacative firmware version number
156 * A sysfs 'read-only' shost attribute.
162 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_inactive_fw_version_show() local
163 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_inactive_fw_version_show()
165 if (pm8001_ha->chip_id != chip_8001) { in pm8001_ctl_inactive_fw_version_show()
167 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.inc_fw_version >> 24), in pm8001_ctl_inactive_fw_version_show()
168 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.inc_fw_version >> 16), in pm8001_ctl_inactive_fw_version_show()
169 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.inc_fw_version >> 8), in pm8001_ctl_inactive_fw_version_show()
170 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.inc_fw_version)); in pm8001_ctl_inactive_fw_version_show()
178 * pm8001_ctl_max_out_io_show - max outstanding io supported
183 * A sysfs 'read-only' shost attribute.
189 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_max_out_io_show() local
190 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_max_out_io_show()
192 if (pm8001_ha->chip_id == chip_8001) { in pm8001_ctl_max_out_io_show()
194 pm8001_ha->main_cfg_tbl.pm8001_tbl.max_out_io); in pm8001_ctl_max_out_io_show()
197 pm8001_ha->main_cfg_tbl.pm80xx_tbl.max_out_io); in pm8001_ctl_max_out_io_show()
202 * pm8001_ctl_max_devices_show - max devices support
207 * A sysfs 'read-only' shost attribute.
213 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_max_devices_show() local
214 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_max_devices_show()
216 if (pm8001_ha->chip_id == chip_8001) { in pm8001_ctl_max_devices_show()
218 (u16)(pm8001_ha->main_cfg_tbl.pm8001_tbl.max_sgl >> 16) in pm8001_ctl_max_devices_show()
222 (u16)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.max_sgl >> 16) in pm8001_ctl_max_devices_show()
228 * pm8001_ctl_max_sg_list_show - max sg list supported iff not 0.0 for no
234 * A sysfs 'read-only' shost attribute.
240 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_max_sg_list_show() local
241 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_max_sg_list_show()
243 if (pm8001_ha->chip_id == chip_8001) { in pm8001_ctl_max_sg_list_show()
245 pm8001_ha->main_cfg_tbl.pm8001_tbl.max_sgl & 0x0000FFFF in pm8001_ctl_max_sg_list_show()
249 pm8001_ha->main_cfg_tbl.pm80xx_tbl.max_sgl & 0x0000FFFF in pm8001_ctl_max_sg_list_show()
265 len = sprintf(buf, "%s", "SAS1.1"); in show_sas_spec_support_status()
274 * pm8001_ctl_sas_spec_support_show - sas spec supported
279 * A sysfs 'read-only' shost attribute.
286 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_sas_spec_support_show() local
287 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_sas_spec_support_show()
288 /* fe000000 means supports SAS2.1 */ in pm8001_ctl_sas_spec_support_show()
289 if (pm8001_ha->chip_id == chip_8001) in pm8001_ctl_sas_spec_support_show()
290 mode = (pm8001_ha->main_cfg_tbl.pm8001_tbl.ctrl_cap_flag & in pm8001_ctl_sas_spec_support_show()
293 /* fe000000 means supports SAS2.1 */ in pm8001_ctl_sas_spec_support_show()
294 mode = (pm8001_ha->main_cfg_tbl.pm80xx_tbl.ctrl_cap_flag & in pm8001_ctl_sas_spec_support_show()
302 * pm8001_ctl_sas_address_show - sas address
309 * A sysfs 'read-only' shost attribute.
315 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_host_sas_address_show() local
316 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_host_sas_address_show()
318 be64_to_cpu(*(__be64 *)pm8001_ha->sas_addr)); in pm8001_ctl_host_sas_address_show()
324 * pm8001_ctl_logging_level_show - logging level
335 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_logging_level_show() local
336 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_logging_level_show()
338 return snprintf(buf, PAGE_SIZE, "%08xh\n", pm8001_ha->logging_level); in pm8001_ctl_logging_level_show()
345 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_logging_level_store() local
346 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_logging_level_store()
349 if (sscanf(buf, "%x", &val) != 1) in pm8001_ctl_logging_level_store()
350 return -EINVAL; in pm8001_ctl_logging_level_store()
352 pm8001_ha->logging_level = val; in pm8001_ctl_logging_level_store()
359 * pm8001_ctl_aap_log_show - aap1 event log
364 * A sysfs 'read-only' shost attribute.
370 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_aap_log_show() local
371 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_aap_log_show()
374 (*(u32 *)((u8*)pm8001_ha->memoryMap.region[AAP1].virt_ptr + (r) * 32 \ in pm8001_ctl_aap_log_show()
392 return str - buf; in pm8001_ctl_aap_log_show()
396 * pm8001_ctl_ib_queue_log_show - Out bound Queue log
400 * A sysfs 'read-only' shost attribute.
406 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_ib_queue_log_show() local
407 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_ib_queue_log_show()
411 u32 ib_offset = pm8001_ha->ib_offset; in pm8001_ctl_ib_queue_log_show()
413 (*(u32 *)((u8 *)pm8001_ha-> \ in pm8001_ctl_ib_queue_log_show()
415 pm8001_ha->evtlog_ib_offset + (c))) in pm8001_ctl_ib_queue_log_show()
421 pm8001_ha->evtlog_ib_offset += SYSFS_OFFSET; in pm8001_ctl_ib_queue_log_show()
422 if (((pm8001_ha->evtlog_ib_offset) % (PM80XX_IB_OB_QUEUE_SIZE)) == 0) in pm8001_ctl_ib_queue_log_show()
423 pm8001_ha->evtlog_ib_offset = 0; in pm8001_ctl_ib_queue_log_show()
425 return str - buf; in pm8001_ctl_ib_queue_log_show()
430 * pm8001_ctl_ob_queue_log_show - Out bound Queue log
434 * A sysfs 'read-only' shost attribute.
441 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_ob_queue_log_show() local
442 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_ob_queue_log_show()
446 u32 ob_offset = pm8001_ha->ob_offset; in pm8001_ctl_ob_queue_log_show()
448 (*(u32 *)((u8 *)pm8001_ha-> \ in pm8001_ctl_ob_queue_log_show()
450 pm8001_ha->evtlog_ob_offset + (c))) in pm8001_ctl_ob_queue_log_show()
456 pm8001_ha->evtlog_ob_offset += SYSFS_OFFSET; in pm8001_ctl_ob_queue_log_show()
457 if (((pm8001_ha->evtlog_ob_offset) % (PM80XX_IB_OB_QUEUE_SIZE)) == 0) in pm8001_ctl_ob_queue_log_show()
458 pm8001_ha->evtlog_ob_offset = 0; in pm8001_ctl_ob_queue_log_show()
460 return str - buf; in pm8001_ctl_ob_queue_log_show()
464 * pm8001_ctl_bios_version_show - Bios version Display
468 * A sysfs 'read-only' shost attribute.
474 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_bios_version_show() local
475 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_bios_version_show()
481 pm8001_ha->nvmd_completion = &completion; in pm8001_ctl_bios_version_show()
487 return -ENOMEM; in pm8001_ctl_bios_version_show()
488 if (PM8001_CHIP_DISP->get_nvmd_req(pm8001_ha, &payload)) { in pm8001_ctl_bios_version_show()
490 return -ENOMEM; in pm8001_ctl_bios_version_show()
498 return str - buf; in pm8001_ctl_bios_version_show()
502 * event_log_size_show - event log size
513 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in event_log_size_show() local
514 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in event_log_size_show()
517 pm8001_ha->main_cfg_tbl.pm80xx_tbl.event_log_size); in event_log_size_show()
521 * pm8001_ctl_aap_log_show - IOP event log
526 * A sysfs 'read-only' shost attribute.
532 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_iop_log_show() local
533 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_iop_log_show()
536 pm8001_ha->main_cfg_tbl.pm80xx_tbl.event_log_size / 1024; in pm8001_ctl_iop_log_show()
540 u32 *temp = (u32 *)pm8001_ha->memoryMap.region[IOP].virt_ptr; in pm8001_ctl_iop_log_show()
554 return str - buf; in pm8001_ctl_iop_log_show()
559 ** pm8001_ctl_fatal_log_show - fatal error logging
564 ** A sysfs 'read-only' shost attribute.
579 ** non_fatal_log_show - non fatal error logging
584 ** A sysfs 'read-only' shost attribute.
600 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in non_fatal_count_show() local
601 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in non_fatal_count_show()
604 pm8001_ha->non_fatal_count); in non_fatal_count_show()
611 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in non_fatal_count_store() local
612 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in non_fatal_count_store()
616 return -EINVAL; in non_fatal_count_store()
618 pm8001_ha->non_fatal_count = val; in non_fatal_count_store()
624 ** pm8001_ctl_gsm_log_show - gsm dump collection
628 ** A sysfs 'read-only' shost attribute.
685 u32 length = 1024 * 5 + sizeof(*payload) - 1; in pm8001_set_nvmd()
687 if (pm8001_ha->fw_image->size > 4096) { in pm8001_set_nvmd()
688 pm8001_ha->fw_status = FAIL_FILE_SIZE; in pm8001_set_nvmd()
689 return -EFAULT; in pm8001_set_nvmd()
694 pm8001_ha->fw_status = FAIL_OUT_MEMORY; in pm8001_set_nvmd()
695 return -ENOMEM; in pm8001_set_nvmd()
698 memcpy((u8 *)&payload->func_specific, (u8 *)pm8001_ha->fw_image->data, in pm8001_set_nvmd()
699 pm8001_ha->fw_image->size); in pm8001_set_nvmd()
700 payload->wr_length = pm8001_ha->fw_image->size; in pm8001_set_nvmd()
701 payload->id = 0; in pm8001_set_nvmd()
702 payload->minor_function = 0x1; in pm8001_set_nvmd()
703 pm8001_ha->nvmd_completion = &completion; in pm8001_set_nvmd()
704 ret = PM8001_CHIP_DISP->set_nvmd_req(pm8001_ha, payload); in pm8001_set_nvmd()
706 pm8001_ha->fw_status = FAIL_OUT_MEMORY; in pm8001_set_nvmd()
726 u32 length = 1024 * 16 + sizeof(*payload) - 1; in pm8001_update_flash()
728 if (pm8001_ha->fw_image->size < 28) { in pm8001_update_flash()
729 pm8001_ha->fw_status = FAIL_FILE_SIZE; in pm8001_update_flash()
730 return -EFAULT; in pm8001_update_flash()
734 pm8001_ha->fw_status = FAIL_OUT_MEMORY; in pm8001_update_flash()
735 return -ENOMEM; in pm8001_update_flash()
737 image_hdr = (struct pm8001_fw_image_header *)pm8001_ha->fw_image->data; in pm8001_update_flash()
738 while (sizeRead < pm8001_ha->fw_image->size) { in pm8001_update_flash()
740 *(u32 *)((u8 *)&image_hdr->image_length + sizeRead); in pm8001_update_flash()
746 payload->wr_length = 1024*16; in pm8001_update_flash()
747 payload->id = 0; in pm8001_update_flash()
749 (struct fw_control_info *)&payload->func_specific; in pm8001_update_flash()
750 fwControl->len = IOCTL_BUF_SIZE; /* IN */ in pm8001_update_flash()
751 fwControl->size = partitionSize + HEADER_LEN;/* IN */ in pm8001_update_flash()
752 fwControl->retcode = 0;/* OUT */ in pm8001_update_flash()
753 fwControl->offset = loopNumber * IOCTL_BUF_SIZE;/*OUT */ in pm8001_update_flash()
757 if (((loopcount-loopNumber) == 1) && in pm8001_update_flash()
759 fwControl->len = in pm8001_update_flash()
761 memcpy((u8 *)fwControl->buffer, in pm8001_update_flash()
762 (u8 *)pm8001_ha->fw_image->data + sizeRead, in pm8001_update_flash()
767 memcpy((u8 *)fwControl->buffer, in pm8001_update_flash()
768 (u8 *)pm8001_ha->fw_image->data + sizeRead, in pm8001_update_flash()
773 pm8001_ha->nvmd_completion = &completion; in pm8001_update_flash()
774 ret = PM8001_CHIP_DISP->fw_flash_update_req(pm8001_ha, payload); in pm8001_update_flash()
776 pm8001_ha->fw_status = FAIL_OUT_MEMORY; in pm8001_update_flash()
780 if (fwControl->retcode > FLASH_UPDATE_IN_PROGRESS) { in pm8001_update_flash()
781 pm8001_ha->fw_status = fwControl->retcode; in pm8001_update_flash()
782 ret = -EFAULT; in pm8001_update_flash()
796 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_store_update_fw() local
797 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_store_update_fw()
804 return -EACCES; in pm8001_store_update_fw()
808 if (pm8001_ha->fw_status == FLASH_IN_PROGRESS) in pm8001_store_update_fw()
809 return -EINPROGRESS; in pm8001_store_update_fw()
810 pm8001_ha->fw_status = FLASH_IN_PROGRESS; in pm8001_store_update_fw()
814 pm8001_ha->fw_status = FAIL_OUT_MEMORY; in pm8001_store_update_fw()
815 return -ENOMEM; in pm8001_store_update_fw()
821 pm8001_ha->fw_status = FAIL_PARAMETERS; in pm8001_store_update_fw()
822 ret = -EINVAL; in pm8001_store_update_fw()
834 pm8001_ha->fw_status = FAIL_PARAMETERS; in pm8001_store_update_fw()
835 ret = -EINVAL; in pm8001_store_update_fw()
839 ret = request_firmware(&pm8001_ha->fw_image, in pm8001_store_update_fw()
841 pm8001_ha->dev); in pm8001_store_update_fw()
847 pm8001_ha->fw_status = FAIL_OPEN_BIOS_FILE; in pm8001_store_update_fw()
856 release_firmware(pm8001_ha->fw_image); in pm8001_store_update_fw()
863 pm8001_ha->fw_status = FLASH_OK; in pm8001_store_update_fw()
872 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_show_update_fw() local
873 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_show_update_fw()
876 if (flash_error_table[i].err_code == pm8001_ha->fw_status) in pm8001_show_update_fw()
879 if (pm8001_ha->fw_status != FLASH_IN_PROGRESS) in pm8001_show_update_fw()
880 pm8001_ha->fw_status = FLASH_OK; in pm8001_show_update_fw()