Lines Matching full:hba
89 struct ufs_hba *hba = dev_get_drvdata(dev); in ufs_sysfs_pm_lvl_store() local
90 struct ufs_dev_info *dev_info = &hba->dev_info; in ufs_sysfs_pm_lvl_store()
100 (!(hba->caps & UFSHCD_CAP_DEEPSLEEP) || in ufs_sysfs_pm_lvl_store()
104 spin_lock_irqsave(hba->host->host_lock, flags); in ufs_sysfs_pm_lvl_store()
106 hba->rpm_lvl = value; in ufs_sysfs_pm_lvl_store()
108 hba->spm_lvl = value; in ufs_sysfs_pm_lvl_store()
109 spin_unlock_irqrestore(hba->host->host_lock, flags); in ufs_sysfs_pm_lvl_store()
116 struct ufs_hba *hba = dev_get_drvdata(dev); in rpm_lvl_show() local
118 return sysfs_emit(buf, "%d\n", hba->rpm_lvl); in rpm_lvl_show()
130 struct ufs_hba *hba = dev_get_drvdata(dev); in rpm_target_dev_state_show() local
133 ufs_pm_lvl_states[hba->rpm_lvl].dev_state)); in rpm_target_dev_state_show()
139 struct ufs_hba *hba = dev_get_drvdata(dev); in rpm_target_link_state_show() local
142 ufs_pm_lvl_states[hba->rpm_lvl].link_state)); in rpm_target_link_state_show()
148 struct ufs_hba *hba = dev_get_drvdata(dev); in spm_lvl_show() local
150 return sysfs_emit(buf, "%d\n", hba->spm_lvl); in spm_lvl_show()
162 struct ufs_hba *hba = dev_get_drvdata(dev); in spm_target_dev_state_show() local
165 ufs_pm_lvl_states[hba->spm_lvl].dev_state)); in spm_target_dev_state_show()
171 struct ufs_hba *hba = dev_get_drvdata(dev); in spm_target_link_state_show() local
174 ufs_pm_lvl_states[hba->spm_lvl].link_state)); in spm_target_link_state_show()
201 static int ufshcd_read_hci_reg(struct ufs_hba *hba, u32 *val, unsigned int reg) in ufshcd_read_hci_reg() argument
203 down(&hba->host_sem); in ufshcd_read_hci_reg()
204 if (!ufshcd_is_user_access_allowed(hba)) { in ufshcd_read_hci_reg()
205 up(&hba->host_sem); in ufshcd_read_hci_reg()
209 ufshcd_rpm_get_sync(hba); in ufshcd_read_hci_reg()
210 ufshcd_hold(hba); in ufshcd_read_hci_reg()
211 *val = ufshcd_readl(hba, reg); in ufshcd_read_hci_reg()
212 ufshcd_release(hba); in ufshcd_read_hci_reg()
213 ufshcd_rpm_put_sync(hba); in ufshcd_read_hci_reg()
215 up(&hba->host_sem); in ufshcd_read_hci_reg()
224 struct ufs_hba *hba = dev_get_drvdata(dev); in auto_hibern8_show() local
226 if (!ufshcd_is_auto_hibern8_supported(hba)) in auto_hibern8_show()
229 ret = ufshcd_read_hci_reg(hba, &ahit, REG_AUTO_HIBERNATE_IDLE_TIMER); in auto_hibern8_show()
240 struct ufs_hba *hba = dev_get_drvdata(dev); in auto_hibern8_store() local
244 if (!ufshcd_is_auto_hibern8_supported(hba)) in auto_hibern8_store()
253 down(&hba->host_sem); in auto_hibern8_store()
254 if (!ufshcd_is_user_access_allowed(hba)) { in auto_hibern8_store()
259 ufshcd_auto_hibern8_update(hba, ufshcd_us_to_ahit(timer)); in auto_hibern8_store()
262 up(&hba->host_sem); in auto_hibern8_store()
269 struct ufs_hba *hba = dev_get_drvdata(dev); in wb_on_show() local
271 return sysfs_emit(buf, "%d\n", hba->dev_info.wb_enabled); in wb_on_show()
277 struct ufs_hba *hba = dev_get_drvdata(dev); in wb_on_store() local
281 if (!ufshcd_is_wb_allowed(hba) || (ufshcd_is_clkscaling_supported(hba) in wb_on_store()
282 && ufshcd_enable_wb_if_scaling_up(hba))) { in wb_on_store()
297 down(&hba->host_sem); in wb_on_store()
298 if (!ufshcd_is_user_access_allowed(hba)) { in wb_on_store()
303 ufshcd_rpm_get_sync(hba); in wb_on_store()
304 res = ufshcd_wb_toggle(hba, wb_enable); in wb_on_store()
305 ufshcd_rpm_put_sync(hba); in wb_on_store()
307 up(&hba->host_sem); in wb_on_store()
314 struct ufs_hba *hba = dev_get_drvdata(dev); in rtc_update_ms_show() local
316 return sysfs_emit(buf, "%d\n", hba->dev_info.rtc_update_period); in rtc_update_ms_show()
322 struct ufs_hba *hba = dev_get_drvdata(dev); in rtc_update_ms_store() local
329 if (!hba->dev_info.rtc_update_period && ms > 0) in rtc_update_ms_store()
332 hba->dev_info.rtc_update_period = ms; in rtc_update_ms_store()
335 schedule_delayed_work(&hba->ufs_rtc_update_work, in rtc_update_ms_store()
336 msecs_to_jiffies(hba->dev_info.rtc_update_period)); in rtc_update_ms_store()
344 struct ufs_hba *hba = dev_get_drvdata(dev); in enable_wb_buf_flush_show() local
346 return sysfs_emit(buf, "%d\n", hba->dev_info.wb_buf_flush_enabled); in enable_wb_buf_flush_show()
353 struct ufs_hba *hba = dev_get_drvdata(dev); in enable_wb_buf_flush_store() local
357 if (!ufshcd_is_wb_buf_flush_allowed(hba)) { in enable_wb_buf_flush_store()
368 down(&hba->host_sem); in enable_wb_buf_flush_store()
369 if (!ufshcd_is_user_access_allowed(hba)) { in enable_wb_buf_flush_store()
374 ufshcd_rpm_get_sync(hba); in enable_wb_buf_flush_store()
375 res = ufshcd_wb_toggle_buf_flush(hba, enable_wb_buf_flush); in enable_wb_buf_flush_store()
376 ufshcd_rpm_put_sync(hba); in enable_wb_buf_flush_store()
379 up(&hba->host_sem); in enable_wb_buf_flush_store()
387 struct ufs_hba *hba = dev_get_drvdata(dev); in wb_flush_threshold_show() local
389 return sysfs_emit(buf, "%u\n", hba->vps->wb_flush_threshold); in wb_flush_threshold_show()
396 struct ufs_hba *hba = dev_get_drvdata(dev); in wb_flush_threshold_store() local
409 hba->vps->wb_flush_threshold = wb_flush_threshold; in wb_flush_threshold_store()
427 struct ufs_hba *hba = dev_get_drvdata(dev); in pm_qos_enable_show() local
429 return sysfs_emit(buf, "%d\n", hba->pm_qos_enabled); in pm_qos_enable_show()
447 struct ufs_hba *hba = dev_get_drvdata(dev); in pm_qos_enable_store() local
454 ufshcd_pm_qos_init(hba); in pm_qos_enable_store()
456 ufshcd_pm_qos_exit(hba); in pm_qos_enable_store()
497 struct ufs_hba *hba = dev_get_drvdata(dev); in clock_scaling_show() local
499 return sysfs_emit(buf, "%d\n", ufshcd_is_clkscaling_supported(hba)); in clock_scaling_show()
505 struct ufs_hba *hba = dev_get_drvdata(dev); in write_booster_show() local
507 return sysfs_emit(buf, "%d\n", ufshcd_is_wb_allowed(hba)); in write_booster_show()
531 struct ufs_hba *hba = dev_get_drvdata(dev); in version_show() local
533 return sysfs_emit(buf, "0x%x\n", hba->ufs_version); in version_show()
541 struct ufs_hba *hba = dev_get_drvdata(dev); in product_id_show() local
543 ret = ufshcd_read_hci_reg(hba, &val, REG_CONTROLLER_PID); in product_id_show()
555 struct ufs_hba *hba = dev_get_drvdata(dev); in man_id_show() local
557 ret = ufshcd_read_hci_reg(hba, &val, REG_CONTROLLER_MID); in man_id_show()
583 struct ufs_hba *hba = dev_get_drvdata(dev); in monitor_enable_show() local
585 return sysfs_emit(buf, "%d\n", hba->monitor.enabled); in monitor_enable_show()
592 struct ufs_hba *hba = dev_get_drvdata(dev); in monitor_enable_store() local
599 spin_lock_irqsave(hba->host->host_lock, flags); in monitor_enable_store()
600 if (value == hba->monitor.enabled) in monitor_enable_store()
604 memset(&hba->monitor, 0, sizeof(hba->monitor)); in monitor_enable_store()
606 hba->monitor.enabled = true; in monitor_enable_store()
607 hba->monitor.enabled_ts = ktime_get(); in monitor_enable_store()
611 spin_unlock_irqrestore(hba->host->host_lock, flags); in monitor_enable_store()
618 struct ufs_hba *hba = dev_get_drvdata(dev); in monitor_chunk_size_show() local
620 return sysfs_emit(buf, "%lu\n", hba->monitor.chunk_size); in monitor_chunk_size_show()
627 struct ufs_hba *hba = dev_get_drvdata(dev); in monitor_chunk_size_store() local
633 spin_lock_irqsave(hba->host->host_lock, flags); in monitor_chunk_size_store()
635 if (!hba->monitor.enabled) in monitor_chunk_size_store()
636 hba->monitor.chunk_size = value; in monitor_chunk_size_store()
637 spin_unlock_irqrestore(hba->host->host_lock, flags); in monitor_chunk_size_store()
644 struct ufs_hba *hba = dev_get_drvdata(dev); in read_total_sectors_show() local
646 return sysfs_emit(buf, "%lu\n", hba->monitor.nr_sec_rw[READ]); in read_total_sectors_show()
652 struct ufs_hba *hba = dev_get_drvdata(dev); in read_total_busy_show() local
655 ktime_to_us(hba->monitor.total_busy[READ])); in read_total_busy_show()
661 struct ufs_hba *hba = dev_get_drvdata(dev); in read_nr_requests_show() local
663 return sysfs_emit(buf, "%lu\n", hba->monitor.nr_req[READ]); in read_nr_requests_show()
670 struct ufs_hba *hba = dev_get_drvdata(dev); in read_req_latency_avg_show() local
671 struct ufs_hba_monitor *m = &hba->monitor; in read_req_latency_avg_show()
684 struct ufs_hba *hba = dev_get_drvdata(dev); in read_req_latency_max_show() local
687 ktime_to_us(hba->monitor.lat_max[READ])); in read_req_latency_max_show()
694 struct ufs_hba *hba = dev_get_drvdata(dev); in read_req_latency_min_show() local
697 ktime_to_us(hba->monitor.lat_min[READ])); in read_req_latency_min_show()
704 struct ufs_hba *hba = dev_get_drvdata(dev); in read_req_latency_sum_show() local
707 ktime_to_us(hba->monitor.lat_sum[READ])); in read_req_latency_sum_show()
714 struct ufs_hba *hba = dev_get_drvdata(dev); in write_total_sectors_show() local
716 return sysfs_emit(buf, "%lu\n", hba->monitor.nr_sec_rw[WRITE]); in write_total_sectors_show()
722 struct ufs_hba *hba = dev_get_drvdata(dev); in write_total_busy_show() local
725 ktime_to_us(hba->monitor.total_busy[WRITE])); in write_total_busy_show()
731 struct ufs_hba *hba = dev_get_drvdata(dev); in write_nr_requests_show() local
733 return sysfs_emit(buf, "%lu\n", hba->monitor.nr_req[WRITE]); in write_nr_requests_show()
740 struct ufs_hba *hba = dev_get_drvdata(dev); in write_req_latency_avg_show() local
741 struct ufs_hba_monitor *m = &hba->monitor; in write_req_latency_avg_show()
754 struct ufs_hba *hba = dev_get_drvdata(dev); in write_req_latency_max_show() local
757 ktime_to_us(hba->monitor.lat_max[WRITE])); in write_req_latency_max_show()
764 struct ufs_hba *hba = dev_get_drvdata(dev); in write_req_latency_min_show() local
767 ktime_to_us(hba->monitor.lat_min[WRITE])); in write_req_latency_min_show()
774 struct ufs_hba *hba = dev_get_drvdata(dev); in write_req_latency_sum_show() local
777 ktime_to_us(hba->monitor.lat_sum[WRITE])); in write_req_latency_sum_show()
825 struct ufs_hba *hba = dev_get_drvdata(dev); in lane_show() local
827 return sysfs_emit(buf, "%u\n", hba->pwr_info.lane_rx); in lane_show()
833 struct ufs_hba *hba = dev_get_drvdata(dev); in mode_show() local
835 return sysfs_emit(buf, "%s\n", ufs_pa_pwr_mode_to_string(hba->pwr_info.pwr_rx)); in mode_show()
841 struct ufs_hba *hba = dev_get_drvdata(dev); in rate_show() local
843 return sysfs_emit(buf, "%s\n", ufs_hs_gear_rate_to_string(hba->pwr_info.hs_rate)); in rate_show()
849 struct ufs_hba *hba = dev_get_drvdata(dev); in gear_show() local
851 return sysfs_emit(buf, "%s\n", hba->pwr_info.hs_rate ? in gear_show()
852 ufs_hs_gear_to_string(hba->pwr_info.gear_rx) : in gear_show()
853 ufs_pwm_gear_to_string(hba->pwr_info.gear_rx)); in gear_show()
859 struct ufs_hba *hba = dev_get_drvdata(dev); in dev_pm_show() local
861 return sysfs_emit(buf, "%s\n", ufshcd_ufs_dev_pwr_mode_to_string(hba->curr_dev_pwr_mode)); in dev_pm_show()
867 struct ufs_hba *hba = dev_get_drvdata(dev); in link_state_show() local
869 return sysfs_emit(buf, "%s\n", ufshcd_uic_link_state_to_string(hba->uic_link_state)); in link_state_show()
894 static ssize_t ufs_sysfs_read_desc_param(struct ufs_hba *hba, in ufs_sysfs_read_desc_param() argument
907 down(&hba->host_sem); in ufs_sysfs_read_desc_param()
908 if (!ufshcd_is_user_access_allowed(hba)) { in ufs_sysfs_read_desc_param()
913 ufshcd_rpm_get_sync(hba); in ufs_sysfs_read_desc_param()
914 ret = ufshcd_read_desc_param(hba, desc_id, desc_index, in ufs_sysfs_read_desc_param()
916 ufshcd_rpm_put_sync(hba); in ufs_sysfs_read_desc_param()
941 up(&hba->host_sem); in ufs_sysfs_read_desc_param()
949 struct ufs_hba *hba = dev_get_drvdata(dev); \
950 return ufs_sysfs_read_desc_param(hba, QUERY_DESC_IDN_##_duname, \
1162 struct ufs_hba *hba = dev_get_drvdata(dev); \
1163 return ufs_sysfs_read_desc_param(hba, QUERY_DESC_IDN_POWER, 0, \
1279 struct ufs_hba *hba = dev_get_drvdata(dev); \
1284 down(&hba->host_sem); \
1285 if (!ufshcd_is_user_access_allowed(hba)) { \
1286 up(&hba->host_sem); \
1291 up(&hba->host_sem); \
1294 ufshcd_rpm_get_sync(hba); \
1295 ret = ufshcd_query_descriptor_retry(hba, \
1305 ret = ufshcd_read_string_desc(hba, index, &desc_buf, \
1311 ufshcd_rpm_put_sync(hba); \
1313 up(&hba->host_sem); \
1351 struct ufs_hba *hba = dev_get_drvdata(dev); \
1353 down(&hba->host_sem); \
1354 if (!ufshcd_is_user_access_allowed(hba)) { \
1355 up(&hba->host_sem); \
1359 index = ufshcd_wb_get_query_index(hba); \
1360 ufshcd_rpm_get_sync(hba); \
1361 ret = ufshcd_query_flag(hba, UPIU_QUERY_OPCODE_READ_FLAG, \
1363 ufshcd_rpm_put_sync(hba); \
1370 up(&hba->host_sem); \
1410 struct ufs_hba *hba = dev_get_drvdata(dev); in max_number_of_rtt_show() local
1414 down(&hba->host_sem); in max_number_of_rtt_show()
1415 if (!ufshcd_is_user_access_allowed(hba)) { in max_number_of_rtt_show()
1416 up(&hba->host_sem); in max_number_of_rtt_show()
1420 ufshcd_rpm_get_sync(hba); in max_number_of_rtt_show()
1421 ret = ufshcd_query_attr(hba, UPIU_QUERY_OPCODE_READ_ATTR, in max_number_of_rtt_show()
1423 ufshcd_rpm_put_sync(hba); in max_number_of_rtt_show()
1431 up(&hba->host_sem); in max_number_of_rtt_show()
1439 struct ufs_hba *hba = dev_get_drvdata(dev); in max_number_of_rtt_store() local
1440 struct ufs_dev_info *dev_info = &hba->dev_info; in max_number_of_rtt_store()
1454 down(&hba->host_sem); in max_number_of_rtt_store()
1455 if (!ufshcd_is_user_access_allowed(hba)) { in max_number_of_rtt_store()
1460 ufshcd_rpm_get_sync(hba); in max_number_of_rtt_store()
1463 shost_for_each_device(sdev, hba->host) in max_number_of_rtt_store()
1466 ret = ufshcd_query_attr(hba, UPIU_QUERY_OPCODE_WRITE_ATTR, in max_number_of_rtt_store()
1469 shost_for_each_device(sdev, hba->host) in max_number_of_rtt_store()
1473 ufshcd_rpm_put_sync(hba); in max_number_of_rtt_store()
1476 up(&hba->host_sem); in max_number_of_rtt_store()
1492 struct ufs_hba *hba = dev_get_drvdata(dev); \
1497 down(&hba->host_sem); \
1498 if (!ufshcd_is_user_access_allowed(hba)) { \
1499 up(&hba->host_sem); \
1503 index = ufshcd_wb_get_query_index(hba); \
1504 ufshcd_rpm_get_sync(hba); \
1505 ret = ufshcd_query_attr(hba, UPIU_QUERY_OPCODE_READ_ATTR, \
1507 ufshcd_rpm_put_sync(hba); \
1514 up(&hba->host_sem); \
1591 struct ufs_hba *hba = shost_priv(sdev->host); \
1593 if (!ufs_is_valid_unit_desc_lun(&hba->dev_info, lun)) \
1595 return ufs_sysfs_read_desc_param(hba, QUERY_DESC_IDN_##_duname, \
1666 struct ufs_hba *hba = shost_priv(sdev->host); in dyn_cap_needed_attribute_show() local
1670 down(&hba->host_sem); in dyn_cap_needed_attribute_show()
1671 if (!ufshcd_is_user_access_allowed(hba)) { in dyn_cap_needed_attribute_show()
1676 ufshcd_rpm_get_sync(hba); in dyn_cap_needed_attribute_show()
1677 ret = ufshcd_query_attr(hba, UPIU_QUERY_OPCODE_READ_ATTR, in dyn_cap_needed_attribute_show()
1679 ufshcd_rpm_put_sync(hba); in dyn_cap_needed_attribute_show()
1688 up(&hba->host_sem); in dyn_cap_needed_attribute_show()