@@ -1676,58 +1676,42 @@ static void irq_set_type(struct ingenic_gpio_chip *jzgc,
1676
1676
u8 offset , unsigned int type )
1677
1677
{
1678
1678
u8 reg1 , reg2 ;
1679
-
1680
- if (jzgc -> jzpc -> info -> version >= ID_JZ4760 ) {
1681
- reg1 = JZ4760_GPIO_PAT1 ;
1682
- reg2 = JZ4760_GPIO_PAT0 ;
1683
- } else {
1684
- reg1 = JZ4740_GPIO_TRIG ;
1685
- reg2 = JZ4740_GPIO_DIR ;
1686
- }
1679
+ bool val1 , val2 ;
1687
1680
1688
1681
switch (type ) {
1689
1682
case IRQ_TYPE_EDGE_RISING :
1690
- if (jzgc -> jzpc -> info -> version >= ID_X1000 ) {
1691
- ingenic_gpio_shadow_set_bit (jzgc , reg2 , offset , true);
1692
- ingenic_gpio_shadow_set_bit (jzgc , reg1 , offset , true);
1693
- ingenic_gpio_shadow_set_bit_load (jzgc );
1694
- } else {
1695
- ingenic_gpio_set_bit (jzgc , reg2 , offset , true);
1696
- ingenic_gpio_set_bit (jzgc , reg1 , offset , true);
1697
- }
1683
+ val1 = val2 = true;
1698
1684
break ;
1699
1685
case IRQ_TYPE_EDGE_FALLING :
1700
- if (jzgc -> jzpc -> info -> version >= ID_X1000 ) {
1701
- ingenic_gpio_shadow_set_bit (jzgc , reg2 , offset , false);
1702
- ingenic_gpio_shadow_set_bit (jzgc , reg1 , offset , true);
1703
- ingenic_gpio_shadow_set_bit_load (jzgc );
1704
- } else {
1705
- ingenic_gpio_set_bit (jzgc , reg2 , offset , false);
1706
- ingenic_gpio_set_bit (jzgc , reg1 , offset , true);
1707
- }
1686
+ val1 = false;
1687
+ val2 = true;
1708
1688
break ;
1709
1689
case IRQ_TYPE_LEVEL_HIGH :
1710
- if (jzgc -> jzpc -> info -> version >= ID_X1000 ) {
1711
- ingenic_gpio_shadow_set_bit (jzgc , reg2 , offset , true);
1712
- ingenic_gpio_shadow_set_bit (jzgc , reg1 , offset , false);
1713
- ingenic_gpio_shadow_set_bit_load (jzgc );
1714
- } else {
1715
- ingenic_gpio_set_bit (jzgc , reg2 , offset , true);
1716
- ingenic_gpio_set_bit (jzgc , reg1 , offset , false);
1717
- }
1690
+ val1 = true;
1691
+ val2 = false;
1718
1692
break ;
1719
1693
case IRQ_TYPE_LEVEL_LOW :
1720
1694
default :
1721
- if (jzgc -> jzpc -> info -> version >= ID_X1000 ) {
1722
- ingenic_gpio_shadow_set_bit (jzgc , reg2 , offset , false);
1723
- ingenic_gpio_shadow_set_bit (jzgc , reg1 , offset , false);
1724
- ingenic_gpio_shadow_set_bit_load (jzgc );
1725
- } else {
1726
- ingenic_gpio_set_bit (jzgc , reg2 , offset , false);
1727
- ingenic_gpio_set_bit (jzgc , reg1 , offset , false);
1728
- }
1695
+ val1 = val2 = false;
1729
1696
break ;
1730
1697
}
1698
+
1699
+ if (jzgc -> jzpc -> info -> version >= ID_JZ4760 ) {
1700
+ reg1 = JZ4760_GPIO_PAT1 ;
1701
+ reg2 = JZ4760_GPIO_PAT0 ;
1702
+ } else {
1703
+ reg1 = JZ4740_GPIO_TRIG ;
1704
+ reg2 = JZ4740_GPIO_DIR ;
1705
+ }
1706
+
1707
+ if (jzgc -> jzpc -> info -> version >= ID_X1000 ) {
1708
+ ingenic_gpio_shadow_set_bit (jzgc , reg2 , offset , val1 );
1709
+ ingenic_gpio_shadow_set_bit (jzgc , reg1 , offset , val2 );
1710
+ ingenic_gpio_shadow_set_bit_load (jzgc );
1711
+ } else {
1712
+ ingenic_gpio_set_bit (jzgc , reg2 , offset , val1 );
1713
+ ingenic_gpio_set_bit (jzgc , reg1 , offset , val2 );
1714
+ }
1731
1715
}
1732
1716
1733
1717
static void ingenic_gpio_irq_mask (struct irq_data * irqd )
0 commit comments