Gx Chip Driver -

writel_relaxed(val, i2c->base + reg);

GX PM is notoriously minimal : only suspend/resume for system sleep, no runtime PM. Causes high idle power.

Userspace (GStreamer V4L2) → ioctl(VIDIOC_QBUF) → driver copies bitstream to SRAM/CMA → triggers VPU via mailbox → VPU interrupts on frame done → driver queues decoded frame to capture buffer. gx chip driver

static irqreturn_t gx_disp_irq(int irq, void *dev_id)

Example (display vsync):

struct gx_mem_region phys_addr_t start; size_t size; void *cookie; struct list_head list; ; // Allocation from reserved CMA pool void *gx_mem_alloc(size_t size, u32 align); void gx_mem_free(void *handle);

#define I2C_CON 0x00 #define I2C_TAR 0x04 #define I2C_DATA_CMD 0x10 #define I2C_ENABLE 0x6C static inline void gx_i2c_writel(struct gx_i2c *i2c, u32 val, u32 reg) static irqreturn_t gx_disp_irq(int irq

gx_disp: failed to set mode → EDID read failed. Force mode via kernel param: video=HDMI-A-1:1920x1080@60 .