~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arm/mach-mx3/mx31moboard-marxbot.c

Version: ~ [ linux-5.4-rc7 ] ~ [ linux-5.3.10 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.83 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.153 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.200 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.200 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.76 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * Copyright (C) 2009 Valentin Longchamp, EPFL Mobots group
  3  *
  4  * This program is free software; you can redistribute it and/or modify
  5  * it under the terms of the GNU General Public License as published by
  6  * the Free Software Foundation; either version 2 of the License, or
  7  * (at your option) any later version.
  8  *
  9  * This program is distributed in the hope that it will be useful,
 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 12  * GNU General Public License for more details.
 13  *
 14  * You should have received a copy of the GNU General Public License
 15  * along with this program; if not, write to the Free Software
 16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 17  */
 18 
 19 #include <linux/gpio.h>
 20 #include <linux/init.h>
 21 #include <linux/interrupt.h>
 22 #include <linux/platform_device.h>
 23 #include <linux/types.h>
 24 
 25 #include <mach/common.h>
 26 #include <mach/hardware.h>
 27 #include <mach/imx-uart.h>
 28 #include <mach/iomux-mx3.h>
 29 #include <mach/mmc.h>
 30 
 31 #include "devices.h"
 32 
 33 static unsigned int marxbot_pins[] = {
 34         /* SDHC2 */
 35         MX31_PIN_PC_PWRON__SD2_DATA3, MX31_PIN_PC_VS1__SD2_DATA2,
 36         MX31_PIN_PC_READY__SD2_DATA1, MX31_PIN_PC_WAIT_B__SD2_DATA0,
 37         MX31_PIN_PC_CD2_B__SD2_CLK, MX31_PIN_PC_CD1_B__SD2_CMD,
 38         MX31_PIN_ATA_DIOR__GPIO3_28, MX31_PIN_ATA_DIOW__GPIO3_29,
 39         /* CSI */
 40         MX31_PIN_CSI_D4__CSI_D4, MX31_PIN_CSI_D5__CSI_D5,
 41         MX31_PIN_CSI_D6__CSI_D6, MX31_PIN_CSI_D7__CSI_D7,
 42         MX31_PIN_CSI_D8__CSI_D8, MX31_PIN_CSI_D9__CSI_D9,
 43         MX31_PIN_CSI_D10__CSI_D10, MX31_PIN_CSI_D11__CSI_D11,
 44         MX31_PIN_CSI_D12__CSI_D12, MX31_PIN_CSI_D13__CSI_D13,
 45         MX31_PIN_CSI_D14__CSI_D14, MX31_PIN_CSI_D15__CSI_D15,
 46         MX31_PIN_CSI_HSYNC__CSI_HSYNC, MX31_PIN_CSI_MCLK__CSI_MCLK,
 47         MX31_PIN_CSI_PIXCLK__CSI_PIXCLK, MX31_PIN_CSI_VSYNC__CSI_VSYNC,
 48         MX31_PIN_GPIO3_0__GPIO3_0, MX31_PIN_GPIO3_1__GPIO3_1,
 49         MX31_PIN_TXD2__GPIO1_28,
 50         /* dsPIC resets */
 51         MX31_PIN_STXD5__GPIO1_21, MX31_PIN_SRXD5__GPIO1_22,
 52 };
 53 
 54 #define SDHC2_CD IOMUX_TO_GPIO(MX31_PIN_ATA_DIOR)
 55 #define SDHC2_WP IOMUX_TO_GPIO(MX31_PIN_ATA_DIOW)
 56 
 57 static int marxbot_sdhc2_get_ro(struct device *dev)
 58 {
 59         return !gpio_get_value(SDHC2_WP);
 60 }
 61 
 62 static int marxbot_sdhc2_init(struct device *dev, irq_handler_t detect_irq,
 63                 void *data)
 64 {
 65         int ret;
 66 
 67         ret = gpio_request(SDHC2_CD, "sdhc-detect");
 68         if (ret)
 69                 return ret;
 70 
 71         gpio_direction_input(SDHC2_CD);
 72 
 73         ret = gpio_request(SDHC2_WP, "sdhc-wp");
 74         if (ret)
 75                 goto err_gpio_free;
 76         gpio_direction_input(SDHC2_WP);
 77 
 78         ret = request_irq(gpio_to_irq(SDHC2_CD), detect_irq,
 79                 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
 80                 "sdhc2-card-detect", data);
 81         if (ret)
 82                 goto err_gpio_free_2;
 83 
 84         return 0;
 85 
 86 err_gpio_free_2:
 87         gpio_free(SDHC2_WP);
 88 err_gpio_free:
 89         gpio_free(SDHC2_CD);
 90 
 91         return ret;
 92 }
 93 
 94 static void marxbot_sdhc2_exit(struct device *dev, void *data)
 95 {
 96         free_irq(gpio_to_irq(SDHC2_CD), data);
 97         gpio_free(SDHC2_WP);
 98         gpio_free(SDHC2_CD);
 99 }
100 
101 static struct imxmmc_platform_data sdhc2_pdata = {
102         .get_ro = marxbot_sdhc2_get_ro,
103         .init   = marxbot_sdhc2_init,
104         .exit   = marxbot_sdhc2_exit,
105 };
106 
107 #define TRSLAT_RST_B    IOMUX_TO_GPIO(MX31_PIN_STXD5)
108 #define DSPICS_RST_B    IOMUX_TO_GPIO(MX31_PIN_SRXD5)
109 
110 static void dspics_resets_init(void)
111 {
112         if (!gpio_request(TRSLAT_RST_B, "translator-rst")) {
113                 gpio_direction_output(TRSLAT_RST_B, 1);
114                 gpio_export(TRSLAT_RST_B, false);
115         }
116 
117         if (!gpio_request(DSPICS_RST_B, "dspics-rst")) {
118                 gpio_direction_output(DSPICS_RST_B, 1);
119                 gpio_export(DSPICS_RST_B, false);
120         }
121 }
122 
123 /*
124  * system init for baseboard usage. Will be called by mx31moboard init.
125  */
126 void __init mx31moboard_marxbot_init(void)
127 {
128         printk(KERN_INFO "Initializing mx31marxbot peripherals\n");
129 
130         mxc_iomux_setup_multiple_pins(marxbot_pins, ARRAY_SIZE(marxbot_pins),
131                 "marxbot");
132 
133         dspics_resets_init();
134 
135         mxc_register_device(&mxcsdhc_device1, &sdhc2_pdata);
136 }
137 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp