This driver suffers from a bad initial design that results in various aspects being intricated, making it difficult to scale to new codecs and to add encoding support in the future. Before leaving the staging area, it should be reworked to clearly distinguish between different aspects: - platform, with resources management, interrupt handler, watchdog, v4l2 and m2m devices registration; - proc, with video device registration and related operations; - context, with m2m context, queue and controls management; - engine, with each individual codec job execution and codec-specific operation callbacks; This will make it possible to register two different procs (decoder and encoder) while sharing significant common infrastructure, common v4l2 and m2m devices but exposing distinct video devices.