- * there are two LVDS channels(LVDS0 and LVDS1) which can transfer video
- * datas, there two channels can be used as split/dual/single/separate mode.
+ * There are two LVDS channels (LVDS0 and LVDS1) which can transfer video
+ * data. These two channels can be used as split/dual/single/separate mode.
* single mode means only work for DI0/DI1->LVDS0 or DI0/DI1->LVDS1.
* separate mode means you can make DI0/DI1->LVDS0 and DI0/DI1->LVDS1 work
* at the same time.
* single mode means only work for DI0/DI1->LVDS0 or DI0/DI1->LVDS1.
* separate mode means you can make DI0/DI1->LVDS0 and DI0/DI1->LVDS1 work
* at the same time.
(ROUTE_IPU_DI(ipu, di) << LVDS1_MUX_CTL_OFFS);
dev_dbg(&ldb->pdev->dev,
"Dual/Split mode both channels route to IPU%d-DI%d\n",
(ROUTE_IPU_DI(ipu, di) << LVDS1_MUX_CTL_OFFS);
dev_dbg(&ldb->pdev->dev,
"Dual/Split mode both channels route to IPU%d-DI%d\n",
} else if ((mode == LDB_SIN0) || (mode == LDB_SIN1)) {
reg &= ~(LVDS0_MUX_CTL_MASK | LVDS1_MUX_CTL_MASK);
channel = mode - LDB_SIN0;
} else if ((mode == LDB_SIN0) || (mode == LDB_SIN1)) {
reg &= ~(LVDS0_MUX_CTL_MASK | LVDS1_MUX_CTL_MASK);
channel = mode - LDB_SIN0;
reg |= ROUTE_IPU_DI(ipu, di) << shift;
dev_dbg(&ldb->pdev->dev,
"Single mode channel %d route to IPU%d-DI%d\n",
reg |= ROUTE_IPU_DI(ipu, di) << shift;
dev_dbg(&ldb->pdev->dev,
"Single mode channel %d route to IPU%d-DI%d\n",
/* if input format not valid, make RGB666 as default*/
if (!valid_mode(setting->if_fmt)) {
/* if input format not valid, make RGB666 as default*/
if (!valid_mode(setting->if_fmt)) {
ret = ldb->mode - LDB_SIN0;
if (plat_data->disp_id != ret) {
dev_warn(&ldb->pdev->dev,
ret = ldb->mode - LDB_SIN0;
if (plat_data->disp_id != ret) {
dev_warn(&ldb->pdev->dev,
plat_data->disp_id, ret, ret);
plat_data->disp_id = ret;
}
plat_data->disp_id, ret, ret);
plat_data->disp_id = ret;
}
return -EINVAL;
}
if ((!plat_data->disp_id && ldb->mode == LDB_SEP1) ||
(plat_data->disp_id && ldb->mode == LDB_SEP0)) {
dev_dbg(&ldb->pdev->dev,
return -EINVAL;
}
if ((!plat_data->disp_id && ldb->mode == LDB_SEP1) ||
(plat_data->disp_id && ldb->mode == LDB_SEP0)) {
dev_dbg(&ldb->pdev->dev,
ipu_id = plat_data->ipu_id;
disp_id = plat_data->disp_id;
plat_data->ipu_id = plat_data->sec_ipu_id;
ipu_id = plat_data->ipu_id;
disp_id = plat_data->disp_id;
plat_data->ipu_id = plat_data->sec_ipu_id;
reg |= LDB_CH1_MODE_EN_TO_DI1;
ch_mask = LDB_CH1_MODE_MASK;
ch_val = reg & LDB_CH1_MODE_MASK;
reg |= LDB_CH1_MODE_EN_TO_DI1;
ch_mask = LDB_CH1_MODE_MASK;
ch_val = reg & LDB_CH1_MODE_MASK;
(ldb->mode == LDB_DUL_DI1) ||
(ldb->mode == LDB_SIN0) ||
(ldb->mode == LDB_SIN1)) {
(ldb->mode == LDB_DUL_DI1) ||
(ldb->mode == LDB_SIN0) ||
(ldb->mode == LDB_SIN1)) {
- dev_err(&ldb->pdev->dev, "Err: for second ldb disp in"
- "separate mode, DI should be different!\n");
+ dev_err(&ldb->pdev->dev, "Err: for second ldb disp in separate mode, DI should be different!\n");
ldb->setting[setting_idx].ldb_di_clk = clk_get(&ldb->pdev->dev,
ldb_clk);
if (IS_ERR(ldb->setting[setting_idx].ldb_di_clk)) {
ldb->setting[setting_idx].ldb_di_clk = clk_get(&ldb->pdev->dev,
ldb_clk);
if (IS_ERR(ldb->setting[setting_idx].ldb_di_clk)) {
- dev_err(&ldb->pdev->dev, "get ldb clk failed\n");
+ dev_err(&ldb->pdev->dev, "Failed to get %s clk: %ld\n",
+ ldb_clk, PTR_ERR(ldb->setting[setting_idx].ldb_di_clk));
return PTR_ERR(ldb->setting[setting_idx].ldb_di_clk);
}
ldb->setting[setting_idx].div_3_5_clk = clk_get(&ldb->pdev->dev,
div_3_5_clk);
if (IS_ERR(ldb->setting[setting_idx].div_3_5_clk)) {
return PTR_ERR(ldb->setting[setting_idx].ldb_di_clk);
}
ldb->setting[setting_idx].div_3_5_clk = clk_get(&ldb->pdev->dev,
div_3_5_clk);
if (IS_ERR(ldb->setting[setting_idx].div_3_5_clk)) {
- dev_err(&ldb->pdev->dev, "get div 3.5 clk failed\n");
+ dev_err(&ldb->pdev->dev, "Failed to get %s clk: %ld\n",
+ div_3_5_clk, PTR_ERR(ldb->setting[setting_idx].div_3_5_clk));
return PTR_ERR(ldb->setting[setting_idx].div_3_5_clk);
}
ldb->setting[setting_idx].div_7_clk = clk_get(&ldb->pdev->dev,
div_7_clk);
if (IS_ERR(ldb->setting[setting_idx].div_7_clk)) {
return PTR_ERR(ldb->setting[setting_idx].div_3_5_clk);
}
ldb->setting[setting_idx].div_7_clk = clk_get(&ldb->pdev->dev,
div_7_clk);
if (IS_ERR(ldb->setting[setting_idx].div_7_clk)) {
- dev_err(&ldb->pdev->dev, "get div 7 clk failed\n");
+ dev_err(&ldb->pdev->dev, "Failed to get %s clk: %ld\n",
+ div_7_clk, PTR_ERR(ldb->setting[setting_idx].div_7_clk));
return PTR_ERR(ldb->setting[setting_idx].div_7_clk);
}
ldb->setting[setting_idx].div_sel_clk = clk_get(&ldb->pdev->dev,
div_sel_clk);
if (IS_ERR(ldb->setting[setting_idx].div_sel_clk)) {
return PTR_ERR(ldb->setting[setting_idx].div_7_clk);
}
ldb->setting[setting_idx].div_sel_clk = clk_get(&ldb->pdev->dev,
div_sel_clk);
if (IS_ERR(ldb->setting[setting_idx].div_sel_clk)) {
- dev_err(&ldb->pdev->dev, "get div sel clk failed\n");
+ dev_err(&ldb->pdev->dev, "Failed to get %s clk: %ld\n",
+ div_sel_clk, PTR_ERR(ldb->setting[setting_idx].div_sel_clk));
ldb->setting[setting_idx].di_clk = clk_get(&ldb->pdev->dev,
di_clk);
if (IS_ERR(ldb->setting[setting_idx].di_clk)) {
ldb->setting[setting_idx].di_clk = clk_get(&ldb->pdev->dev,
di_clk);
if (IS_ERR(ldb->setting[setting_idx].di_clk)) {
- dev_err(&ldb->pdev->dev, "get di clk failed\n");
+ dev_err(&ldb->pdev->dev, "Failed to get %s clk: %ld\n",
+ di_clk, PTR_ERR(ldb->setting[setting_idx].di_clk));
ret = clk_set_parent(ldb->setting[setting_idx].di_clk,
ldb->setting[setting_idx].ldb_di_clk);
if (ret) {
ret = clk_set_parent(ldb->setting[setting_idx].di_clk,
ldb->setting[setting_idx].ldb_di_clk);
if (ret) {
ret = clk_set_parent(ldb->setting[setting_idx].div_sel_clk,
ldb->setting[setting_idx].div_3_5_clk);
if (ret) {
ret = clk_set_parent(ldb->setting[setting_idx].div_sel_clk,
ldb->setting[setting_idx].div_3_5_clk);
if (ret) {
return ret;
}
} else {
ret = clk_set_parent(ldb->setting[setting_idx].div_sel_clk,
ldb->setting[setting_idx].div_7_clk);
if (ret) {
return ret;
}
} else {
ret = clk_set_parent(ldb->setting[setting_idx].div_sel_clk,
ldb->setting[setting_idx].div_7_clk);
if (ret) {