Skip to content

Commit e65078f

Browse files
committed
powerpc: sysdev: cpm1: use gpiochip data pointer
This makes the driver use the data pointer added to the gpio_chip to store a pointer to the state container instead of relying on container_of(). Cc: Anatolij Gustschin <[email protected]> Cc: Benjamin Herrenschmidt <[email protected]> Cc: Paul Mackerras <[email protected]> Cc: Michael Ellerman <[email protected]> Signed-off-by: Linus Walleij <[email protected]>
1 parent da5f767 commit e65078f

File tree

1 file changed

+12
-24
lines changed

1 file changed

+12
-24
lines changed

arch/powerpc/sysdev/cpm1.c

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -532,15 +532,9 @@ struct cpm1_gpio16_chip {
532532
u16 cpdata;
533533
};
534534

535-
static inline struct cpm1_gpio16_chip *
536-
to_cpm1_gpio16_chip(struct of_mm_gpio_chip *mm_gc)
537-
{
538-
return container_of(mm_gc, struct cpm1_gpio16_chip, mm_gc);
539-
}
540-
541535
static void cpm1_gpio16_save_regs(struct of_mm_gpio_chip *mm_gc)
542536
{
543-
struct cpm1_gpio16_chip *cpm1_gc = to_cpm1_gpio16_chip(mm_gc);
537+
struct cpm1_gpio16_chip *cpm1_gc = gpiochip_get_data(&mm_gc->gc);
544538
struct cpm_ioport16 __iomem *iop = mm_gc->regs;
545539

546540
cpm1_gc->cpdata = in_be16(&iop->dat);
@@ -560,7 +554,7 @@ static int cpm1_gpio16_get(struct gpio_chip *gc, unsigned int gpio)
560554
static void __cpm1_gpio16_set(struct of_mm_gpio_chip *mm_gc, u16 pin_mask,
561555
int value)
562556
{
563-
struct cpm1_gpio16_chip *cpm1_gc = to_cpm1_gpio16_chip(mm_gc);
557+
struct cpm1_gpio16_chip *cpm1_gc = gpiochip_get_data(&mm_gc->gc);
564558
struct cpm_ioport16 __iomem *iop = mm_gc->regs;
565559

566560
if (value)
@@ -574,7 +568,7 @@ static void __cpm1_gpio16_set(struct of_mm_gpio_chip *mm_gc, u16 pin_mask,
574568
static void cpm1_gpio16_set(struct gpio_chip *gc, unsigned int gpio, int value)
575569
{
576570
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
577-
struct cpm1_gpio16_chip *cpm1_gc = to_cpm1_gpio16_chip(mm_gc);
571+
struct cpm1_gpio16_chip *cpm1_gc = gpiochip_get_data(&mm_gc->gc);
578572
unsigned long flags;
579573
u16 pin_mask = 1 << (15 - gpio);
580574

@@ -588,7 +582,7 @@ static void cpm1_gpio16_set(struct gpio_chip *gc, unsigned int gpio, int value)
588582
static int cpm1_gpio16_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
589583
{
590584
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
591-
struct cpm1_gpio16_chip *cpm1_gc = to_cpm1_gpio16_chip(mm_gc);
585+
struct cpm1_gpio16_chip *cpm1_gc = gpiochip_get_data(&mm_gc->gc);
592586
struct cpm_ioport16 __iomem *iop = mm_gc->regs;
593587
unsigned long flags;
594588
u16 pin_mask = 1 << (15 - gpio);
@@ -606,7 +600,7 @@ static int cpm1_gpio16_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
606600
static int cpm1_gpio16_dir_in(struct gpio_chip *gc, unsigned int gpio)
607601
{
608602
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
609-
struct cpm1_gpio16_chip *cpm1_gc = to_cpm1_gpio16_chip(mm_gc);
603+
struct cpm1_gpio16_chip *cpm1_gc = gpiochip_get_data(&mm_gc->gc);
610604
struct cpm_ioport16 __iomem *iop = mm_gc->regs;
611605
unsigned long flags;
612606
u16 pin_mask = 1 << (15 - gpio);
@@ -642,7 +636,7 @@ int cpm1_gpiochip_add16(struct device_node *np)
642636
gc->get = cpm1_gpio16_get;
643637
gc->set = cpm1_gpio16_set;
644638

645-
return of_mm_gpiochip_add(np, mm_gc);
639+
return of_mm_gpiochip_add_data(np, mm_gc, cpm1_gc);
646640
}
647641

648642
struct cpm1_gpio32_chip {
@@ -653,15 +647,9 @@ struct cpm1_gpio32_chip {
653647
u32 cpdata;
654648
};
655649

656-
static inline struct cpm1_gpio32_chip *
657-
to_cpm1_gpio32_chip(struct of_mm_gpio_chip *mm_gc)
658-
{
659-
return container_of(mm_gc, struct cpm1_gpio32_chip, mm_gc);
660-
}
661-
662650
static void cpm1_gpio32_save_regs(struct of_mm_gpio_chip *mm_gc)
663651
{
664-
struct cpm1_gpio32_chip *cpm1_gc = to_cpm1_gpio32_chip(mm_gc);
652+
struct cpm1_gpio32_chip *cpm1_gc = gpiochip_get_data(&mm_gc->gc);
665653
struct cpm_ioport32b __iomem *iop = mm_gc->regs;
666654

667655
cpm1_gc->cpdata = in_be32(&iop->dat);
@@ -681,7 +669,7 @@ static int cpm1_gpio32_get(struct gpio_chip *gc, unsigned int gpio)
681669
static void __cpm1_gpio32_set(struct of_mm_gpio_chip *mm_gc, u32 pin_mask,
682670
int value)
683671
{
684-
struct cpm1_gpio32_chip *cpm1_gc = to_cpm1_gpio32_chip(mm_gc);
672+
struct cpm1_gpio32_chip *cpm1_gc = gpiochip_get_data(&mm_gc->gc);
685673
struct cpm_ioport32b __iomem *iop = mm_gc->regs;
686674

687675
if (value)
@@ -695,7 +683,7 @@ static void __cpm1_gpio32_set(struct of_mm_gpio_chip *mm_gc, u32 pin_mask,
695683
static void cpm1_gpio32_set(struct gpio_chip *gc, unsigned int gpio, int value)
696684
{
697685
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
698-
struct cpm1_gpio32_chip *cpm1_gc = to_cpm1_gpio32_chip(mm_gc);
686+
struct cpm1_gpio32_chip *cpm1_gc = gpiochip_get_data(&mm_gc->gc);
699687
unsigned long flags;
700688
u32 pin_mask = 1 << (31 - gpio);
701689

@@ -709,7 +697,7 @@ static void cpm1_gpio32_set(struct gpio_chip *gc, unsigned int gpio, int value)
709697
static int cpm1_gpio32_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
710698
{
711699
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
712-
struct cpm1_gpio32_chip *cpm1_gc = to_cpm1_gpio32_chip(mm_gc);
700+
struct cpm1_gpio32_chip *cpm1_gc = gpiochip_get_data(&mm_gc->gc);
713701
struct cpm_ioport32b __iomem *iop = mm_gc->regs;
714702
unsigned long flags;
715703
u32 pin_mask = 1 << (31 - gpio);
@@ -727,7 +715,7 @@ static int cpm1_gpio32_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
727715
static int cpm1_gpio32_dir_in(struct gpio_chip *gc, unsigned int gpio)
728716
{
729717
struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc);
730-
struct cpm1_gpio32_chip *cpm1_gc = to_cpm1_gpio32_chip(mm_gc);
718+
struct cpm1_gpio32_chip *cpm1_gc = gpiochip_get_data(&mm_gc->gc);
731719
struct cpm_ioport32b __iomem *iop = mm_gc->regs;
732720
unsigned long flags;
733721
u32 pin_mask = 1 << (31 - gpio);
@@ -763,7 +751,7 @@ int cpm1_gpiochip_add32(struct device_node *np)
763751
gc->get = cpm1_gpio32_get;
764752
gc->set = cpm1_gpio32_set;
765753

766-
return of_mm_gpiochip_add(np, mm_gc);
754+
return of_mm_gpiochip_add_data(np, mm_gc, cpm1_gc);
767755
}
768756

769757
static int cpm_init_par_io(void)

0 commit comments

Comments
 (0)