@@ -31,6 +31,9 @@
#include "adv748x.h"
+static unsigned int txavc;
+static unsigned int txbvc;
+
/* -----------------------------------------------------------------------------
* Register manipulation
*/
@@ -751,6 +754,7 @@ static int adv748x_probe(struct i2c_client *client,
}
/* Initialise TXA */
+ state->txa.vc = txavc;
ret = adv748x_csi2_init(state, &state->txa);
if (ret) {
adv_err(state, "Failed to probe TXA");
@@ -758,6 +762,7 @@ static int adv748x_probe(struct i2c_client *client,
}
/* Initialise TXB */
+ state->txb.vc = txbvc;
ret = adv748x_csi2_init(state, &state->txb);
if (ret) {
adv_err(state, "Failed to probe TXB");
@@ -827,6 +832,11 @@ static struct i2c_driver adv748x_driver = {
module_i2c_driver(adv748x_driver);
+module_param(txavc, uint, 0644);
+MODULE_PARM_DESC(txavc, "Virtual Channel for TXA");
+module_param(txbvc, uint, 0644);
+MODULE_PARM_DESC(txbvc, "Virtual Channel for TXB");
+
MODULE_AUTHOR("Kieran Bingham <kieran.bingham@ideasonboard.com>");
MODULE_DESCRIPTION("ADV748X video decoder");
MODULE_LICENSE("GPL v2");
@@ -280,7 +280,7 @@ int adv748x_csi2_init(struct adv748x_state *state, struct adv748x_csi2 *tx)
}
/* Initialise the virtual channel */
- adv748x_csi2_set_virtual_channel(tx, 0);
+ adv748x_csi2_set_virtual_channel(tx, tx->vc);
adv748x_subdev_init(&tx->sd, state, &adv748x_csi2_ops,
MEDIA_ENT_F_UNKNOWN,
@@ -92,6 +92,7 @@ enum adv748x_csi2_pads {
struct adv748x_csi2 {
struct adv748x_state *state;
+ unsigned int vc;
struct v4l2_mbus_framefmt format;
unsigned int page;
The hardware can output on any of the 4 (0-3) Virtual Channels of the CSI-2 bus. Add a module parameter each for TXA and TXB to allow the user to specify which channel should be used. Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> --- drivers/media/i2c/adv748x/adv748x-core.c | 10 ++++++++++ drivers/media/i2c/adv748x/adv748x-csi2.c | 2 +- drivers/media/i2c/adv748x/adv748x.h | 1 + 3 files changed, 12 insertions(+), 1 deletion(-)