Lines Matching full:fuse

146 	/* fuse quot */
150 /* fuse quot_offset */
367 struct fuse_corner *fuse = corner->fuse_corner; in cpr_corner_restore() local
371 ro_sel = fuse->ring_osc_idx; in cpr_corner_restore()
373 gcnt |= fuse->quot - corner->quot_adjust; in cpr_corner_restore()
377 step_quot |= fuse->step_quot & RBCPR_STEP_QUOT_STEPQUOT_MASK; in cpr_corner_restore()
802 struct fuse_corner *fuse = drv->fuse_corners; in cpr_populate_ring_osc_idx() local
803 struct fuse_corner *end = fuse + drv->desc->num_fuse_corners; in cpr_populate_ring_osc_idx()
808 for (; fuse < end; fuse++, fuses++) { in cpr_populate_ring_osc_idx()
812 fuse->ring_osc_idx = data; in cpr_populate_ring_osc_idx()
851 struct fuse_corner *fuse, *end; in cpr_fuse_corner_init() local
863 fuse = drv->fuse_corners; in cpr_fuse_corner_init()
864 end = &fuse[desc->num_fuse_corners - 1]; in cpr_fuse_corner_init()
867 for (i = 0; fuse <= end; fuse++, fuses++, i++, fdata++) { in cpr_fuse_corner_init()
882 fuse->min_uV = fdata->min_uV; in cpr_fuse_corner_init()
883 fuse->max_uV = fdata->max_uV; in cpr_fuse_corner_init()
884 fuse->uV = clamp(uV, fuse->min_uV, fuse->max_uV); in cpr_fuse_corner_init()
886 if (fuse == end) { in cpr_fuse_corner_init()
888 * Allow the highest fuse corner's PVS voltage to in cpr_fuse_corner_init()
897 ret = nvmem_cell_read_variable_le_u32(drv->dev, fuses->quotient, &fuse->quot); in cpr_fuse_corner_init()
901 fuse->quot *= fdata->quot_scale; in cpr_fuse_corner_init()
902 fuse->quot += fdata->quot_offset; in cpr_fuse_corner_init()
903 fuse->quot += fdata->quot_adjust; in cpr_fuse_corner_init()
904 fuse->step_quot = desc->step_quot[fuse->ring_osc_idx]; in cpr_fuse_corner_init()
907 fuse->accs = accs; in cpr_fuse_corner_init()
908 fuse->num_accs = acc_desc->num_regs_per_fuse; in cpr_fuse_corner_init()
913 * Restrict all fuse corner PVS voltages based upon per corner in cpr_fuse_corner_init()
916 for (fuse = drv->fuse_corners, i = 0; fuse <= end; fuse++, i++) { in cpr_fuse_corner_init()
917 if (fuse->uV > fuse->max_uV) in cpr_fuse_corner_init()
918 fuse->uV = fuse->max_uV; in cpr_fuse_corner_init()
919 else if (fuse->uV < fuse->min_uV) in cpr_fuse_corner_init()
920 fuse->uV = fuse->min_uV; in cpr_fuse_corner_init()
923 fuse->min_uV, in cpr_fuse_corner_init()
924 fuse->min_uV); in cpr_fuse_corner_init()
927 "min uV: %d (fuse corner: %d) not supported by regulator\n", in cpr_fuse_corner_init()
928 fuse->min_uV, i); in cpr_fuse_corner_init()
933 fuse->max_uV, in cpr_fuse_corner_init()
934 fuse->max_uV); in cpr_fuse_corner_init()
937 "max uV: %d (fuse corner: %d) not supported by regulator\n", in cpr_fuse_corner_init()
938 fuse->max_uV, i); in cpr_fuse_corner_init()
943 "fuse corner %d: [%d %d %d] RO%hhu quot %d squot %d\n", in cpr_fuse_corner_init()
944 i, fuse->min_uV, fuse->uV, fuse->max_uV, in cpr_fuse_corner_init()
945 fuse->ring_osc_idx, fuse->quot, fuse->step_quot); in cpr_fuse_corner_init()
959 const struct fuse_corner *fuse, *prev_fuse; in cpr_calculate_scaling() local
962 fuse = corner->fuse_corner; in cpr_calculate_scaling()
963 prev_fuse = fuse - 1; in cpr_calculate_scaling()
973 quot_diff = fuse->quot - prev_fuse->quot; in cpr_calculate_scaling()
976 freq_diff = fuse->max_freq - prev_fuse->max_freq; in cpr_calculate_scaling()
988 const struct fuse_corner *fuse, *prev_fuse; in cpr_interpolate() local
990 fuse = corner->fuse_corner; in cpr_interpolate()
991 prev_fuse = fuse - 1; in cpr_interpolate()
993 f_high = fuse->max_freq; in cpr_interpolate()
995 uV_high = fuse->uV; in cpr_interpolate()
997 f_diff = fuse->max_freq - corner->freq; in cpr_interpolate()
1001 * if the adjusted fuse voltage overlaps with the previous fuse's in cpr_interpolate()
1027 if (of_property_read_u32(np, "qcom,opp-fuse-level", &fuse_corner)) in cpr_get_fuse_corner()
1028 pr_err("%s: missing 'qcom,opp-fuse-level' property\n", in cpr_get_fuse_corner()
1072 struct fuse_corner *fuse, *prev_fuse; in cpr_corner_init() local
1095 * Store maximum frequency for each fuse corner based on the frequency in cpr_corner_init()
1116 fuse = &drv->fuse_corners[fnum]; in cpr_corner_init()
1117 dev_dbg(drv->dev, "freq: %lu level: %u fuse level: %u\n", in cpr_corner_init()
1119 if (freq > fuse->max_freq) in cpr_corner_init()
1120 fuse->max_freq = freq; in cpr_corner_init()
1130 * QUOT(corner_N): quotient read from fuse for fuse corner N in cpr_corner_init()
1131 * QUOT(corner_N-1): quotient read from fuse for fuse corner (N - 1) in cpr_corner_init()
1132 * freq(corner_N): max frequency in MHz supported by fuse corner N in cpr_corner_init()
1133 * freq(corner_N-1): max frequency in MHz supported by fuse corner in cpr_corner_init()
1136 * Then walk through the corners mapped to each fuse corner in cpr_corner_init()
1142 * freq_max: max frequency in MHz supported by the fuse corner in cpr_corner_init()
1160 * f = fuse corner in cpr_corner_init()
1167 fuse = &drv->fuse_corners[fnum]; in cpr_corner_init()
1173 corner->fuse_corner = fuse; in cpr_corner_init()
1175 corner->uV = fuse->uV; in cpr_corner_init()
1184 } else if (corner->freq == fuse->max_freq) { in cpr_corner_init()
1185 /* This is a fuse corner; don't scale anything */ in cpr_corner_init()
1190 freq_diff = fuse->max_freq - corner->freq; in cpr_corner_init()
1197 corner->max_uV = fuse->max_uV; in cpr_corner_init()
1198 corner->min_uV = fuse->min_uV; in cpr_corner_init()
1205 else if (desc->reduce_to_fuse_uV && fuse->uV < corner->max_uV) in cpr_corner_init()
1206 corner->max_uV = max(corner->min_uV, fuse->uV); in cpr_corner_init()
1210 fuse->quot - corner->quot_adjust); in cpr_corner_init()
1353 /* fuse corner 0 */
1366 /* fuse corner 1 */
1379 /* fuse corner 2 */
1474 * the maximum frequency for each fuse corner, and this is only in cpr_pd_attach_dev()
1477 * frequency associated with each fuse corner. in cpr_pd_attach_dev()
1638 * Initialize fuse corners, since it simply depends in cpr_probe()