void __iomem *regs;
        struct i2c_adapter adapter;
        struct i2c_board_info *gpu_ccgx_ucsi;
+       struct i2c_client *ccgx_client;
 };
 
 static void gpu_enable_i2c_bus(struct gpu_i2c_dev *i2cd)
 
 static int gpu_populate_client(struct gpu_i2c_dev *i2cd, int irq)
 {
-       struct i2c_client *ccgx_client;
-
        i2cd->gpu_ccgx_ucsi = devm_kzalloc(i2cd->dev,
                                           sizeof(*i2cd->gpu_ccgx_ucsi),
                                           GFP_KERNEL);
        i2cd->gpu_ccgx_ucsi->addr = 0x8;
        i2cd->gpu_ccgx_ucsi->irq = irq;
        i2cd->gpu_ccgx_ucsi->properties = ccgx_props;
-       ccgx_client = i2c_new_device(&i2cd->adapter, i2cd->gpu_ccgx_ucsi);
-       if (!ccgx_client)
+       i2cd->ccgx_client = i2c_new_device(&i2cd->adapter, i2cd->gpu_ccgx_ucsi);
+       if (!i2cd->ccgx_client)
                return -ENODEV;
 
        return 0;
        struct gpu_i2c_dev *i2cd = dev_get_drvdata(dev);
 
        gpu_enable_i2c_bus(i2cd);
+       /*
+        * Runtime resume ccgx client so that it can see for any
+        * connector change event. Old ccg firmware has known
+        * issue of not triggering interrupt when a device is
+        * connected to runtime resume the controller.
+        */
+       pm_request_resume(&i2cd->ccgx_client->dev);
        return 0;
 }