[gpio:fixes 6/6] drivers/gpio/gpio-mcp23s08.c:294:12: error: 'struct mcp23s08' has no member named 'ops'

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

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git fixes
head:   7b74feff6fdb0820252b75b2313ad7bccfc8515b
commit: 7b74feff6fdb0820252b75b2313ad7bccfc8515b [6/6] gpio:mcp23s08 Fixed missing interrupts
config: i386-randconfig-x070-201711 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        git checkout 7b74feff6fdb0820252b75b2313ad7bccfc8515b
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   drivers/gpio/gpio-mcp23s08.c: In function 'mcp23s08_irq':
>> drivers/gpio/gpio-mcp23s08.c:294:12: error: 'struct mcp23s08' has no member named 'ops'
     gpio = mcp->ops->read(mcp, MCP_GPIO);
               ^~
>> drivers/gpio/gpio-mcp23s08.c:335:4: error: expected ')' before 'intcap_mask'
       intcap_mask = 0xFF00;
       ^~~~~~~~~~~
>> drivers/gpio/gpio-mcp23s08.c:357:2: error: expected expression before '}' token
     }
     ^
   drivers/gpio/gpio-mcp23s08.c:276:19: warning: unused variable 'gpio_set' [-Wunused-variable]
      defval_changed, gpio_set;
                      ^~~~~~~~
   drivers/gpio/gpio-mcp23s08.c:276:3: warning: unused variable 'defval_changed' [-Wunused-variable]
      defval_changed, gpio_set;
      ^~~~~~~~~~~~~~
   drivers/gpio/gpio-mcp23s08.c:275:33: warning: unused variable 'gpio_bit_changed' [-Wunused-variable]
     bool intf_set, intcap_changed, gpio_bit_changed,
                                    ^~~~~~~~~~~~~~~~
   drivers/gpio/gpio-mcp23s08.c:275:17: warning: unused variable 'intcap_changed' [-Wunused-variable]
     bool intf_set, intcap_changed, gpio_bit_changed,
                    ^~~~~~~~~~~~~~
   drivers/gpio/gpio-mcp23s08.c:274:15: warning: unused variable 'child_irq' [-Wunused-variable]
     unsigned int child_irq;
                  ^~~~~~~~~

vim +294 drivers/gpio/gpio-mcp23s08.c

   288			return IRQ_HANDLED;
   289		}
   290	
   291		mcp->cache[MCP_INTCAP] = intcap;
   292	
   293		/* This clears the interrupt(configurable on S18) */
 > 294		gpio = mcp->ops->read(mcp, MCP_GPIO);
   295		if (gpio < 0) {
   296			mutex_unlock(&mcp->lock);
   297			return IRQ_HANDLED;
   298		}
   299		gpio_orig = mcp->cache[MCP_GPIO];
   300		mcp->cache[MCP_GPIO] = gpio;
   301		mutex_unlock(&mcp->lock);
   302	
   303		if (mcp->cache[MCP_INTF] == 0) {
   304			/* There is no interrupt pending */
   305			return IRQ_HANDLED;
   306		}
   307	
   308		dev_dbg(mcp->chip.parent,
   309			"intcap 0x%04X intf 0x%04X gpio_orig 0x%04X gpio 0x%04X\n",
   310			intcap, intf, gpio_orig, gpio);
   311	
   312		for (i = 0; i < mcp->chip.ngpio; i++) {
   313			/* We must check all of the inputs on the chip,
   314			 * otherwise we may not notice a change on >=2 pins.
   315			 *
   316			 * On at least the mcp23s17, INTCAP is only updated
   317			 * one byte at a time(INTCAPA and INTCAPB are
   318			 * not written to at the same time - only on a per-bank
   319			 * basis).
   320			 *
   321			 * INTF only contains the single bit that caused the
   322			 * interrupt per-bank.  On the mcp23s17, there is
   323			 * INTFA and INTFB.  If two pins are changed on the A
   324			 * side at the same time, INTF will only have one bit
   325			 * set.  If one pin on the A side and one pin on the B
   326			 * side are changed at the same time, INTF will have
   327			 * two bits set.  Thus, INTF can't be the only check
   328			 * to see if the input has changed.
   329			 */
   330	
   331			intf_set = BIT(i) & mcp->cache[MCP_INTF];
   332			if (i < 8 && intf_set)
   333				intcap_mask = 0x00FF;
   334			else if (i >= 8 && intf_set
 > 335				intcap_mask = 0xFF00;
   336			else
   337				intcap_mask = 0x00;
   338	
   339			intcap_changed = (intcap_mask &
   340				(BIT(i) & mcp->cache[MCP_INTCAP])) !=
   341				(intcap_mask & (BIT(i) & gpio_orig));
   342			gpio_set = BIT(i) & mcp->cache[MCP_GPIO];
   343			gpio_bit_changed = (BIT(i) & gpio_orig) !=
   344				(BIT(i) & mcp->cache[MCP_GPIO]);
   345			defval_changed = (BIT(i) & mcp->cache[MCP_INTCON]) &&
   346				((BIT(i) & mcp->cache[MCP_GPIO]) !=
   347				(BIT(i) & mcp->cache[MCP_DEFVAL]));
   348	
   349			if (((gpio_bit_changed || intcap_changed) &&
   350				(BIT(i) & mcp->irq_rise) && gpio_set) ||
   351			    ((gpio_bit_changed || intcap_changed) &&
   352				(BIT(i) & mcp->irq_fall) && !gpio_set) ||
   353			    defval_changed) {
   354				child_irq = irq_find_mapping(mcp->chip.irqdomain, i);
   355				handle_nested_irq(child_irq);
   356			}
 > 357		}
   358	
   359		return IRQ_HANDLED;
   360	}

---
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