MCPcopy Create free account
hub / github.com/WiringPi/WiringPi / pullUpDnControl

Function pullUpDnControl

wiringPi/wiringPi.c:2142–2216  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2140
2141
2142void pullUpDnControl (int pin, int pud)
2143{
2144 struct wiringPiNodeStruct *node = wiringPiNodes ;
2145
2146 setupCheck ("pullUpDnControl") ;
2147
2148 if ((pin & PI_GPIO_MASK) == 0) // On-Board Pin
2149 {
2150 switch(wiringPiMode) {
2151 default: //WPI_MODE_GPIO_SYS
2152 fprintf(stderr, "pinMode: invalid mode\n");
2153 return;
2154 case WPI_MODE_PINS:
2155 pin = pinToGpio [pin];
2156 break;
2157 case WPI_MODE_PHYS:
2158 pin = physToGpio [pin];
2159 break;
2160 case WPI_MODE_GPIO_DEVICE_BCM:
2161 return pullUpDnControlDevice(pin, pud);
2162 case WPI_MODE_GPIO_DEVICE_WPI:
2163 return pullUpDnControlDevice(pinToGpio[pin], pud);
2164 case WPI_MODE_GPIO_DEVICE_PHYS:
2165 return pullUpDnControlDevice(physToGpio[pin], pud);
2166 case WPI_MODE_GPIO:
2167 break;
2168 }
2169
2170 if (piRP1Model()) {
2171 unsigned int pullbits = pads[1+pin] & RP1_INV_PUD_MASK; // remove bits
2172 switch (pud){
2173 case PUD_OFF: pads[1+pin] = pullbits; break;
2174 case PUD_UP: pads[1+pin] = pullbits | RP1_PUD_UP; break;
2175 case PUD_DOWN: pads[1+pin] = pullbits | RP1_PUD_DOWN; break;
2176 default: return ; /* An illegal value */
2177 }
2178 } else {
2179 if (piGpioPupOffset == GPPUPPDN0)
2180 {
2181 // Pi 4B pull up/down method
2182 int pullreg = GPPUPPDN0 + (pin>>4);
2183 int pullshift = (pin & 0xf) << 1;
2184 unsigned int pullbits;
2185 unsigned int pull;
2186
2187 switch (pud) {
2188 case PUD_OFF: pull = 0; break;
2189 case PUD_UP: pull = 1; break;
2190 case PUD_DOWN: pull = 2; break;
2191 default: return ; /* An illegal value */
2192 }
2193
2194 pullbits = *(gpio + pullreg);
2195 pullbits &= ~(3 << pullshift);
2196 pullbits |= (pull << pullshift);
2197 *(gpio + pullreg) = pullbits;
2198 }
2199 else

Callers 15

doModeFunction · 0.85
myPullUpDnControlFunction · 0.85
mainFunction · 0.85
mainFunction · 0.85
mainFunction · 0.85
mainFunction · 0.85
mainFunction · 0.85
mainFunction · 0.85
pullUpDnControlExFunction · 0.85
runRemoteCommandsFunction · 0.85
adafruitLCDSetupFunction · 0.85
mainFunction · 0.85

Calls 5

setupCheckFunction · 0.85
pullUpDnControlDeviceFunction · 0.85
piRP1ModelFunction · 0.85
delayMicrosecondsFunction · 0.85
wiringPiFindNodeFunction · 0.85

Tested by 7

mainFunction · 0.68
mainFunction · 0.68
mainFunction · 0.68
mainFunction · 0.68
mainFunction · 0.68
mainFunction · 0.68
pullUpDnControlExFunction · 0.68