123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- S3C2410 GPIO Control
- ====================
- Introduction
- ------------
- The s3c2410 kernel provides an interface to configure and
- manipulate the state of the GPIO pins, and find out other
- information about them.
- There are a number of conditions attached to the configuration
- of the s3c2410 GPIO system, please read the Samsung provided
- data-sheet/users manual to find out the complete list.
- Headers
- -------
- See include/asm-arm/arch-s3c2410/regs-gpio.h for the list
- of GPIO pins, and the configuration values for them. This
- is included by using #include <asm/arch/regs-gpio.h>
- The GPIO management functions are defined in the hardware
- header include/asm-arm/arch-s3c2410/hardware.h which can be
- included by #include <asm/arch/hardware.h>
- A useful ammount of documentation can be found in the hardware
- header on how the GPIO functions (and others) work.
- Whilst a number of these functions do make some checks on what
- is passed to them, for speed of use, they may not always ensure
- that the user supplied data to them is correct.
- PIN Numbers
- -----------
- Each pin has an unique number associated with it in regs-gpio.h,
- eg S3C2410_GPA0 or S3C2410_GPF1. These defines are used to tell
- the GPIO functions which pin is to be used.
- Configuring a pin
- -----------------
- The following function allows the configuration of a given pin to
- be changed.
- void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function);
- Eg:
- s3c2410_gpio_cfgpin(S3C2410_GPA0, S3C2410_GPA0_ADDR0);
- s3c2410_gpio_cfgpin(S3C2410_GPE8, S3C2410_GPE8_SDDAT1);
- which would turn GPA0 into the lowest Address line A0, and set
- GPE8 to be connected to the SDIO/MMC controller's SDDAT1 line.
- Reading the current configuration
- ---------------------------------
- The current configuration of a pin can be read by using:
- s3c2410_gpio_getcfg(unsigned int pin);
- The return value will be from the same set of values which can be
- passed to s3c2410_gpio_cfgpin().
- Configuring a pull-up resistor
- ------------------------------
- A large proportion of the GPIO pins on the S3C2410 can have weak
- pull-up resistors enabled. This can be configured by the following
- function:
- void s3c2410_gpio_pullup(unsigned int pin, unsigned int to);
- Where the to value is zero to set the pull-up off, and 1 to enable
- the specified pull-up. Any other values are currently undefined.
- Getting the state of a PIN
- --------------------------
- The state of a pin can be read by using the function:
- unsigned int s3c2410_gpio_getpin(unsigned int pin);
- This will return either zero or non-zero. Do not count on this
- function returning 1 if the pin is set.
- Setting the state of a PIN
- --------------------------
- The value an pin is outputing can be modified by using the following:
- void s3c2410_gpio_setpin(unsigned int pin, unsigned int to);
- Which sets the given pin to the value. Use 0 to write 0, and 1 to
- set the output to 1.
- Getting the IRQ number associated with a PIN
- --------------------------------------------
- The following function can map the given pin number to an IRQ
- number to pass to the IRQ system.
- int s3c2410_gpio_getirq(unsigned int pin);
- Note, not all pins have an IRQ.
- Authour
- -------
- Ben Dooks, 03 October 2004
- (c) 2004 Ben Dooks, Simtec Electronics
|