// In gx_i2c_xfer(), add recovery if (status & I2C_STAT_BUS_BUSY) gx_i2c_reset(adap); mdelay(1);
GX PM is notoriously minimal : only suspend/resume for system sleep, no runtime PM. Causes high idle power. gx chip driver
#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) // In gx_i2c_xfer(), add recovery if (status &
static irqreturn_t gx_disp_irq(int irq, void *dev_id) // In gx_i2c_xfer()
gx_disp: failed to set mode → EDID read failed. Force mode via kernel param: video=HDMI-A-1:1920x1080@60 .
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);