@@ -30,9 +30,6 @@ struct regmap_irq_chip_data {
3030 int irq ;
3131 int wake_count ;
3232
33- unsigned int mask_base ;
34- unsigned int unmask_base ;
35-
3633 void * status_reg_buf ;
3734 unsigned int * main_status_buf ;
3835 unsigned int * status_buf ;
@@ -118,17 +115,17 @@ static void regmap_irq_sync_unlock(struct irq_data *data)
118115 d -> mask_buf [i ],
119116 d -> chip -> irq_drv_data );
120117
121- if (d -> mask_base && !d -> chip -> handle_mask_sync ) {
122- reg = d -> get_irq_reg (d , d -> mask_base , i );
118+ if (d -> chip -> mask_base && !d -> chip -> handle_mask_sync ) {
119+ reg = d -> get_irq_reg (d , d -> chip -> mask_base , i );
123120 ret = regmap_update_bits (d -> map , reg ,
124121 d -> mask_buf_def [i ],
125122 d -> mask_buf [i ]);
126123 if (ret )
127124 dev_err (d -> map -> dev , "Failed to sync masks in %x\n" , reg );
128125 }
129126
130- if (d -> unmask_base && !d -> chip -> handle_mask_sync ) {
131- reg = d -> get_irq_reg (d , d -> unmask_base , i );
127+ if (d -> chip -> unmask_base && !d -> chip -> handle_mask_sync ) {
128+ reg = d -> get_irq_reg (d , d -> chip -> unmask_base , i );
132129 ret = regmap_update_bits (d -> map , reg ,
133130 d -> mask_buf_def [i ], ~d -> mask_buf [i ]);
134131 if (ret )
@@ -645,6 +642,9 @@ int regmap_add_irq_chip_fwnode(struct fwnode_handle *fwnode,
645642 if (chip -> clear_on_unmask && (chip -> ack_base || chip -> use_ack ))
646643 return - EINVAL ;
647644
645+ if (chip -> mask_base && chip -> unmask_base && !chip -> mask_unmask_non_inverted )
646+ return - EINVAL ;
647+
648648 for (i = 0 ; i < chip -> num_irqs ; i ++ ) {
649649 if (chip -> irqs [i ].reg_offset % map -> reg_stride )
650650 return - EINVAL ;
@@ -733,28 +733,6 @@ int regmap_add_irq_chip_fwnode(struct fwnode_handle *fwnode,
733733 d -> chip = chip ;
734734 d -> irq_base = irq_base ;
735735
736- if (chip -> mask_base && chip -> unmask_base &&
737- !chip -> mask_unmask_non_inverted ) {
738- /*
739- * Chips that specify both mask_base and unmask_base used to
740- * get inverted mask behavior by default, with no way to ask
741- * for the normal, non-inverted behavior. This "inverted by
742- * default" behavior is deprecated, but we have to support it
743- * until existing drivers have been fixed.
744- *
745- * Existing drivers should be updated by swapping mask_base
746- * and unmask_base and setting mask_unmask_non_inverted=true.
747- * New drivers should always set the flag.
748- */
749- dev_warn (map -> dev , "mask_base and unmask_base are inverted, please fix it" );
750-
751- d -> mask_base = chip -> unmask_base ;
752- d -> unmask_base = chip -> mask_base ;
753- } else {
754- d -> mask_base = chip -> mask_base ;
755- d -> unmask_base = chip -> unmask_base ;
756- }
757-
758736 if (chip -> irq_reg_stride )
759737 d -> irq_reg_stride = chip -> irq_reg_stride ;
760738 else
@@ -791,8 +769,8 @@ int regmap_add_irq_chip_fwnode(struct fwnode_handle *fwnode,
791769 goto err_alloc ;
792770 }
793771
794- if (d -> mask_base && !chip -> handle_mask_sync ) {
795- reg = d -> get_irq_reg (d , d -> mask_base , i );
772+ if (chip -> mask_base && !chip -> handle_mask_sync ) {
773+ reg = d -> get_irq_reg (d , chip -> mask_base , i );
796774 ret = regmap_update_bits (d -> map , reg ,
797775 d -> mask_buf_def [i ],
798776 d -> mask_buf [i ]);
@@ -803,8 +781,8 @@ int regmap_add_irq_chip_fwnode(struct fwnode_handle *fwnode,
803781 }
804782 }
805783
806- if (d -> unmask_base && !chip -> handle_mask_sync ) {
807- reg = d -> get_irq_reg (d , d -> unmask_base , i );
784+ if (chip -> unmask_base && !chip -> handle_mask_sync ) {
785+ reg = d -> get_irq_reg (d , chip -> unmask_base , i );
808786 ret = regmap_update_bits (d -> map , reg ,
809787 d -> mask_buf_def [i ], ~d -> mask_buf [i ]);
810788 if (ret ) {
0 commit comments