}
};
-typedef int (*mipi_csis_phy_reset_t)(struct csi_state *state);
-
#define mipi_csis_write(__csis, __r, __v) writel(__v, __csis->regs + __r)
#define mipi_csis_read(__csis, __r) readl(__csis->regs + __r)
return -EINVAL;
}
phy_reset_fn = of_id->data;
+ state->phy_reset_fn = phy_reset_fn;
state->gasket = syscon_regmap_lookup_by_phandle(dev->of_node, "csi-gpr");
if (IS_ERR(state->gasket)) {
disp_mix_clks_enable(state->clk_enable, true);
disp_mix_sft_rstn(state->soft_resetn, false);
+ if (state->phy_reset_fn)
+ state->phy_reset_fn(state);
+
return 0;
}
unsigned int counter;
};
+struct csi_state;
+typedef int (*mipi_csis_phy_reset_t)(struct csi_state *state);
+
static const struct mipi_csis_event mipi_csis_events[] = {
/* Errors */
{ MIPI_CSIS_INTSRC_ERR_SOT_HS, "SOT Error" },
struct reset_control *soft_resetn;
struct reset_control *clk_enable;
struct reset_control *mipi_reset;
+
+ mipi_csis_phy_reset_t phy_reset_fn;
};
/**