• Marc Gonzalez's avatar
    Revert "scsi: ufs: disable vccq if it's not needed by UFS device" · 73067981
    Marc Gonzalez authored
    This reverts commit 60f01870.
    
    There was one conflict in drivers/scsi/ufs/ufshcd.c
    
    <<<<<<< HEAD
    	/* Init check for device descriptor sizes */
    	ufshcd_init_desc_sizes(hba);
    
    	ret = ufs_get_device_desc(hba, &card);
    	if (ret) {
    		dev_err(hba->dev, "%s: Failed getting device info. err = %d\n",
    			__func__, ret);
    		goto out;
    	}
    
    	ufs_fixup_device_setup(hba, &card);
    	ufshcd_tune_unipro_params(hba);
    
    	ret = ufshcd_set_vccq_rail_unused(hba,
    		(hba->dev_quirks & UFS_DEVICE_NO_VCCQ) ? true : false);
    	if (ret)
    		goto out;
    
    =======
    	ufs_advertise_fixup_device(hba);
    >>>>>>> parent of 60f01870... scsi: ufs: disable vccq if it's not needed by UFS device
    
    Resolution: keep HEAD, and delete the ufshcd_set_vccq_rail_unused() call
    and corresponding error-handling code.
    
    Clean up loose ends in a follow-up patch.
    
    60f01870 introduced a small power optimization: ignore the vccq load
    specified in the UFSHC DT node when said host controller is connected to
    specific Flash chips (currently, Samsung and Hynix).
    
    Unfortunately, this optimization breaks UFS on systems where vccq powers
    not only the Flash chip, but the host controller as well, such as APQ8098
    MEDIABOX or MTP8998:
    
    [    3.929877] ufshcd-qcom 1da4000.ufshc: ufshcd_query_attr: opcode 0x04 for idn 13 failed, index 0, err = -11
    [    5.433815] ufshcd-qcom 1da4000.ufshc: ufshcd_query_attr: opcode 0x04 for idn 13 failed, index 0, err = -11
    [    6.937771] ufshcd-qcom 1da4000.ufshc: ufshcd_query_attr: opcode 0x04 for idn 13 failed, index 0, err = -11
    [    6.937866] ufshcd-qcom 1da4000.ufshc: ufshcd_query_attr_retry: query attribute, idn 13, failed with error -11 after 3 retires
    [    6.946412] ufshcd-qcom 1da4000.ufshc: ufshcd_disable_auto_bkops: failed to enable exception event -11
    [    6.957972] ufshcd-qcom 1da4000.ufshc: dme-peer-get: attr-id 0x1587 failed 3 retries
    [    6.967181] ufshcd-qcom 1da4000.ufshc: dme-peer-get: attr-id 0x1586 failed 3 retries
    [    6.975025] ufshcd-qcom 1da4000.ufshc: ufshcd_get_max_pwr_mode: invalid max pwm tx gear read = 0
    [    6.982755] ufshcd-qcom 1da4000.ufshc: ufshcd_probe_hba: Failed getting max supported power mode
    [    8.505770] ufshcd-qcom 1da4000.ufshc: ufshcd_query_flag: Sending flag query for idn 3 failed, err = -11
    [   10.009807] ufshcd-qcom 1da4000.ufshc: ufshcd_query_flag: Sending flag query for idn 3 failed, err = -11
    [   11.513766] ufshcd-qcom 1da4000.ufshc: ufshcd_query_flag: Sending flag query for idn 3 failed, err = -11
    [   11.513861] ufshcd-qcom 1da4000.ufshc: ufshcd_query_flag_retry: query attribute, opcode 5, idn 3, failed with error -11 after 3 retires
    [   13.049807] ufshcd-qcom 1da4000.ufshc: __ufshcd_query_descriptor: opcode 0x01 for idn 8 failed, index 0, err = -11
    [   14.553768] ufshcd-qcom 1da4000.ufshc: __ufshcd_query_descriptor: opcode 0x01 for idn 8 failed, index 0, err = -11
    [   16.057767] ufshcd-qcom 1da4000.ufshc: __ufshcd_query_descriptor: opcode 0x01 for idn 8 failed, index 0, err = -11
    [   16.057872] ufshcd-qcom 1da4000.ufshc: ufshcd_read_desc_param: Failed reading descriptor. desc_id 8, desc_index 0, param_offset 0, ret -11
    [   16.067109] ufshcd-qcom 1da4000.ufshc: ufshcd_init_icc_levels: Failed reading power descriptor.len = 98 ret = -11
    [   37.073787] ufshcd-qcom 1da4000.ufshc: link startup failed 1
    
    In my opinion, the rationale for the original patch is questionable.  If
    neither the UFSHC, nor the Flash chip, require any load from vccq, then
    that power rail should simply not be specified at all in the DT.
    
    Working around that fact in the driver is detrimental, as evidenced by the
    failure to initialize the host controller on MSM8998.
    Acked-by: default avatarAvri Altman <avri.altman@wdc.com>
    Acked-by: default avatarAlim Akhtar <alim.akhtar@samsung.com>
    Signed-off-by: default avatarMarc Gonzalez <marc.w.gonzalez@free.fr>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    73067981
ufshcd.c 222 KB