[pinctrl:devel 43/47] drivers/pinctrl/samsung/pinctrl-s3c24xx.c:154:9: error: 'struct samsung_pinctrl_drv_data' has no member named 'virt_base'; did you mean 'pin_base'?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel
head:   05e51a4da2af5f68c911adcb888f103460a2e5b3
commit: e40fde2c098df8bbaf82b5b80b43aa49eb2cb9af [43/47] pinctrl: samsung: Add the support the multiple IORESOURCE_MEM for one pin-bank
config: arm-samsung (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout e40fde2c098df8bbaf82b5b80b43aa49eb2cb9af
        # save the attached .config to linux build tree
        make.cross ARCH=arm 

All error/warnings (new ones prefixed by >>):

   drivers/pinctrl/samsung/pinctrl-s3c24xx.c: In function 's3c24xx_eint_set_function':
>> drivers/pinctrl/samsung/pinctrl-s3c24xx.c:154:9: error: 'struct samsung_pinctrl_drv_data' has no member named 'virt_base'; did you mean 'pin_base'?
     reg = d->virt_base + bank->pctl_offset;
            ^~
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c: In function 's3c24xx_eint_type':
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c:187:9: error: 'struct samsung_pinctrl_drv_data' has no member named 'virt_base'; did you mean 'pin_base'?
     reg = d->virt_base + EINT_REG(index);
            ^~
   In file included from include/linux/io.h:25:0,
                    from include/linux/irq.h:24,
                    from drivers/pinctrl/samsung/pinctrl-s3c24xx.c:20:
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c: In function 's3c2412_eint0_3_ack':
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c:265:18: error: 'struct samsung_pinctrl_drv_data' has no member named 'virt_base'; did you mean 'pin_base'?
     writel(bitval, d->virt_base + EINTPEND_REG);
                     ^
   arch/arm/include/asm/io.h:297:71: note: in definition of macro 'writel_relaxed'
    #define writel_relaxed(v,c) __raw_writel((__force u32) cpu_to_le32(v),c)
                                                                          ^
>> drivers/pinctrl/samsung/pinctrl-s3c24xx.c:265:2: note: in expansion of macro 'writel'
     writel(bitval, d->virt_base + EINTPEND_REG);
     ^~~~~~
   In file included from include/linux/byteorder/little_endian.h:4:0,
                    from arch/arm/include/uapi/asm/byteorder.h:21,
                    from include/asm-generic/bitops/le.h:5,
                    from arch/arm/include/asm/bitops.h:340,
                    from include/linux/bitops.h:36,
                    from include/linux/kernel.h:10,
                    from include/linux/list.h:8,
                    from include/linux/module.h:9,
                    from drivers/pinctrl/samsung/pinctrl-s3c24xx.c:16:
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c: In function 's3c2412_eint0_3_mask':
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c:274:16: error: 'struct samsung_pinctrl_drv_data' has no member named 'virt_base'; did you mean 'pin_base'?
     mask = readl(d->virt_base + EINTMASK_REG);
                   ^
   include/uapi/linux/byteorder/little_endian.h:33:51: note: in definition of macro '__le32_to_cpu'
    #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
                                                      ^
   arch/arm/include/asm/io.h:301:32: note: in expansion of macro 'readl_relaxed'
    #define readl(c)  ({ u32 __v = readl_relaxed(c); __iormb(); __v; })
                                   ^~~~~~~~~~~~~
>> drivers/pinctrl/samsung/pinctrl-s3c24xx.c:274:9: note: in expansion of macro 'readl'
     mask = readl(d->virt_base + EINTMASK_REG);
            ^~~~~
   In file included from include/linux/io.h:25:0,
                    from include/linux/irq.h:24,
                    from drivers/pinctrl/samsung/pinctrl-s3c24xx.c:20:
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c:276:16: error: 'struct samsung_pinctrl_drv_data' has no member named 'virt_base'; did you mean 'pin_base'?
     writel(mask, d->virt_base + EINTMASK_REG);
                   ^
   arch/arm/include/asm/io.h:297:71: note: in definition of macro 'writel_relaxed'
    #define writel_relaxed(v,c) __raw_writel((__force u32) cpu_to_le32(v),c)
                                                                          ^
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c:276:2: note: in expansion of macro 'writel'
     writel(mask, d->virt_base + EINTMASK_REG);
     ^~~~~~
   In file included from include/linux/byteorder/little_endian.h:4:0,
                    from arch/arm/include/uapi/asm/byteorder.h:21,
                    from include/asm-generic/bitops/le.h:5,
                    from arch/arm/include/asm/bitops.h:340,
                    from include/linux/bitops.h:36,
                    from include/linux/kernel.h:10,
                    from include/linux/list.h:8,
                    from include/linux/module.h:9,
                    from drivers/pinctrl/samsung/pinctrl-s3c24xx.c:16:
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c: In function 's3c2412_eint0_3_unmask':
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c:285:16: error: 'struct samsung_pinctrl_drv_data' has no member named 'virt_base'; did you mean 'pin_base'?
     mask = readl(d->virt_base + EINTMASK_REG);
                   ^
   include/uapi/linux/byteorder/little_endian.h:33:51: note: in definition of macro '__le32_to_cpu'
    #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
                                                      ^
   arch/arm/include/asm/io.h:301:32: note: in expansion of macro 'readl_relaxed'
    #define readl(c)  ({ u32 __v = readl_relaxed(c); __iormb(); __v; })
                                   ^~~~~~~~~~~~~
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c:285:9: note: in expansion of macro 'readl'
     mask = readl(d->virt_base + EINTMASK_REG);
            ^~~~~
   In file included from include/linux/io.h:25:0,
                    from include/linux/irq.h:24,
                    from drivers/pinctrl/samsung/pinctrl-s3c24xx.c:20:
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c:287:16: error: 'struct samsung_pinctrl_drv_data' has no member named 'virt_base'; did you mean 'pin_base'?
     writel(mask, d->virt_base + EINTMASK_REG);
                   ^
   arch/arm/include/asm/io.h:297:71: note: in definition of macro 'writel_relaxed'
    #define writel_relaxed(v,c) __raw_writel((__force u32) cpu_to_le32(v),c)
                                                                          ^
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c:287:2: note: in expansion of macro 'writel'
     writel(mask, d->virt_base + EINTMASK_REG);
     ^~~~~~
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c: In function 's3c24xx_eint_ack':
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c:325:24: error: 'struct samsung_pinctrl_drv_data' has no member named 'virt_base'; did you mean 'pin_base'?
     writel(1UL << index, d->virt_base + EINTPEND_REG);
                           ^
   arch/arm/include/asm/io.h:297:71: note: in definition of macro 'writel_relaxed'
    #define writel_relaxed(v,c) __raw_writel((__force u32) cpu_to_le32(v),c)
                                                                          ^
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c:325:2: note: in expansion of macro 'writel'
     writel(1UL << index, d->virt_base + EINTPEND_REG);
     ^~~~~~
   In file included from include/linux/byteorder/little_endian.h:4:0,
                    from arch/arm/include/uapi/asm/byteorder.h:21,
                    from include/asm-generic/bitops/le.h:5,
                    from arch/arm/include/asm/bitops.h:340,
                    from include/linux/bitops.h:36,
                    from include/linux/kernel.h:10,
                    from include/linux/list.h:8,
                    from include/linux/module.h:9,
                    from drivers/pinctrl/samsung/pinctrl-s3c24xx.c:16:
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c: In function 's3c24xx_eint_mask':
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c:335:16: error: 'struct samsung_pinctrl_drv_data' has no member named 'virt_base'; did you mean 'pin_base'?
     mask = readl(d->virt_base + EINTMASK_REG);
                   ^
   include/uapi/linux/byteorder/little_endian.h:33:51: note: in definition of macro '__le32_to_cpu'
    #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
                                                      ^
   arch/arm/include/asm/io.h:301:32: note: in expansion of macro 'readl_relaxed'
    #define readl(c)  ({ u32 __v = readl_relaxed(c); __iormb(); __v; })
                                   ^~~~~~~~~~~~~
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c:335:9: note: in expansion of macro 'readl'
     mask = readl(d->virt_base + EINTMASK_REG);
            ^~~~~
   In file included from include/linux/io.h:25:0,
                    from include/linux/irq.h:24,
                    from drivers/pinctrl/samsung/pinctrl-s3c24xx.c:20:
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c:337:16: error: 'struct samsung_pinctrl_drv_data' has no member named 'virt_base'; did you mean 'pin_base'?
     writel(mask, d->virt_base + EINTMASK_REG);
                   ^
   arch/arm/include/asm/io.h:297:71: note: in definition of macro 'writel_relaxed'
    #define writel_relaxed(v,c) __raw_writel((__force u32) cpu_to_le32(v),c)
                                                                          ^
   drivers/pinctrl/samsung/pinctrl-s3c24xx.c:337:2: note: in expansion of macro 'writel'
     writel(mask, d->virt_base + EINTMASK_REG);
     ^~~~~~
   In file included from include/linux/byteorder/little_endian.h:4:0,
                    from arch/arm/include/uapi/asm/byteorder.h:21,
                    from include/asm-generic/bitops/le.h:5,
                    from arch/arm/include/asm/bitops.h:340,
                    from include/linux/bitops.h:36,
                    from include/linux/kernel.h:10,
                    from include/linux/list.h:8,
                    from include/linux/module.h:9,

vim +154 drivers/pinctrl/samsung/pinctrl-s3c24xx.c

af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   14   */
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   15  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   16  #include <linux/module.h>
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   17  #include <linux/device.h>
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   18  #include <linux/interrupt.h>
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   19  #include <linux/irqdomain.h>
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  @20  #include <linux/irq.h>
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   21  #include <linux/of_irq.h>
c2c70a79 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-06-19   22  #include <linux/irqchip/chained_irq.h>
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   23  #include <linux/io.h>
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   24  #include <linux/slab.h>
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   25  #include <linux/err.h>
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   26  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   27  #include "pinctrl-samsung.h"
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   28  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   29  #define NUM_EINT	24
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   30  #define NUM_EINT_IRQ	6
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   31  #define EINT_MAX_PER_GROUP	8
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   32  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   33  #define EINTPEND_REG	0xa8
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   34  #define EINTMASK_REG	0xa4
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   35  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   36  #define EINT_GROUP(i)		((int)((i) / EINT_MAX_PER_GROUP))
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   37  #define EINT_REG(i)		((EINT_GROUP(i) * 4) + 0x88)
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   38  #define EINT_OFFS(i)		((i) % EINT_MAX_PER_GROUP * 4)
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   39  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   40  #define EINT_LEVEL_LOW		0
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   41  #define EINT_LEVEL_HIGH		1
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   42  #define EINT_EDGE_FALLING	2
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   43  #define EINT_EDGE_RISING	4
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   44  #define EINT_EDGE_BOTH		6
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   45  #define EINT_MASK		0xf
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   46  
94ce944b drivers/pinctrl/samsung/pinctrl-s3c24xx.c Tomasz Figa     2014-09-23   47  static const struct samsung_pin_bank_type bank_type_1bit = {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   48  	.fld_width = { 1, 1, },
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   49  	.reg_offset = { 0x00, 0x04, },
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   50  };
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   51  
94ce944b drivers/pinctrl/samsung/pinctrl-s3c24xx.c Tomasz Figa     2014-09-23   52  static const struct samsung_pin_bank_type bank_type_2bit = {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   53  	.fld_width = { 2, 1, 2, },
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   54  	.reg_offset = { 0x00, 0x04, 0x08, },
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   55  };
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   56  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   57  #define PIN_BANK_A(pins, reg, id)		\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   58  	{						\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   59  		.type		= &bank_type_1bit,	\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   60  		.pctl_offset	= reg,			\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   61  		.nr_pins	= pins,			\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   62  		.eint_type	= EINT_TYPE_NONE,	\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   63  		.name		= id			\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   64  	}
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   65  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   66  #define PIN_BANK_2BIT(pins, reg, id)		\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   67  	{						\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   68  		.type		= &bank_type_2bit,	\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   69  		.pctl_offset	= reg,			\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   70  		.nr_pins	= pins,			\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   71  		.eint_type	= EINT_TYPE_NONE,	\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   72  		.name		= id			\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   73  	}
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   74  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   75  #define PIN_BANK_2BIT_EINTW(pins, reg, id, eoffs, emask)\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   76  	{						\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   77  		.type		= &bank_type_2bit,	\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   78  		.pctl_offset	= reg,			\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   79  		.nr_pins	= pins,			\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   80  		.eint_type	= EINT_TYPE_WKUP,	\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   81  		.eint_func	= 2,			\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   82  		.eint_mask	= emask,		\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   83  		.eint_offset	= eoffs,		\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   84  		.name		= id			\
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   85  	}
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   86  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   87  /**
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   88   * struct s3c24xx_eint_data: EINT common data
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   89   * @drvdata: pin controller driver data
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   90   * @domains: IRQ domains of particular EINT interrupts
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   91   * @parents: mapped parent irqs in the main interrupt controller
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   92   */
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   93  struct s3c24xx_eint_data {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   94  	struct samsung_pinctrl_drv_data *drvdata;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   95  	struct irq_domain *domains[NUM_EINT];
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   96  	int parents[NUM_EINT_IRQ];
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   97  };
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   98  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21   99  /**
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  100   * struct s3c24xx_eint_domain_data: per irq-domain data
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  101   * @bank: pin bank related to the domain
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  102   * @eint_data: common data
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  103   * eint0_3_parent_only: live eints 0-3 only in the main intc
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  104   */
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  105  struct s3c24xx_eint_domain_data {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  106  	struct samsung_pin_bank *bank;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  107  	struct s3c24xx_eint_data *eint_data;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  108  	bool eint0_3_parent_only;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  109  };
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  110  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  111  static int s3c24xx_eint_get_trigger(unsigned int type)
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  112  {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  113  	switch (type) {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  114  	case IRQ_TYPE_EDGE_RISING:
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  115  		return EINT_EDGE_RISING;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  116  		break;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  117  	case IRQ_TYPE_EDGE_FALLING:
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  118  		return EINT_EDGE_FALLING;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  119  		break;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  120  	case IRQ_TYPE_EDGE_BOTH:
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  121  		return EINT_EDGE_BOTH;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  122  		break;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  123  	case IRQ_TYPE_LEVEL_HIGH:
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  124  		return EINT_LEVEL_HIGH;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  125  		break;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  126  	case IRQ_TYPE_LEVEL_LOW:
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  127  		return EINT_LEVEL_LOW;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  128  		break;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  129  	default:
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  130  		return -EINVAL;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  131  	}
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  132  }
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  133  
f66eb498 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Thomas Gleixner 2015-06-23  134  static void s3c24xx_eint_set_handler(struct irq_data *d, unsigned int type)
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  135  {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  136  	/* Edge- and level-triggered interrupts need different handlers */
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  137  	if (type & IRQ_TYPE_EDGE_BOTH)
f66eb498 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Thomas Gleixner 2015-06-23  138  		irq_set_handler_locked(d, handle_edge_irq);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  139  	else
f66eb498 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Thomas Gleixner 2015-06-23  140  		irq_set_handler_locked(d, handle_level_irq);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  141  }
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  142  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  143  static void s3c24xx_eint_set_function(struct samsung_pinctrl_drv_data *d,
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  144  					struct samsung_pin_bank *bank, int pin)
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  145  {
94ce944b drivers/pinctrl/samsung/pinctrl-s3c24xx.c Tomasz Figa     2014-09-23  146  	const struct samsung_pin_bank_type *bank_type = bank->type;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  147  	unsigned long flags;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  148  	void __iomem *reg;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  149  	u8 shift;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  150  	u32 mask;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  151  	u32 val;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  152  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  153  	/* Make sure that pin is configured as interrupt */
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21 @154  	reg = d->virt_base + bank->pctl_offset;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  155  	shift = pin * bank_type->fld_width[PINCFG_TYPE_FUNC];
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  156  	mask = (1 << bank_type->fld_width[PINCFG_TYPE_FUNC]) - 1;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  157  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  158  	spin_lock_irqsave(&bank->slock, flags);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  159  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  160  	val = readl(reg);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  161  	val &= ~(mask << shift);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  162  	val |= bank->eint_func << shift;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  163  	writel(val, reg);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  164  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  165  	spin_unlock_irqrestore(&bank->slock, flags);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  166  }
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  167  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  168  static int s3c24xx_eint_type(struct irq_data *data, unsigned int type)
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  169  {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  170  	struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(data);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  171  	struct samsung_pinctrl_drv_data *d = bank->drvdata;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  172  	int index = bank->eint_offset + data->hwirq;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  173  	void __iomem *reg;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  174  	int trigger;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  175  	u8 shift;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  176  	u32 val;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  177  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  178  	trigger = s3c24xx_eint_get_trigger(type);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  179  	if (trigger < 0) {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  180  		dev_err(d->dev, "unsupported external interrupt type\n");
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  181  		return -EINVAL;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  182  	}
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  183  
f66eb498 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Thomas Gleixner 2015-06-23  184  	s3c24xx_eint_set_handler(data, type);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  185  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  186  	/* Set up interrupt trigger */
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  187  	reg = d->virt_base + EINT_REG(index);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  188  	shift = EINT_OFFS(index);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  189  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  190  	val = readl(reg);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  191  	val &= ~(EINT_MASK << shift);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  192  	val |= trigger << shift;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  193  	writel(val, reg);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  194  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  195  	s3c24xx_eint_set_function(d, bank, data->hwirq);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  196  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  197  	return 0;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  198  }
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  199  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  200  /* Handling of EINTs 0-3 on all except S3C2412 and S3C2413 */
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  201  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  202  static void s3c2410_eint0_3_ack(struct irq_data *data)
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  203  {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  204  	struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(data);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  205  	struct s3c24xx_eint_domain_data *ddata = bank->irq_domain->host_data;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  206  	struct s3c24xx_eint_data *eint_data = ddata->eint_data;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  207  	int parent_irq = eint_data->parents[data->hwirq];
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  208  	struct irq_chip *parent_chip = irq_get_chip(parent_irq);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  209  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  210  	parent_chip->irq_ack(irq_get_irq_data(parent_irq));
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  211  }
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  212  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  213  static void s3c2410_eint0_3_mask(struct irq_data *data)
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  214  {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  215  	struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(data);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  216  	struct s3c24xx_eint_domain_data *ddata = bank->irq_domain->host_data;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  217  	struct s3c24xx_eint_data *eint_data = ddata->eint_data;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  218  	int parent_irq = eint_data->parents[data->hwirq];
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  219  	struct irq_chip *parent_chip = irq_get_chip(parent_irq);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  220  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  221  	parent_chip->irq_mask(irq_get_irq_data(parent_irq));
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  222  }
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  223  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  224  static void s3c2410_eint0_3_unmask(struct irq_data *data)
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  225  {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  226  	struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(data);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  227  	struct s3c24xx_eint_domain_data *ddata = bank->irq_domain->host_data;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  228  	struct s3c24xx_eint_data *eint_data = ddata->eint_data;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  229  	int parent_irq = eint_data->parents[data->hwirq];
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  230  	struct irq_chip *parent_chip = irq_get_chip(parent_irq);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  231  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  232  	parent_chip->irq_unmask(irq_get_irq_data(parent_irq));
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  233  }
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  234  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  235  static struct irq_chip s3c2410_eint0_3_chip = {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  236  	.name		= "s3c2410-eint0_3",
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  237  	.irq_ack	= s3c2410_eint0_3_ack,
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  238  	.irq_mask	= s3c2410_eint0_3_mask,
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  239  	.irq_unmask	= s3c2410_eint0_3_unmask,
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  240  	.irq_set_type	= s3c24xx_eint_type,
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  241  };
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  242  
bd0b9ac4 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Thomas Gleixner 2015-09-14  243  static void s3c2410_demux_eint0_3(struct irq_desc *desc)
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  244  {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  245  	struct irq_data *data = irq_desc_get_irq_data(desc);
5663bb27 drivers/pinctrl/samsung/pinctrl-s3c24xx.c Jiang Liu       2015-06-04  246  	struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  247  	unsigned int virq;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  248  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  249  	/* the first 4 eints have a simple 1 to 1 mapping */
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  250  	virq = irq_linear_revmap(eint_data->domains[data->hwirq], data->hwirq);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  251  	/* Something must be really wrong if an unmapped EINT is unmasked */
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  252  	BUG_ON(!virq);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  253  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  254  	generic_handle_irq(virq);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  255  }
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  256  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  257  /* Handling of EINTs 0-3 on S3C2412 and S3C2413 */
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  258  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  259  static void s3c2412_eint0_3_ack(struct irq_data *data)
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  260  {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  261  	struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(data);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  262  	struct samsung_pinctrl_drv_data *d = bank->drvdata;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  263  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  264  	unsigned long bitval = 1UL << data->hwirq;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21 @265  	writel(bitval, d->virt_base + EINTPEND_REG);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  266  }
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  267  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  268  static void s3c2412_eint0_3_mask(struct irq_data *data)
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  269  {
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  270  	struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(data);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  271  	struct samsung_pinctrl_drv_data *d = bank->drvdata;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  272  	unsigned long mask;
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  273  
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21 @274  	mask = readl(d->virt_base + EINTMASK_REG);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  275  	mask |= (1UL << data->hwirq);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  276  	writel(mask, d->virt_base + EINTMASK_REG);
af99a750 drivers/pinctrl/pinctrl-s3c24xx.c         Heiko Stuebner  2013-05-21  277  }

:::::: The code at line 154 was first introduced by commit
:::::: af99a7507469d4fa6dd4d8d633e093b1ff7aff6e pinctrl: Add pinctrl-s3c24xx driver

:::::: TO: Heiko Stuebner <heiko@xxxxxxxxx>
:::::: CC: Kukjin Kim <kgene.kim@xxxxxxxxxxx>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux