• 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
52 * A sysfs 'read-only' shost attribute.
58 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_mpi_interface_rev_show() local
59 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_mpi_interface_rev_show()
61 if (pm8001_ha->chip_id == chip_8001) { in pm8001_ctl_mpi_interface_rev_show()
63 pm8001_ha->main_cfg_tbl.pm8001_tbl.interface_rev); in pm8001_ctl_mpi_interface_rev_show()
66 pm8001_ha->main_cfg_tbl.pm80xx_tbl.interface_rev); in pm8001_ctl_mpi_interface_rev_show()
73 * pm8001_ctl_fw_version_show - firmware version
77 * A sysfs 'read-only' shost attribute.
83 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_fw_version_show() local
84 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_fw_version_show()
86 if (pm8001_ha->chip_id == chip_8001) { in pm8001_ctl_fw_version_show()
88 (u8)(pm8001_ha->main_cfg_tbl.pm8001_tbl.firmware_rev >> 24), in pm8001_ctl_fw_version_show()
89 (u8)(pm8001_ha->main_cfg_tbl.pm8001_tbl.firmware_rev >> 16), in pm8001_ctl_fw_version_show()
90 (u8)(pm8001_ha->main_cfg_tbl.pm8001_tbl.firmware_rev >> 8), in pm8001_ctl_fw_version_show()
91 (u8)(pm8001_ha->main_cfg_tbl.pm8001_tbl.firmware_rev)); in pm8001_ctl_fw_version_show()
94 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.firmware_rev >> 24), in pm8001_ctl_fw_version_show()
95 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.firmware_rev >> 16), in pm8001_ctl_fw_version_show()
96 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.firmware_rev >> 8), in pm8001_ctl_fw_version_show()
97 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.firmware_rev)); in pm8001_ctl_fw_version_show()
103 * pm8001_ctl_ila_version_show - ila version
107 * A sysfs 'read-only' shost attribute.
113 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_ila_version_show() local
114 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_ila_version_show()
116 if (pm8001_ha->chip_id != chip_8001) { in pm8001_ctl_ila_version_show()
118 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.ila_version >> 24), in pm8001_ctl_ila_version_show()
119 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.ila_version >> 16), in pm8001_ctl_ila_version_show()
120 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.ila_version >> 8), in pm8001_ctl_ila_version_show()
121 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.ila_version)); in pm8001_ctl_ila_version_show()
128 * pm8001_ctl_inactive_fw_version_show - Inacative firmware version number
132 * A sysfs 'read-only' shost attribute.
138 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_inactive_fw_version_show() local
139 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_inactive_fw_version_show()
141 if (pm8001_ha->chip_id != chip_8001) { in pm8001_ctl_inactive_fw_version_show()
143 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.inc_fw_version >> 24), in pm8001_ctl_inactive_fw_version_show()
144 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.inc_fw_version >> 16), in pm8001_ctl_inactive_fw_version_show()
145 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.inc_fw_version >> 8), in pm8001_ctl_inactive_fw_version_show()
146 (u8)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.inc_fw_version)); in pm8001_ctl_inactive_fw_version_show()
154 * pm8001_ctl_max_out_io_show - max outstanding io supported
158 * A sysfs 'read-only' shost attribute.
164 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_max_out_io_show() local
165 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_max_out_io_show()
167 if (pm8001_ha->chip_id == chip_8001) { in pm8001_ctl_max_out_io_show()
169 pm8001_ha->main_cfg_tbl.pm8001_tbl.max_out_io); in pm8001_ctl_max_out_io_show()
172 pm8001_ha->main_cfg_tbl.pm80xx_tbl.max_out_io); in pm8001_ctl_max_out_io_show()
177 * pm8001_ctl_max_devices_show - max devices support
181 * A sysfs 'read-only' shost attribute.
187 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_max_devices_show() local
188 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_max_devices_show()
190 if (pm8001_ha->chip_id == chip_8001) { in pm8001_ctl_max_devices_show()
192 (u16)(pm8001_ha->main_cfg_tbl.pm8001_tbl.max_sgl >> 16) in pm8001_ctl_max_devices_show()
196 (u16)(pm8001_ha->main_cfg_tbl.pm80xx_tbl.max_sgl >> 16) in pm8001_ctl_max_devices_show()
202 * pm8001_ctl_max_sg_list_show - max sg list supported iff not 0.0 for no
207 * A sysfs 'read-only' shost attribute.
213 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_max_sg_list_show() local
214 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_max_sg_list_show()
216 if (pm8001_ha->chip_id == chip_8001) { in pm8001_ctl_max_sg_list_show()
218 pm8001_ha->main_cfg_tbl.pm8001_tbl.max_sgl & 0x0000FFFF in pm8001_ctl_max_sg_list_show()
222 pm8001_ha->main_cfg_tbl.pm80xx_tbl.max_sgl & 0x0000FFFF in pm8001_ctl_max_sg_list_show()
238 len = sprintf(buf, "%s", "SAS1.1"); in show_sas_spec_support_status()
247 * pm8001_ctl_sas_spec_support_show - sas spec supported
251 * A sysfs 'read-only' shost attribute.
258 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_sas_spec_support_show() local
259 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_sas_spec_support_show()
260 /* fe000000 means supports SAS2.1 */ in pm8001_ctl_sas_spec_support_show()
261 if (pm8001_ha->chip_id == chip_8001) in pm8001_ctl_sas_spec_support_show()
262 mode = (pm8001_ha->main_cfg_tbl.pm8001_tbl.ctrl_cap_flag & in pm8001_ctl_sas_spec_support_show()
265 /* fe000000 means supports SAS2.1 */ in pm8001_ctl_sas_spec_support_show()
266 mode = (pm8001_ha->main_cfg_tbl.pm80xx_tbl.ctrl_cap_flag & in pm8001_ctl_sas_spec_support_show()
274 * pm8001_ctl_sas_address_show - sas address
280 * A sysfs 'read-only' shost attribute.
286 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_host_sas_address_show() local
287 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_host_sas_address_show()
289 be64_to_cpu(*(__be64 *)pm8001_ha->sas_addr)); in pm8001_ctl_host_sas_address_show()
295 * pm8001_ctl_logging_level_show - logging level
305 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_logging_level_show() local
306 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_logging_level_show()
308 return snprintf(buf, PAGE_SIZE, "%08xh\n", pm8001_ha->logging_level); in pm8001_ctl_logging_level_show()
314 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_logging_level_store() local
315 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_logging_level_store()
318 if (sscanf(buf, "%x", &val) != 1) in pm8001_ctl_logging_level_store()
319 return -EINVAL; in pm8001_ctl_logging_level_store()
321 pm8001_ha->logging_level = val; in pm8001_ctl_logging_level_store()
328 * pm8001_ctl_aap_log_show - aap1 event log
332 * A sysfs 'read-only' shost attribute.
338 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_aap_log_show() local
339 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_aap_log_show()
342 (*(u32 *)((u8*)pm8001_ha->memoryMap.region[AAP1].virt_ptr + (r) * 32 \ in pm8001_ctl_aap_log_show()
360 return str - buf; in pm8001_ctl_aap_log_show()
364 * pm8001_ctl_ib_queue_log_show - Out bound Queue log
367 * A sysfs 'read-only' shost attribute.
373 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_ib_queue_log_show() local
374 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_ib_queue_log_show()
379 (*(u32 *)((u8 *)pm8001_ha-> \ in pm8001_ctl_ib_queue_log_show()
381 pm8001_ha->evtlog_ib_offset + (c))) in pm8001_ctl_ib_queue_log_show()
387 pm8001_ha->evtlog_ib_offset += SYSFS_OFFSET; in pm8001_ctl_ib_queue_log_show()
388 if (((pm8001_ha->evtlog_ib_offset) % (PM80XX_IB_OB_QUEUE_SIZE)) == 0) in pm8001_ctl_ib_queue_log_show()
389 pm8001_ha->evtlog_ib_offset = 0; in pm8001_ctl_ib_queue_log_show()
391 return str - buf; in pm8001_ctl_ib_queue_log_show()
396 * pm8001_ctl_ob_queue_log_show - Out bound Queue log
399 * A sysfs 'read-only' shost attribute.
406 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_ob_queue_log_show() local
407 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_ob_queue_log_show()
412 (*(u32 *)((u8 *)pm8001_ha-> \ in pm8001_ctl_ob_queue_log_show()
414 pm8001_ha->evtlog_ob_offset + (c))) in pm8001_ctl_ob_queue_log_show()
420 pm8001_ha->evtlog_ob_offset += SYSFS_OFFSET; in pm8001_ctl_ob_queue_log_show()
421 if (((pm8001_ha->evtlog_ob_offset) % (PM80XX_IB_OB_QUEUE_SIZE)) == 0) in pm8001_ctl_ob_queue_log_show()
422 pm8001_ha->evtlog_ob_offset = 0; in pm8001_ctl_ob_queue_log_show()
424 return str - buf; in pm8001_ctl_ob_queue_log_show()
428 * pm8001_ctl_bios_version_show - Bios version Display
431 * A sysfs 'read-only' shost attribute.
437 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_bios_version_show() local
438 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_bios_version_show()
444 pm8001_ha->nvmd_completion = &completion; in pm8001_ctl_bios_version_show()
450 return -ENOMEM; in pm8001_ctl_bios_version_show()
451 if (PM8001_CHIP_DISP->get_nvmd_req(pm8001_ha, &payload)) { in pm8001_ctl_bios_version_show()
453 return -ENOMEM; in pm8001_ctl_bios_version_show()
461 return str - buf; in pm8001_ctl_bios_version_show()
465 * pm8001_ctl_aap_log_show - IOP event log
469 * A sysfs 'read-only' shost attribute.
475 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_ctl_iop_log_show() local
476 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_ctl_iop_log_show()
478 (*(u32 *)((u8*)pm8001_ha->memoryMap.region[IOP].virt_ptr + (r) * 32 \ in pm8001_ctl_iop_log_show()
496 return str - buf; in pm8001_ctl_iop_log_show()
501 ** pm8001_ctl_fatal_log_show - fatal error logging
505 ** A sysfs 'read-only' shost attribute.
521 ** pm8001_ctl_gsm_log_show - gsm dump collection
524 **A sysfs 'read-only' shost attribute.
581 u32 length = 1024 * 5 + sizeof(*payload) - 1; in pm8001_set_nvmd()
583 if (pm8001_ha->fw_image->size > 4096) { in pm8001_set_nvmd()
584 pm8001_ha->fw_status = FAIL_FILE_SIZE; in pm8001_set_nvmd()
585 return -EFAULT; in pm8001_set_nvmd()
590 pm8001_ha->fw_status = FAIL_OUT_MEMORY; in pm8001_set_nvmd()
591 return -ENOMEM; in pm8001_set_nvmd()
594 memcpy((u8 *)&payload->func_specific, (u8 *)pm8001_ha->fw_image->data, in pm8001_set_nvmd()
595 pm8001_ha->fw_image->size); in pm8001_set_nvmd()
596 payload->length = pm8001_ha->fw_image->size; in pm8001_set_nvmd()
597 payload->id = 0; in pm8001_set_nvmd()
598 payload->minor_function = 0x1; in pm8001_set_nvmd()
599 pm8001_ha->nvmd_completion = &completion; in pm8001_set_nvmd()
600 ret = PM8001_CHIP_DISP->set_nvmd_req(pm8001_ha, payload); in pm8001_set_nvmd()
602 pm8001_ha->fw_status = FAIL_OUT_MEMORY; in pm8001_set_nvmd()
622 u32 length = 1024 * 16 + sizeof(*payload) - 1; in pm8001_update_flash()
624 if (pm8001_ha->fw_image->size < 28) { in pm8001_update_flash()
625 pm8001_ha->fw_status = FAIL_FILE_SIZE; in pm8001_update_flash()
626 return -EFAULT; in pm8001_update_flash()
630 pm8001_ha->fw_status = FAIL_OUT_MEMORY; in pm8001_update_flash()
631 return -ENOMEM; in pm8001_update_flash()
633 image_hdr = (struct pm8001_fw_image_header *)pm8001_ha->fw_image->data; in pm8001_update_flash()
634 while (sizeRead < pm8001_ha->fw_image->size) { in pm8001_update_flash()
636 *(u32 *)((u8 *)&image_hdr->image_length + sizeRead); in pm8001_update_flash()
642 payload->length = 1024*16; in pm8001_update_flash()
643 payload->id = 0; in pm8001_update_flash()
645 (struct fw_control_info *)&payload->func_specific; in pm8001_update_flash()
646 fwControl->len = IOCTL_BUF_SIZE; /* IN */ in pm8001_update_flash()
647 fwControl->size = partitionSize + HEADER_LEN;/* IN */ in pm8001_update_flash()
648 fwControl->retcode = 0;/* OUT */ in pm8001_update_flash()
649 fwControl->offset = loopNumber * IOCTL_BUF_SIZE;/*OUT */ in pm8001_update_flash()
653 if (((loopcount-loopNumber) == 1) && in pm8001_update_flash()
655 fwControl->len = in pm8001_update_flash()
657 memcpy((u8 *)fwControl->buffer, in pm8001_update_flash()
658 (u8 *)pm8001_ha->fw_image->data + sizeRead, in pm8001_update_flash()
663 memcpy((u8 *)fwControl->buffer, in pm8001_update_flash()
664 (u8 *)pm8001_ha->fw_image->data + sizeRead, in pm8001_update_flash()
669 pm8001_ha->nvmd_completion = &completion; in pm8001_update_flash()
670 ret = PM8001_CHIP_DISP->fw_flash_update_req(pm8001_ha, payload); in pm8001_update_flash()
672 pm8001_ha->fw_status = FAIL_OUT_MEMORY; in pm8001_update_flash()
676 if (fwControl->retcode > FLASH_UPDATE_IN_PROGRESS) { in pm8001_update_flash()
677 pm8001_ha->fw_status = fwControl->retcode; in pm8001_update_flash()
678 ret = -EFAULT; in pm8001_update_flash()
692 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_store_update_fw() local
693 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_store_update_fw()
700 return -EACCES; in pm8001_store_update_fw()
704 if (pm8001_ha->fw_status == FLASH_IN_PROGRESS) in pm8001_store_update_fw()
705 return -EINPROGRESS; in pm8001_store_update_fw()
706 pm8001_ha->fw_status = FLASH_IN_PROGRESS; in pm8001_store_update_fw()
710 pm8001_ha->fw_status = FAIL_OUT_MEMORY; in pm8001_store_update_fw()
711 return -ENOMEM; in pm8001_store_update_fw()
717 pm8001_ha->fw_status = FAIL_PARAMETERS; in pm8001_store_update_fw()
718 ret = -EINVAL; in pm8001_store_update_fw()
730 pm8001_ha->fw_status = FAIL_PARAMETERS; in pm8001_store_update_fw()
731 ret = -EINVAL; in pm8001_store_update_fw()
735 ret = request_firmware(&pm8001_ha->fw_image, in pm8001_store_update_fw()
737 pm8001_ha->dev); in pm8001_store_update_fw()
744 pm8001_ha->fw_status = FAIL_OPEN_BIOS_FILE; in pm8001_store_update_fw()
753 release_firmware(pm8001_ha->fw_image); in pm8001_store_update_fw()
760 pm8001_ha->fw_status = FLASH_OK; in pm8001_store_update_fw()
769 struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost); in pm8001_show_update_fw() local
770 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_show_update_fw()
773 if (flash_error_table[i].err_code == pm8001_ha->fw_status) in pm8001_show_update_fw()
776 if (pm8001_ha->fw_status != FLASH_IN_PROGRESS) in pm8001_show_update_fw()
777 pm8001_ha->fw_status = FLASH_OK; in pm8001_show_update_fw()