DA7219_AAD_JACK_INS_DEB_1S,
 };
 
+enum da7219_aad_jack_ins_det_pty {
+       DA7219_AAD_JACK_INS_DET_PTY_LOW = 0,
+       DA7219_AAD_JACK_INS_DET_PTY_HIGH,
+};
+
 enum da7219_aad_jack_det_rate {
        DA7219_AAD_JACK_DET_RATE_32_64MS = 0,
        DA7219_AAD_JACK_DET_RATE_64_128MS,
        enum da7219_aad_btn_cfg btn_cfg;
        enum da7219_aad_mic_det_thr mic_det_thr;
        enum da7219_aad_jack_ins_deb jack_ins_deb;
+       enum da7219_aad_jack_ins_det_pty jack_ins_det_pty;
        enum da7219_aad_jack_det_rate jack_det_rate;
        enum da7219_aad_jack_rem_deb jack_rem_deb;
 
 
        }
 }
 
+static enum da7219_aad_jack_ins_det_pty
+       da7219_aad_fw_jack_ins_det_pty(struct device *dev, const char *str)
+{
+       if (!strcmp(str, "low")) {
+               return DA7219_AAD_JACK_INS_DET_PTY_LOW;
+       } else if (!strcmp(str, "high")) {
+               return DA7219_AAD_JACK_INS_DET_PTY_HIGH;
+       } else {
+               dev_warn(dev, "Invalid jack insertion detection polarity");
+               return DA7219_AAD_JACK_INS_DET_PTY_LOW;
+       }
+}
+
 static enum da7219_aad_jack_det_rate
        da7219_aad_fw_jack_det_rate(struct device *dev, const char *str)
 {
-       if (!strcmp(str, "32ms_64ms")) {
+       if (!strcmp(str, "32_64")) {
                return DA7219_AAD_JACK_DET_RATE_32_64MS;
-       } else if (!strcmp(str, "64ms_128ms")) {
+       } else if (!strcmp(str, "64_128")) {
                return DA7219_AAD_JACK_DET_RATE_64_128MS;
-       } else if (!strcmp(str, "128ms_256ms")) {
+       } else if (!strcmp(str, "128_256")) {
                return DA7219_AAD_JACK_DET_RATE_128_256MS;
-       } else if (!strcmp(str, "256ms_512ms")) {
+       } else if (!strcmp(str, "256_512")) {
                return DA7219_AAD_JACK_DET_RATE_256_512MS;
        } else {
                dev_warn(dev, "Invalid jack detect rate");
        else
                aad_pdata->jack_ins_deb = DA7219_AAD_JACK_INS_DEB_20MS;
 
+       if (!fwnode_property_read_string(aad_np, "dlg,jack-ins-det-pty", &fw_str))
+               aad_pdata->jack_ins_det_pty =
+                       da7219_aad_fw_jack_ins_det_pty(dev, fw_str);
+       else
+               aad_pdata->jack_ins_det_pty = DA7219_AAD_JACK_INS_DET_PTY_LOW;
+
        if (!fwnode_property_read_string(aad_np, "dlg,jack-det-rate", &fw_str))
                aad_pdata->jack_det_rate =
                        da7219_aad_fw_jack_det_rate(dev, fw_str);
                        mask |= DA7219_ADC_1_BIT_REPEAT_MASK;
                }
                snd_soc_component_update_bits(component, DA7219_ACCDET_CONFIG_7, mask, cfg);
+
+               switch (aad_pdata->jack_ins_det_pty) {
+               case DA7219_AAD_JACK_INS_DET_PTY_LOW:
+                       snd_soc_component_write(component, 0xF0, 0x8B);
+                       snd_soc_component_write(component, 0x75, 0x80);
+                       snd_soc_component_write(component, 0xF0, 0x00);
+                       break;
+               case DA7219_AAD_JACK_INS_DET_PTY_HIGH:
+                       snd_soc_component_write(component, 0xF0, 0x8B);
+                       snd_soc_component_write(component, 0x75, 0x00);
+                       snd_soc_component_write(component, 0xF0, 0x00);
+                       break;
+               default:
+                       break;
+               }
        }
 }