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