bool capless;  /* Headphone outputs configured in capless mode */
 
        bool shared_lrclk;  /* DAC and ADC LRCLKs are wired together */
+
+       /*
+        * Setup for headphone detection
+        *
+        * hp_cfg[0]: HPSEL[1:0] of R48 (Additional Control 4)
+        * hp_cfg[1]: {HPSWEN:HPSWPOL} of R24 (Additional Control 2).
+        * hp_cfg[2]: {TOCLKSEL:TOEN} of R23 (Additional Control 1).
+        */
+       u32 hp_cfg[3];
+
+       /*
+        * Setup for gpio configuration
+        *
+        * gpio_cfg[0]: ALRCGPIO of R9 (Audio interface)
+        * gpio_cfg[1]: {GPIOPOL:GPIOSEL[2:0]} of R48 (Additional Control 4).
+        */
+       u32 gpio_cfg[2];
 };
 
 #endif
 
 
        if (of_property_read_bool(np, "wlf,shared-lrclk"))
                pdata->shared_lrclk = true;
+
+       of_property_read_u32_array(np, "wlf,gpio-cfg", pdata->gpio_cfg,
+                                  ARRAY_SIZE(pdata->gpio_cfg));
+
+       of_property_read_u32_array(np, "wlf,hp-cfg", pdata->hp_cfg,
+                                  ARRAY_SIZE(pdata->hp_cfg));
 }
 
 static int wm8960_i2c_probe(struct i2c_client *i2c,
        regmap_update_bits(wm8960->regmap, WM8960_LOUT2, 0x100, 0x100);
        regmap_update_bits(wm8960->regmap, WM8960_ROUT2, 0x100, 0x100);
 
+       /* ADCLRC pin configured as GPIO. */
+       regmap_update_bits(wm8960->regmap, WM8960_IFACE2, 1 << 6,
+                          wm8960->pdata.gpio_cfg[0] << 6);
+       regmap_update_bits(wm8960->regmap, WM8960_ADDCTL4, 0xF << 4,
+                          wm8960->pdata.gpio_cfg[1] << 4);
+
+       /* Enable headphone jack detect */
+       regmap_update_bits(wm8960->regmap, WM8960_ADDCTL4, 3 << 2,
+                          wm8960->pdata.hp_cfg[0] << 2);
+       regmap_update_bits(wm8960->regmap, WM8960_ADDCTL2, 3 << 5,
+                          wm8960->pdata.hp_cfg[1] << 5);
+       regmap_update_bits(wm8960->regmap, WM8960_ADDCTL1, 3,
+                          wm8960->pdata.hp_cfg[2]);
+
        i2c_set_clientdata(i2c, wm8960);
 
        ret = devm_snd_soc_register_component(&i2c->dev,