Loading sound/soc/codecs/msm8916-wcd-irq.c +20 −8 Original line number Diff line number Diff line Loading @@ -98,9 +98,7 @@ struct wcd9xxx_spmi_map map; void wcd9xxx_spmi_enable_irq(int irq) { map.mask[BIT_BYTE(irq)] &= ~(BYTE_BIT_MASK(irq)); enable_irq_wake(map.linuxirq[irq]); pr_debug("%s: irqno =%d\n", __func__, irq); if ((irq >= 0) && (irq <= 7)) snd_soc_update_bits(map.codec, MSM8X16_WCD_A_DIGITAL_INT_EN_SET, Loading @@ -109,14 +107,20 @@ void wcd9xxx_spmi_enable_irq(int irq) snd_soc_update_bits(map.codec, MSM8X16_WCD_A_ANALOG_INT_EN_SET, (0x01 << (irq - 8)), (0x01 << (irq - 8))); if (!(map.mask[BIT_BYTE(irq)] & (BYTE_BIT_MASK(irq)))) return; map.mask[BIT_BYTE(irq)] &= ~(BYTE_BIT_MASK(irq)); enable_irq(map.linuxirq[irq]); enable_irq_wake(map.linuxirq[irq]); } void wcd9xxx_spmi_disable_irq(int irq) { map.mask[BIT_BYTE(irq)] |= (BYTE_BIT_MASK(irq)); disable_irq_nosync(map.linuxirq[irq]); pr_debug("%s: irqno =%d\n", __func__, irq); if ((irq >= 0) && (irq <= 7)) snd_soc_update_bits(map.codec, MSM8X16_WCD_A_DIGITAL_INT_EN_SET, Loading @@ -125,6 +129,14 @@ void wcd9xxx_spmi_disable_irq(int irq) snd_soc_update_bits(map.codec, MSM8X16_WCD_A_ANALOG_INT_EN_SET, (0x01 << (irq - 8)), 0x00); if (map.mask[BIT_BYTE(irq)] & (BYTE_BIT_MASK(irq))) return; map.mask[BIT_BYTE(irq)] |= (BYTE_BIT_MASK(irq)); disable_irq_nosync(map.linuxirq[irq]); } int wcd9xxx_spmi_request_irq(int irq, irq_handler_t handler, Loading Loading @@ -201,7 +213,7 @@ static irqreturn_t wcd9xxx_spmi_irq_handler(int linux_irq, void *data) for (i = 0; i < MAX_NUM_IRQS; i++) { j = get_order_irq(i); if ((status[BIT_BYTE(j)] & BYTE_BIT_MASK(j)) && ((map.handled[j] & ((map.handled[BIT_BYTE(j)] & BYTE_BIT_MASK(j)) == 0)) { map.handler[j](irq, data); map.handled[BIT_BYTE(j)] |= Loading sound/soc/codecs/msm8x16-wcd.c +3 −3 Original line number Diff line number Diff line Loading @@ -3009,10 +3009,10 @@ static const struct msm8x16_wcd_reg_mask_val /* Initialize current threshold to 350MA * number of wait and run cycles to 4096 */ {MSM8X16_WCD_A_ANALOG_RX_COM_OCP_CTL, 0xE1, 0x61}, {MSM8X16_WCD_A_ANALOG_RX_COM_OCP_CTL, 0xFF, 0xD1}, {MSM8X16_WCD_A_ANALOG_RX_COM_OCP_COUNT, 0xFF, 0xFF}, {MSM8X16_WCD_A_ANALOG_RX_HPH_L_TEST, 0x40, 0x40}, {MSM8X16_WCD_A_ANALOG_RX_HPH_R_TEST, 0x40, 0x40}, {MSM8X16_WCD_A_ANALOG_RX_HPH_L_TEST, 0x04, 0x04}, {MSM8X16_WCD_A_ANALOG_RX_HPH_R_TEST, 0x04, 0x04}, }; static void msm8x16_wcd_codec_init_reg(struct snd_soc_codec *codec) Loading sound/soc/codecs/wcd-mbhc-v2.c +0 −5 Original line number Diff line number Diff line Loading @@ -1164,8 +1164,6 @@ static int wcd_mbhc_initialise(struct wcd_mbhc *mbhc) snd_soc_write(codec, MSM8X16_WCD_A_ANALOG_MBHC_DBNC_TIMER, 0x98); snd_soc_update_bits(codec, MSM8X16_WCD_A_ANALOG_RX_COM_OCP_CTL, 0x10, 0x00); /* enable MBHC clock */ snd_soc_update_bits(codec, MSM8X16_WCD_A_DIGITAL_CDC_DIG_CLK_CTL, Loading Loading @@ -1323,7 +1321,6 @@ int wcd_mbhc_init(struct wcd_mbhc *mbhc, struct snd_soc_codec *codec, mbhc->intr_ids->mbhc_hs_ins_rem_intr); goto err_mbhc_hs_ins_rem_irq; } wcd9xxx_spmi_disable_irq(mbhc->intr_ids->mbhc_hs_ins_rem_intr); ret = wcd9xxx_spmi_request_irq(mbhc->intr_ids->hph_left_ocp, wcd_mbhc_hphl_ocp_irq, "HPH_L OCP detect", Loading @@ -1333,7 +1330,6 @@ int wcd_mbhc_init(struct wcd_mbhc *mbhc, struct snd_soc_codec *codec, mbhc->intr_ids->hph_left_ocp); goto err_hphl_ocp_irq; } wcd9xxx_spmi_disable_irq(mbhc->intr_ids->hph_left_ocp); ret = wcd9xxx_spmi_request_irq(mbhc->intr_ids->hph_right_ocp, wcd_mbhc_hphr_ocp_irq, "HPH_R OCP detect", Loading @@ -1343,7 +1339,6 @@ int wcd_mbhc_init(struct wcd_mbhc *mbhc, struct snd_soc_codec *codec, mbhc->intr_ids->hph_right_ocp); goto err_hphr_ocp_irq; } wcd9xxx_spmi_disable_irq(mbhc->intr_ids->hph_right_ocp); pr_debug("%s: leave ret %d\n", __func__, ret); return ret; Loading Loading
sound/soc/codecs/msm8916-wcd-irq.c +20 −8 Original line number Diff line number Diff line Loading @@ -98,9 +98,7 @@ struct wcd9xxx_spmi_map map; void wcd9xxx_spmi_enable_irq(int irq) { map.mask[BIT_BYTE(irq)] &= ~(BYTE_BIT_MASK(irq)); enable_irq_wake(map.linuxirq[irq]); pr_debug("%s: irqno =%d\n", __func__, irq); if ((irq >= 0) && (irq <= 7)) snd_soc_update_bits(map.codec, MSM8X16_WCD_A_DIGITAL_INT_EN_SET, Loading @@ -109,14 +107,20 @@ void wcd9xxx_spmi_enable_irq(int irq) snd_soc_update_bits(map.codec, MSM8X16_WCD_A_ANALOG_INT_EN_SET, (0x01 << (irq - 8)), (0x01 << (irq - 8))); if (!(map.mask[BIT_BYTE(irq)] & (BYTE_BIT_MASK(irq)))) return; map.mask[BIT_BYTE(irq)] &= ~(BYTE_BIT_MASK(irq)); enable_irq(map.linuxirq[irq]); enable_irq_wake(map.linuxirq[irq]); } void wcd9xxx_spmi_disable_irq(int irq) { map.mask[BIT_BYTE(irq)] |= (BYTE_BIT_MASK(irq)); disable_irq_nosync(map.linuxirq[irq]); pr_debug("%s: irqno =%d\n", __func__, irq); if ((irq >= 0) && (irq <= 7)) snd_soc_update_bits(map.codec, MSM8X16_WCD_A_DIGITAL_INT_EN_SET, Loading @@ -125,6 +129,14 @@ void wcd9xxx_spmi_disable_irq(int irq) snd_soc_update_bits(map.codec, MSM8X16_WCD_A_ANALOG_INT_EN_SET, (0x01 << (irq - 8)), 0x00); if (map.mask[BIT_BYTE(irq)] & (BYTE_BIT_MASK(irq))) return; map.mask[BIT_BYTE(irq)] |= (BYTE_BIT_MASK(irq)); disable_irq_nosync(map.linuxirq[irq]); } int wcd9xxx_spmi_request_irq(int irq, irq_handler_t handler, Loading Loading @@ -201,7 +213,7 @@ static irqreturn_t wcd9xxx_spmi_irq_handler(int linux_irq, void *data) for (i = 0; i < MAX_NUM_IRQS; i++) { j = get_order_irq(i); if ((status[BIT_BYTE(j)] & BYTE_BIT_MASK(j)) && ((map.handled[j] & ((map.handled[BIT_BYTE(j)] & BYTE_BIT_MASK(j)) == 0)) { map.handler[j](irq, data); map.handled[BIT_BYTE(j)] |= Loading
sound/soc/codecs/msm8x16-wcd.c +3 −3 Original line number Diff line number Diff line Loading @@ -3009,10 +3009,10 @@ static const struct msm8x16_wcd_reg_mask_val /* Initialize current threshold to 350MA * number of wait and run cycles to 4096 */ {MSM8X16_WCD_A_ANALOG_RX_COM_OCP_CTL, 0xE1, 0x61}, {MSM8X16_WCD_A_ANALOG_RX_COM_OCP_CTL, 0xFF, 0xD1}, {MSM8X16_WCD_A_ANALOG_RX_COM_OCP_COUNT, 0xFF, 0xFF}, {MSM8X16_WCD_A_ANALOG_RX_HPH_L_TEST, 0x40, 0x40}, {MSM8X16_WCD_A_ANALOG_RX_HPH_R_TEST, 0x40, 0x40}, {MSM8X16_WCD_A_ANALOG_RX_HPH_L_TEST, 0x04, 0x04}, {MSM8X16_WCD_A_ANALOG_RX_HPH_R_TEST, 0x04, 0x04}, }; static void msm8x16_wcd_codec_init_reg(struct snd_soc_codec *codec) Loading
sound/soc/codecs/wcd-mbhc-v2.c +0 −5 Original line number Diff line number Diff line Loading @@ -1164,8 +1164,6 @@ static int wcd_mbhc_initialise(struct wcd_mbhc *mbhc) snd_soc_write(codec, MSM8X16_WCD_A_ANALOG_MBHC_DBNC_TIMER, 0x98); snd_soc_update_bits(codec, MSM8X16_WCD_A_ANALOG_RX_COM_OCP_CTL, 0x10, 0x00); /* enable MBHC clock */ snd_soc_update_bits(codec, MSM8X16_WCD_A_DIGITAL_CDC_DIG_CLK_CTL, Loading Loading @@ -1323,7 +1321,6 @@ int wcd_mbhc_init(struct wcd_mbhc *mbhc, struct snd_soc_codec *codec, mbhc->intr_ids->mbhc_hs_ins_rem_intr); goto err_mbhc_hs_ins_rem_irq; } wcd9xxx_spmi_disable_irq(mbhc->intr_ids->mbhc_hs_ins_rem_intr); ret = wcd9xxx_spmi_request_irq(mbhc->intr_ids->hph_left_ocp, wcd_mbhc_hphl_ocp_irq, "HPH_L OCP detect", Loading @@ -1333,7 +1330,6 @@ int wcd_mbhc_init(struct wcd_mbhc *mbhc, struct snd_soc_codec *codec, mbhc->intr_ids->hph_left_ocp); goto err_hphl_ocp_irq; } wcd9xxx_spmi_disable_irq(mbhc->intr_ids->hph_left_ocp); ret = wcd9xxx_spmi_request_irq(mbhc->intr_ids->hph_right_ocp, wcd_mbhc_hphr_ocp_irq, "HPH_R OCP detect", Loading @@ -1343,7 +1339,6 @@ int wcd_mbhc_init(struct wcd_mbhc *mbhc, struct snd_soc_codec *codec, mbhc->intr_ids->hph_right_ocp); goto err_hphr_ocp_irq; } wcd9xxx_spmi_disable_irq(mbhc->intr_ids->hph_right_ocp); pr_debug("%s: leave ret %d\n", __func__, ret); return ret; Loading