root/arch/arm/mach-omap1/gpio15xx.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. omap15xx_gpio_init

   1 /*
   2  * OMAP15xx specific gpio init
   3  *
   4  * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
   5  *
   6  * Author:
   7  *      Charulatha V <charu@ti.com>
   8  *
   9  * This program is free software; you can redistribute it and/or
  10  * modify it under the terms of the GNU General Public License as
  11  * published by the Free Software Foundation version 2.
  12  *
  13  * This program is distributed "as is" WITHOUT ANY WARRANTY of any
  14  * kind, whether express or implied; without even the implied warranty
  15  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16  * GNU General Public License for more details.
  17  */
  18 
  19 #include <linux/gpio.h>
  20 #include <linux/platform_data/gpio-omap.h>
  21 
  22 #include <mach/irqs.h>
  23 
  24 #define OMAP1_MPUIO_VBASE               OMAP1_MPUIO_BASE
  25 #define OMAP1510_GPIO_BASE              0xFFFCE000
  26 
  27 /* gpio1 */
  28 static struct resource omap15xx_mpu_gpio_resources[] = {
  29         {
  30                 .start  = OMAP1_MPUIO_VBASE,
  31                 .end    = OMAP1_MPUIO_VBASE + SZ_2K - 1,
  32                 .flags  = IORESOURCE_MEM,
  33         },
  34         {
  35                 .start  = INT_MPUIO,
  36                 .flags  = IORESOURCE_IRQ,
  37         },
  38 };
  39 
  40 static struct omap_gpio_reg_offs omap15xx_mpuio_regs = {
  41         .revision       = USHRT_MAX,
  42         .direction      = OMAP_MPUIO_IO_CNTL,
  43         .datain         = OMAP_MPUIO_INPUT_LATCH,
  44         .dataout        = OMAP_MPUIO_OUTPUT,
  45         .irqstatus      = OMAP_MPUIO_GPIO_INT,
  46         .irqenable      = OMAP_MPUIO_GPIO_MASKIT,
  47         .irqenable_inv  = true,
  48         .irqctrl        = OMAP_MPUIO_GPIO_INT_EDGE,
  49 };
  50 
  51 static struct omap_gpio_platform_data omap15xx_mpu_gpio_config = {
  52         .is_mpuio               = true,
  53         .bank_width             = 16,
  54         .bank_stride            = 1,
  55         .regs                   = &omap15xx_mpuio_regs,
  56 };
  57 
  58 static struct platform_device omap15xx_mpu_gpio = {
  59         .name           = "omap_gpio",
  60         .id             = 0,
  61         .dev            = {
  62                 .platform_data = &omap15xx_mpu_gpio_config,
  63         },
  64         .num_resources = ARRAY_SIZE(omap15xx_mpu_gpio_resources),
  65         .resource = omap15xx_mpu_gpio_resources,
  66 };
  67 
  68 /* gpio2 */
  69 static struct resource omap15xx_gpio_resources[] = {
  70         {
  71                 .start  = OMAP1510_GPIO_BASE,
  72                 .end    = OMAP1510_GPIO_BASE + SZ_2K - 1,
  73                 .flags  = IORESOURCE_MEM,
  74         },
  75         {
  76                 .start  = INT_GPIO_BANK1,
  77                 .flags  = IORESOURCE_IRQ,
  78         },
  79 };
  80 
  81 static struct omap_gpio_reg_offs omap15xx_gpio_regs = {
  82         .revision       = USHRT_MAX,
  83         .direction      = OMAP1510_GPIO_DIR_CONTROL,
  84         .datain         = OMAP1510_GPIO_DATA_INPUT,
  85         .dataout        = OMAP1510_GPIO_DATA_OUTPUT,
  86         .irqstatus      = OMAP1510_GPIO_INT_STATUS,
  87         .irqenable      = OMAP1510_GPIO_INT_MASK,
  88         .irqenable_inv  = true,
  89         .irqctrl        = OMAP1510_GPIO_INT_CONTROL,
  90         .pinctrl        = OMAP1510_GPIO_PIN_CONTROL,
  91 };
  92 
  93 static struct omap_gpio_platform_data omap15xx_gpio_config = {
  94         .bank_width             = 16,
  95         .regs                   = &omap15xx_gpio_regs,
  96 };
  97 
  98 static struct platform_device omap15xx_gpio = {
  99         .name           = "omap_gpio",
 100         .id             = 1,
 101         .dev            = {
 102                 .platform_data = &omap15xx_gpio_config,
 103         },
 104         .num_resources = ARRAY_SIZE(omap15xx_gpio_resources),
 105         .resource = omap15xx_gpio_resources,
 106 };
 107 
 108 /*
 109  * omap15xx_gpio_init needs to be done before
 110  * machine_init functions access gpio APIs.
 111  * Hence omap15xx_gpio_init is a postcore_initcall.
 112  */
 113 static int __init omap15xx_gpio_init(void)
 114 {
 115         if (!cpu_is_omap15xx())
 116                 return -EINVAL;
 117 
 118         platform_device_register(&omap15xx_mpu_gpio);
 119         platform_device_register(&omap15xx_gpio);
 120 
 121         return 0;
 122 }
 123 postcore_initcall(omap15xx_gpio_init);

/* [<][>][^][v][top][bottom][index][help] */