|
@@ -339,6 +339,7 @@ enum rcar_csi2_pads {
|
|
|
|
|
|
struct rcar_csi2_info {
|
|
struct rcar_csi2_info {
|
|
int (*init_phtw)(struct rcar_csi2 *priv, unsigned int mbps);
|
|
int (*init_phtw)(struct rcar_csi2 *priv, unsigned int mbps);
|
|
|
|
+ int (*confirm_start)(struct rcar_csi2 *priv);
|
|
const struct rcsi2_mbps_reg *hsfreqrange;
|
|
const struct rcsi2_mbps_reg *hsfreqrange;
|
|
unsigned int csi0clkfreqrange;
|
|
unsigned int csi0clkfreqrange;
|
|
bool clear_ulps;
|
|
bool clear_ulps;
|
|
@@ -545,6 +546,13 @@ static int rcsi2_start(struct rcar_csi2 *priv)
|
|
if (ret)
|
|
if (ret)
|
|
return ret;
|
|
return ret;
|
|
|
|
|
|
|
|
+ /* Confirm start */
|
|
|
|
+ if (priv->info->confirm_start) {
|
|
|
|
+ ret = priv->info->confirm_start(priv);
|
|
|
|
+ if (ret)
|
|
|
|
+ return ret;
|
|
|
|
+ }
|
|
|
|
+
|
|
/* Clear Ultra Low Power interrupt. */
|
|
/* Clear Ultra Low Power interrupt. */
|
|
if (priv->info->clear_ulps)
|
|
if (priv->info->clear_ulps)
|
|
rcsi2_write(priv, INTSTATE_REG,
|
|
rcsi2_write(priv, INTSTATE_REG,
|
|
@@ -880,6 +888,11 @@ static int rcsi2_init_phtw_h3_v3h_m3n(struct rcar_csi2 *priv, unsigned int mbps)
|
|
}
|
|
}
|
|
|
|
|
|
static int rcsi2_init_phtw_v3m_e3(struct rcar_csi2 *priv, unsigned int mbps)
|
|
static int rcsi2_init_phtw_v3m_e3(struct rcar_csi2 *priv, unsigned int mbps)
|
|
|
|
+{
|
|
|
|
+ return rcsi2_phtw_write_mbps(priv, mbps, phtw_mbps_v3m_e3, 0x44);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static int rcsi2_confirm_start_v3m_e3(struct rcar_csi2 *priv)
|
|
{
|
|
{
|
|
static const struct phtw_value step1[] = {
|
|
static const struct phtw_value step1[] = {
|
|
{ .data = 0xed, .code = 0x34 },
|
|
{ .data = 0xed, .code = 0x34 },
|
|
@@ -890,12 +903,6 @@ static int rcsi2_init_phtw_v3m_e3(struct rcar_csi2 *priv, unsigned int mbps)
|
|
{ /* sentinel */ },
|
|
{ /* sentinel */ },
|
|
};
|
|
};
|
|
|
|
|
|
- int ret;
|
|
|
|
-
|
|
|
|
- ret = rcsi2_phtw_write_mbps(priv, mbps, phtw_mbps_v3m_e3, 0x44);
|
|
|
|
- if (ret)
|
|
|
|
- return ret;
|
|
|
|
-
|
|
|
|
return rcsi2_phtw_write_array(priv, step1);
|
|
return rcsi2_phtw_write_array(priv, step1);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -949,6 +956,7 @@ static const struct rcar_csi2_info rcar_csi2_info_r8a77965 = {
|
|
|
|
|
|
static const struct rcar_csi2_info rcar_csi2_info_r8a77970 = {
|
|
static const struct rcar_csi2_info rcar_csi2_info_r8a77970 = {
|
|
.init_phtw = rcsi2_init_phtw_v3m_e3,
|
|
.init_phtw = rcsi2_init_phtw_v3m_e3,
|
|
|
|
+ .confirm_start = rcsi2_confirm_start_v3m_e3,
|
|
};
|
|
};
|
|
|
|
|
|
static const struct of_device_id rcar_csi2_of_table[] = {
|
|
static const struct of_device_id rcar_csi2_of_table[] = {
|