unsignedint ipu6_isys_mbus_code_to_bpp(u32 code)
{ switch (code) { case MEDIA_BUS_FMT_RGB888_1X24: case MEDIA_BUS_FMT_META_24: return 24; case MEDIA_BUS_FMT_RGB565_1X16: case MEDIA_BUS_FMT_UYVY8_1X16: case MEDIA_BUS_FMT_YUYV8_1X16: case MEDIA_BUS_FMT_META_16: return 16; case MEDIA_BUS_FMT_SBGGR12_1X12: case MEDIA_BUS_FMT_SGBRG12_1X12: case MEDIA_BUS_FMT_SGRBG12_1X12: case MEDIA_BUS_FMT_SRGGB12_1X12: case MEDIA_BUS_FMT_META_12: return 12; case MEDIA_BUS_FMT_SBGGR10_1X10: case MEDIA_BUS_FMT_SGBRG10_1X10: case MEDIA_BUS_FMT_SGRBG10_1X10: case MEDIA_BUS_FMT_SRGGB10_1X10: case MEDIA_BUS_FMT_META_10: return 10; case MEDIA_BUS_FMT_SBGGR8_1X8: case MEDIA_BUS_FMT_SGBRG8_1X8: case MEDIA_BUS_FMT_SGRBG8_1X8: case MEDIA_BUS_FMT_SRGGB8_1X8: case MEDIA_BUS_FMT_META_8: return 8; default:
WARN_ON(1); return 8;
}
}
unsignedint ipu6_isys_mbus_code_to_mipi(u32 code)
{ switch (code) { case MEDIA_BUS_FMT_RGB565_1X16: return MIPI_CSI2_DT_RGB565; case MEDIA_BUS_FMT_RGB888_1X24: return MIPI_CSI2_DT_RGB888; case MEDIA_BUS_FMT_UYVY8_1X16: case MEDIA_BUS_FMT_YUYV8_1X16: return MIPI_CSI2_DT_YUV422_8B; case MEDIA_BUS_FMT_SBGGR16_1X16: case MEDIA_BUS_FMT_SGBRG16_1X16: case MEDIA_BUS_FMT_SGRBG16_1X16: case MEDIA_BUS_FMT_SRGGB16_1X16: return MIPI_CSI2_DT_RAW16; case MEDIA_BUS_FMT_SBGGR12_1X12: case MEDIA_BUS_FMT_SGBRG12_1X12: case MEDIA_BUS_FMT_SGRBG12_1X12: case MEDIA_BUS_FMT_SRGGB12_1X12: return MIPI_CSI2_DT_RAW12; case MEDIA_BUS_FMT_SBGGR10_1X10: case MEDIA_BUS_FMT_SGBRG10_1X10: case MEDIA_BUS_FMT_SGRBG10_1X10: case MEDIA_BUS_FMT_SRGGB10_1X10: return MIPI_CSI2_DT_RAW10; case MEDIA_BUS_FMT_SBGGR8_1X8: case MEDIA_BUS_FMT_SGBRG8_1X8: case MEDIA_BUS_FMT_SGRBG8_1X8: case MEDIA_BUS_FMT_SRGGB8_1X8: return MIPI_CSI2_DT_RAW8; case MEDIA_BUS_FMT_META_8: case MEDIA_BUS_FMT_META_10: case MEDIA_BUS_FMT_META_12: case MEDIA_BUS_FMT_META_16: case MEDIA_BUS_FMT_META_24: return MIPI_CSI2_DT_EMBEDDED_8B; default: /* return unavailable MIPI data type - 0x3f */
WARN_ON(1); return 0x3f;
}
}
bool ipu6_isys_is_bayer_format(u32 code)
{ switch (ipu6_isys_mbus_code_to_mipi(code)) { case MIPI_CSI2_DT_RAW8: case MIPI_CSI2_DT_RAW10: case MIPI_CSI2_DT_RAW12: case MIPI_CSI2_DT_RAW14: case MIPI_CSI2_DT_RAW16: case MIPI_CSI2_DT_RAW20: case MIPI_CSI2_DT_RAW24: case MIPI_CSI2_DT_RAW28: returntrue; default: returnfalse;
}
}
for (i = 0; asd->supported_codes[i]; i++) { if (asd->supported_codes[i] == format->format.code) {
code = asd->supported_codes[i]; break;
}
}
format->format.code = code;
format->format.field = V4L2_FIELD_NONE;
/* Store the format and propagate it to the source pad. */
fmt = v4l2_subdev_state_get_format(state, format->pad, format->stream); if (!fmt) return -EINVAL;
*fmt = format->format;
if (!(sd->entity.pads[format->pad].flags & MEDIA_PAD_FL_SINK)) return 0;
/* propagate format to following source pad */
fmt = v4l2_subdev_state_get_opposite_stream_format(state, format->pad,
format->stream); if (!fmt) return -EINVAL;
*fmt = format->format;
ret = v4l2_subdev_routing_find_opposite_end(&state->routing,
format->pad,
format->stream,
&other_pad,
&other_stream); if (ret) return -EINVAL;
state = v4l2_subdev_lock_and_get_active_state(sd);
rect = v4l2_subdev_state_get_crop(state, pad, stream); if (rect)
*crop = *rect;
v4l2_subdev_unlock_state(state);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.