Commit 4eb2f557 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

media: v4l2-subdev: better document IO pin configuration flags

Convert V4L2_SUBDEV_IO_PIN_* to enums, use BIT() and document
via kernel-doc.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 0722ef82
...@@ -201,14 +201,14 @@ static int cx23885_s_io_pin_config(struct v4l2_subdev *sd, size_t n, ...@@ -201,14 +201,14 @@ static int cx23885_s_io_pin_config(struct v4l2_subdev *sd, size_t n,
} else { } else {
/* IRQ_N */ /* IRQ_N */
if (p[i].flags & if (p[i].flags &
(V4L2_SUBDEV_IO_PIN_DISABLE | (BIT(V4L2_SUBDEV_IO_PIN_DISABLE) |
V4L2_SUBDEV_IO_PIN_INPUT)) { BIT(V4L2_SUBDEV_IO_PIN_INPUT))) {
pin_ctrl &= ~(0x1 << 25); pin_ctrl &= ~(0x1 << 25);
} else { } else {
pin_ctrl |= (0x1 << 25); pin_ctrl |= (0x1 << 25);
} }
if (p[i].flags & if (p[i].flags &
V4L2_SUBDEV_IO_PIN_ACTIVE_LOW) { BIT(V4L2_SUBDEV_IO_PIN_ACTIVE_LOW)) {
pin_ctrl &= ~(0x1 << 24); pin_ctrl &= ~(0x1 << 24);
} else { } else {
pin_ctrl |= (0x1 << 24); pin_ctrl |= (0x1 << 24);
...@@ -224,7 +224,7 @@ static int cx23885_s_io_pin_config(struct v4l2_subdev *sd, size_t n, ...@@ -224,7 +224,7 @@ static int cx23885_s_io_pin_config(struct v4l2_subdev *sd, size_t n,
} else { } else {
/* GPIO19 */ /* GPIO19 */
gpio_oe &= ~(0x1 << 0); gpio_oe &= ~(0x1 << 0);
if (p[i].flags & V4L2_SUBDEV_IO_PIN_SET_VALUE) { if (p[i].flags & BIT(V4L2_SUBDEV_IO_PIN_SET_VALUE)) {
gpio_data &= ~(0x1 << 0); gpio_data &= ~(0x1 << 0);
gpio_data |= ((p[i].value & 0x1) << 0); gpio_data |= ((p[i].value & 0x1) << 0);
} }
...@@ -236,7 +236,7 @@ static int cx23885_s_io_pin_config(struct v4l2_subdev *sd, size_t n, ...@@ -236,7 +236,7 @@ static int cx23885_s_io_pin_config(struct v4l2_subdev *sd, size_t n,
if (p[i].function != CX23885_PAD_GPIO20) { if (p[i].function != CX23885_PAD_GPIO20) {
/* IR_TX */ /* IR_TX */
gpio_oe |= (0x1 << 1); gpio_oe |= (0x1 << 1);
if (p[i].flags & V4L2_SUBDEV_IO_PIN_DISABLE) if (p[i].flags & BIT(V4L2_SUBDEV_IO_PIN_DISABLE))
pin_ctrl &= ~(0x1 << 10); pin_ctrl &= ~(0x1 << 10);
else else
pin_ctrl |= (0x1 << 10); pin_ctrl |= (0x1 << 10);
...@@ -245,7 +245,7 @@ static int cx23885_s_io_pin_config(struct v4l2_subdev *sd, size_t n, ...@@ -245,7 +245,7 @@ static int cx23885_s_io_pin_config(struct v4l2_subdev *sd, size_t n,
} else { } else {
/* GPIO20 */ /* GPIO20 */
gpio_oe &= ~(0x1 << 1); gpio_oe &= ~(0x1 << 1);
if (p[i].flags & V4L2_SUBDEV_IO_PIN_SET_VALUE) { if (p[i].flags & BIT(V4L2_SUBDEV_IO_PIN_SET_VALUE)) {
gpio_data &= ~(0x1 << 1); gpio_data &= ~(0x1 << 1);
gpio_data |= ((p[i].value & 0x1) << 1); gpio_data |= ((p[i].value & 0x1) << 1);
} }
...@@ -263,7 +263,7 @@ static int cx23885_s_io_pin_config(struct v4l2_subdev *sd, size_t n, ...@@ -263,7 +263,7 @@ static int cx23885_s_io_pin_config(struct v4l2_subdev *sd, size_t n,
} else { } else {
/* GPIO21 */ /* GPIO21 */
gpio_oe &= ~(0x1 << 2); gpio_oe &= ~(0x1 << 2);
if (p[i].flags & V4L2_SUBDEV_IO_PIN_SET_VALUE) { if (p[i].flags & BIT(V4L2_SUBDEV_IO_PIN_SET_VALUE)) {
gpio_data &= ~(0x1 << 2); gpio_data &= ~(0x1 << 2);
gpio_data |= ((p[i].value & 0x1) << 2); gpio_data |= ((p[i].value & 0x1) << 2);
} }
...@@ -281,7 +281,7 @@ static int cx23885_s_io_pin_config(struct v4l2_subdev *sd, size_t n, ...@@ -281,7 +281,7 @@ static int cx23885_s_io_pin_config(struct v4l2_subdev *sd, size_t n,
} else { } else {
/* GPIO22 */ /* GPIO22 */
gpio_oe &= ~(0x1 << 3); gpio_oe &= ~(0x1 << 3);
if (p[i].flags & V4L2_SUBDEV_IO_PIN_SET_VALUE) { if (p[i].flags & BIT(V4L2_SUBDEV_IO_PIN_SET_VALUE)) {
gpio_data &= ~(0x1 << 3); gpio_data &= ~(0x1 << 3);
gpio_data |= ((p[i].value & 0x1) << 3); gpio_data |= ((p[i].value & 0x1) << 3);
} }
...@@ -299,7 +299,7 @@ static int cx23885_s_io_pin_config(struct v4l2_subdev *sd, size_t n, ...@@ -299,7 +299,7 @@ static int cx23885_s_io_pin_config(struct v4l2_subdev *sd, size_t n,
} else { } else {
/* GPIO23 */ /* GPIO23 */
gpio_oe &= ~(0x1 << 4); gpio_oe &= ~(0x1 << 4);
if (p[i].flags & V4L2_SUBDEV_IO_PIN_SET_VALUE) { if (p[i].flags & BIT(V4L2_SUBDEV_IO_PIN_SET_VALUE)) {
gpio_data &= ~(0x1 << 4); gpio_data &= ~(0x1 << 4);
gpio_data |= ((p[i].value & 0x1) << 4); gpio_data |= ((p[i].value & 0x1) << 4);
} }
......
...@@ -1816,13 +1816,13 @@ int cx23885_ir_init(struct cx23885_dev *dev) ...@@ -1816,13 +1816,13 @@ int cx23885_ir_init(struct cx23885_dev *dev)
{ {
static struct v4l2_subdev_io_pin_config ir_rxtx_pin_cfg[] = { static struct v4l2_subdev_io_pin_config ir_rxtx_pin_cfg[] = {
{ {
.flags = V4L2_SUBDEV_IO_PIN_INPUT, .flags = BIT(V4L2_SUBDEV_IO_PIN_INPUT),
.pin = CX23885_PIN_IR_RX_GPIO19, .pin = CX23885_PIN_IR_RX_GPIO19,
.function = CX23885_PAD_IR_RX, .function = CX23885_PAD_IR_RX,
.value = 0, .value = 0,
.strength = CX25840_PIN_DRIVE_MEDIUM, .strength = CX25840_PIN_DRIVE_MEDIUM,
}, { }, {
.flags = V4L2_SUBDEV_IO_PIN_OUTPUT, .flags = BIT(V4L2_SUBDEV_IO_PIN_OUTPUT),
.pin = CX23885_PIN_IR_TX_GPIO20, .pin = CX23885_PIN_IR_TX_GPIO20,
.function = CX23885_PAD_IR_TX, .function = CX23885_PAD_IR_TX,
.value = 0, .value = 0,
...@@ -1833,7 +1833,7 @@ int cx23885_ir_init(struct cx23885_dev *dev) ...@@ -1833,7 +1833,7 @@ int cx23885_ir_init(struct cx23885_dev *dev)
static struct v4l2_subdev_io_pin_config ir_rx_pin_cfg[] = { static struct v4l2_subdev_io_pin_config ir_rx_pin_cfg[] = {
{ {
.flags = V4L2_SUBDEV_IO_PIN_INPUT, .flags = BIT(V4L2_SUBDEV_IO_PIN_INPUT),
.pin = CX23885_PIN_IR_RX_GPIO19, .pin = CX23885_PIN_IR_RX_GPIO19,
.function = CX23885_PAD_IR_RX, .function = CX23885_PAD_IR_RX,
.value = 0, .value = 0,
......
...@@ -108,22 +108,31 @@ struct v4l2_decode_vbi_line { ...@@ -108,22 +108,31 @@ struct v4l2_decode_vbi_line {
* not yet implemented) since ops provide proper type-checking. * not yet implemented) since ops provide proper type-checking.
*/ */
/* Subdevice external IO pin configuration */ /**
#define V4L2_SUBDEV_IO_PIN_DISABLE (1 << 0) /* ENABLE assumed */ * enum v4l2_subdev_io_pin_bits - Subdevice external IO pin configuration
#define V4L2_SUBDEV_IO_PIN_OUTPUT (1 << 1) * bits
#define V4L2_SUBDEV_IO_PIN_INPUT (1 << 2) *
#define V4L2_SUBDEV_IO_PIN_SET_VALUE (1 << 3) /* Set output value */ * @V4L2_SUBDEV_IO_PIN_DISABLE: disables a pin config. ENABLE assumed.
#define V4L2_SUBDEV_IO_PIN_ACTIVE_LOW (1 << 4) /* ACTIVE HIGH assumed */ * @V4L2_SUBDEV_IO_PIN_OUTPUT: set it if pin is an output.
* @V4L2_SUBDEV_IO_PIN_INPUT: set it if pin is an input.
* @V4L2_SUBDEV_IO_PIN_SET_VALUE: to set the output value via
* &struct v4l2_subdev_io_pin_config->value.
* @V4L2_SUBDEV_IO_PIN_ACTIVE_LOW: pin active is bit 0.
* Otherwise, ACTIVE HIGH is assumed.
*/
enum v4l2_subdev_io_pin_bits {
V4L2_SUBDEV_IO_PIN_DISABLE = 0,
V4L2_SUBDEV_IO_PIN_OUTPUT = 1,
V4L2_SUBDEV_IO_PIN_INPUT = 2,
V4L2_SUBDEV_IO_PIN_SET_VALUE = 3,
V4L2_SUBDEV_IO_PIN_ACTIVE_LOW = 4,
};
/** /**
* struct v4l2_subdev_io_pin_config - Subdevice external IO pin configuration * struct v4l2_subdev_io_pin_config - Subdevice external IO pin configuration
* *
* @flags: bitmask with flags for this pin's config: * @flags: bitmask with flags for this pin's config, whose bits are defined by
* %V4L2_SUBDEV_IO_PIN_DISABLE - disables a pin config, * &enum v4l2_subdev_io_pin_bits.
* %V4L2_SUBDEV_IO_PIN_OUTPUT - if pin is an output,
* %V4L2_SUBDEV_IO_PIN_INPUT - if pin is an input,
* %V4L2_SUBDEV_IO_PIN_SET_VALUE - to set the output value via @value
* and %V4L2_SUBDEV_IO_PIN_ACTIVE_LOW - if active is 0.
* @pin: Chip external IO pin to configure * @pin: Chip external IO pin to configure
* @function: Internal signal pad/function to route to IO pin * @function: Internal signal pad/function to route to IO pin
* @value: Initial value for pin - e.g. GPIO output value * @value: Initial value for pin - e.g. GPIO output value
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment