Skip to content

Commit f33fd7e

Browse files
committed
Merge tag 'pinctrl-v6.5-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
Pull pin control fixes from Linus Walleij: "Fixes two issues with the Qualcomm SA8775P platform: - Some minor device tree binding flunky that is nice to iron out but more importantly: - Support the increased interrupt targets mask from 3 to 4 bits, making interrupts with higher (hardware) numbers work" * tag 'pinctrl-v6.5-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: pinctrl: qcom: Add intr_target_width field to support increased number of interrupt targets dt-bindings: pinctrl: qcom,sa8775p-tlmm: add gpio function constant
2 parents 80706f5 + 9757300 commit f33fd7e

File tree

4 files changed

+10
-4
lines changed

4 files changed

+10
-4
lines changed

Documentation/devicetree/bindings/pinctrl/qcom,sa8775p-tlmm.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ $defs:
8787
emac0_mdc, emac0_mdio, emac0_ptp_aux, emac0_ptp_pps, emac1_mcg0,
8888
emac1_mcg1, emac1_mcg2, emac1_mcg3, emac1_mdc, emac1_mdio,
8989
emac1_ptp_aux, emac1_ptp_pps, gcc_gp1, gcc_gp2, gcc_gp3,
90-
gcc_gp4, gcc_gp5, hs0_mi2s, hs1_mi2s, hs2_mi2s, ibi_i3c,
90+
gcc_gp4, gcc_gp5, gpio, hs0_mi2s, hs1_mi2s, hs2_mi2s, ibi_i3c,
9191
jitter_bist, mdp0_vsync0, mdp0_vsync1, mdp0_vsync2, mdp0_vsync3,
9292
mdp0_vsync4, mdp0_vsync5, mdp0_vsync6, mdp0_vsync7, mdp0_vsync8,
9393
mdp1_vsync0, mdp1_vsync1, mdp1_vsync2, mdp1_vsync3, mdp1_vsync4,

drivers/pinctrl/qcom/pinctrl-msm.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1038,6 +1038,7 @@ static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int type)
10381038
struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
10391039
struct msm_pinctrl *pctrl = gpiochip_get_data(gc);
10401040
const struct msm_pingroup *g;
1041+
u32 intr_target_mask = GENMASK(2, 0);
10411042
unsigned long flags;
10421043
bool was_enabled;
10431044
u32 val;
@@ -1074,13 +1075,15 @@ static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int type)
10741075
* With intr_target_use_scm interrupts are routed to
10751076
* application cpu using scm calls.
10761077
*/
1078+
if (g->intr_target_width)
1079+
intr_target_mask = GENMASK(g->intr_target_width - 1, 0);
1080+
10771081
if (pctrl->intr_target_use_scm) {
10781082
u32 addr = pctrl->phys_base[0] + g->intr_target_reg;
10791083
int ret;
10801084

10811085
qcom_scm_io_readl(addr, &val);
1082-
1083-
val &= ~(7 << g->intr_target_bit);
1086+
val &= ~(intr_target_mask << g->intr_target_bit);
10841087
val |= g->intr_target_kpss_val << g->intr_target_bit;
10851088

10861089
ret = qcom_scm_io_writel(addr, val);
@@ -1090,7 +1093,7 @@ static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int type)
10901093
d->hwirq);
10911094
} else {
10921095
val = msm_readl_intr_target(pctrl, g);
1093-
val &= ~(7 << g->intr_target_bit);
1096+
val &= ~(intr_target_mask << g->intr_target_bit);
10941097
val |= g->intr_target_kpss_val << g->intr_target_bit;
10951098
msm_writel_intr_target(val, pctrl, g);
10961099
}

drivers/pinctrl/qcom/pinctrl-msm.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ struct pinctrl_pin_desc;
5959
* @intr_status_bit: Offset in @intr_status_reg for reading and acking the interrupt
6060
* status.
6161
* @intr_target_bit: Offset in @intr_target_reg for configuring the interrupt routing.
62+
* @intr_target_width: Number of bits used for specifying interrupt routing target.
6263
* @intr_target_kpss_val: Value in @intr_target_bit for specifying that the interrupt from
6364
* this gpio should get routed to the KPSS processor.
6465
* @intr_raw_status_bit: Offset in @intr_cfg_reg for the raw status bit.
@@ -100,6 +101,7 @@ struct msm_pingroup {
100101
unsigned intr_ack_high:1;
101102

102103
unsigned intr_target_bit:5;
104+
unsigned intr_target_width:5;
103105
unsigned intr_target_kpss_val:5;
104106
unsigned intr_raw_status_bit:5;
105107
unsigned intr_polarity_bit:5;

drivers/pinctrl/qcom/pinctrl-sa8775p.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
.intr_enable_bit = 0, \
4747
.intr_status_bit = 0, \
4848
.intr_target_bit = 5, \
49+
.intr_target_width = 4, \
4950
.intr_target_kpss_val = 3, \
5051
.intr_raw_status_bit = 4, \
5152
.intr_polarity_bit = 1, \

0 commit comments

Comments
 (0)