imx: Make imx25 compatible to mxc_gpio driver and fix in tx25
authorMatthias Weisser <weisserm@arcor.de>
Wed, 6 Jul 2011 00:28:32 +0000 (00:28 +0000)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Thu, 14 Jul 2011 13:41:24 +0000 (15:41 +0200)
Adding support for mxc_gpio driver for imx25 and fix names of registers in tx25
board.

Signed-off-by: Matthias Weisser <weisserm@arcor.de>
arch/arm/include/asm/arch-mx25/imx-regs.h
board/karo/tx25/tx25.c
include/mxc_gpio.h

index 62ee4d537b76ebf0a8beda12e380abc7bb851885..2ccb445975950c21b1ff6c565dc81208b53c20c4 100644 (file)
@@ -86,8 +86,8 @@ struct esdramc_regs {
 
 /* GPIO registers */
 struct gpio_regs {
-       u32 dr;         /* data */
-       u32 dir;        /* direction */
+       u32 gpio_dr;    /* data */
+       u32 gpio_dir;   /* direction */
        u32 psr;        /* pad satus */
        u32 icr1;       /* interrupt config 1 */
        u32 icr2;       /* interrupt config 2 */
@@ -357,4 +357,10 @@ struct aips_regs {
 #define WSR_UNLOCK1            0x5555
 #define WSR_UNLOCK2            0xAAAA
 
+/* Names used in GPIO driver */
+#define GPIO1_BASE_ADDR                IMX_GPIO1_BASE
+#define GPIO2_BASE_ADDR                IMX_GPIO2_BASE
+#define GPIO3_BASE_ADDR                IMX_GPIO3_BASE
+#define GPIO4_BASE_ADDR                IMX_GPIO4_BASE
+
 #endif                         /* _IMX_REGS_H */
index 269858c6eec1ade73d128fb0767a7a330f1a89f2..4088374bc557956ef01857b92c03cee66e32e269 100644 (file)
@@ -70,18 +70,18 @@ void tx25_fec_init(void)
        writel(0x0, &padctl->pad_d11);
 
        /* drop PHY power and assert reset (low) */
-       val = readl(&gpio4->dr) & ~((1 << 7) | (1 << 9));
-       writel(val, &gpio4->dr);
-       val = readl(&gpio4->dir) | (1 << 7) | (1 << 9);
-       writel(val, &gpio4->dir);
+       val = readl(&gpio4->gpio_dr) & ~((1 << 7) | (1 << 9));
+       writel(val, &gpio4->gpio_dr);
+       val = readl(&gpio4->gpio_dir) | (1 << 7) | (1 << 9);
+       writel(val, &gpio4->gpio_dir);
 
        mdelay(5);
 
        debug("resetting phy\n");
 
        /* turn on PHY power leaving reset asserted */
-       val = readl(&gpio4->dr) | 1 << 9;
-       writel(val, &gpio4->dr);
+       val = readl(&gpio4->gpio_dr) | 1 << 9;
+       writel(val, &gpio4->gpio_dr);
 
        mdelay(10);
 
@@ -111,19 +111,19 @@ void tx25_fec_init(void)
        /*
         * set each to 1 and make each an output
         */
-       val = readl(&gpio3->dr) | (1 << 10) | (1 << 11) | (1 << 12);
-       writel(val, &gpio3->dr);
-       val = readl(&gpio3->dir) | (1 << 10) | (1 << 11) | (1 << 12);
-       writel(val, &gpio3->dir);
+       val = readl(&gpio3->gpio_dr) | (1 << 10) | (1 << 11) | (1 << 12);
+       writel(val, &gpio3->gpio_dr);
+       val = readl(&gpio3->gpio_dir) | (1 << 10) | (1 << 11) | (1 << 12);
+       writel(val, &gpio3->gpio_dir);
 
        mdelay(22);             /* this value came from RedBoot */
 
        /*
         * deassert PHY reset
         */
-       val = readl(&gpio4->dr) | 1 << 7;
-       writel(val, &gpio4->dr);
-       writel(val, &gpio4->dr);
+       val = readl(&gpio4->gpio_dr) | 1 << 7;
+       writel(val, &gpio4->gpio_dr);
+       writel(val, &gpio4->gpio_dr);
 
        mdelay(5);
 
index 002ba61e00679ab4417a4d73db11e6e5f6eb3e99..f673dcecd690fb0c1e726a7ff3699a0837db61c6 100644 (file)
 #ifndef __MXC_GPIO_H
 #define __MXC_GPIO_H
 
+/* Converts a GPIO port number and the internal bit position
+ * to the GPIO number
+ */
+#define MXC_GPIO_PORT_TO_NUM(port, bit) (((port - 1) << 5) + (bit & 0x1f))
+
 enum mxc_gpio_direction {
        MXC_GPIO_DIRECTION_IN,
        MXC_GPIO_DIRECTION_OUT,