/* intensity level cannot be 0 and also cannot exceed
the number of strength values defined in dts */
if (pMotorData->intensity_level == 0
- || pMotorData->intensity_level > pMotorPdata->count_strength) {
- pr_err("[VIB] %s level error: level %d, str_cnt %d",
+ || pMotorData->intensity_level
+ > pMotorPdata->count_strength
+ || pMotorData->intensity_level
+ > pMotorPdata->count_frequency) {
+ pr_err("[VIB] %s level error: level %d, str_cnt %d, freq_cnt %d",
__func__, pMotorData->intensity_level,
- pMotorPdata->count_strength);
+ pMotorPdata->count_strength,
+ pMotorPdata->count_frequency);
goto out;
}
strength = pMotorPdata->strength[pMotorData->intensity_level - 1]
* pMotorData->intensity_value / 10000;
- if (pMotorPdata->count_frequency >= pMotorData->intensity_level)
- /* use frequency value in dt if the requested level is mapped */
- freq_hz = pMotorPdata->frequency[pMotorData->intensity_level - 1];
- else if (pMotorData->frequency)
- /* use frequency value given from platform if exists */
+ /* frequency data from platform is used unless it's 0
+ which means to use frequency defined in device tree for each model */
+ if (pMotorData->frequency)
freq_hz = pMotorData->frequency;
- else {
- pr_err("[VIB] %s frequency error: freq_cnt %d, level %d, freq %d",
- __func__, pMotorPdata->count_frequency,
- pMotorData->intensity_level,
- pMotorData->frequency);
- goto out;
- }
+ else
+ freq_hz = pMotorPdata->frequency[pMotorData->intensity_level - 1];
ret = ztm620_motor_reg_write(pMotorData, MOTOR_REG_SOFT_EN, SOFT_ENABLE);
if (ret < 0) {
}
/* -1 for ovd means overdrive requested to be off by platform */
- pr_info("[VIB] Start: level %d, value 0x%x(%d), freq 0x%x(%d.%d), ovd %d\n",
+ pr_info("[VIB] Start: level %d, value 0x%x(%d),"
+ " freq 0x%x(%d.%d/%d.%d), ovd %d\n",
pMotorData->intensity_level,
strength, pMotorData->intensity_value,
- freq_reg, freq_hz / 10, freq_hz % 10,
+ freq_reg, pMotorData->frequency / 10, pMotorData->frequency % 10,
+ pMotorPdata->frequency[pMotorData->intensity_level - 1] / 10,
+ pMotorPdata->frequency[pMotorData->intensity_level - 1] % 10,
pMotorData->overdrive?pMotorPdata->overdrive_num:-1);
out:
static int of_ztm620_motor_dt(struct i2c_client* client, struct ztm620_motor_platform_data *pdata)
{
int err;
- int ret = 0;
const char *motor_type;
const char *loop_type;
int i;
dev_info(&client->dev, "[VIB] %s: dt parsing done\n", __func__);
- return ret;
+ return 0;
}
#endif /* CONFIG_OF */