]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - board/gen860t/ioport.c
pcm051: use ti_am335x_common.h config
[karo-tx-uboot.git] / board / gen860t / ioport.c
index 5d6524dbd3804e965f120d9f0eb28c626f3b53ef..7cd209b7ac7d8ab733f5fa8baaa42d97fd5440c3 100644 (file)
@@ -2,23 +2,7 @@
  * (C) Copyright 2000
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
 const mpc8xx_iop_conf_t iop_conf_tab[NUM_PORTS][PORT_BITS] = {
     /*
         * Port A configuration
-        * Pin          Signal                          Type    Active          Initial state
-        * PA7          fpgaProgramLowOut       Out             Low                     High
+        * Pin  Signal                                  Type    Active  Initial state
+        * PA7  fpgaProgramLowOut               Out             Low                     High
+        * PA1  fpgaCoreVoltageFailLow  In              Low                     N/A
         */
-    {  /*          conf ppar psor pdir podr pdat pint     function             */
+    {  /*          conf ppar psor pdir podr pdat pint     function             */
        /* N/A  */ { 0,   0,   0,   0,   0,   0,   0 }, /* No pin                       */
        /* N/A  */ { 0,   0,   0,   0,   0,   0,   0 }, /* No pin                       */
        /* PA15 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
@@ -62,22 +47,32 @@ const mpc8xx_iop_conf_t iop_conf_tab[NUM_PORTS][PORT_BITS] = {
        /* PA4  */ { 1,   0,   0,   1,   0,   0,   0 }, /* red bicolor LED 0*/
        /* PA3  */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* PA2  */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
+#if !defined(CONFIG_SC)
+       /* PA1  */ { 1,   0,   0,   0,   0,   0,   0 }, /*      fpgaCoreVoltageFail*/
+#else
        /* PA1  */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
+#endif
        /* PA0  */ { 0,   0,   0,   0,   0,   0,   0 }  /*      */
     },
 
        /*
+        * Port B configuration
         * Pin          Signal                  Type            Active          Initial state
         * PB14         docBusyLowIn    In                      Low                     X
         * PB15         gpio1Sig                Out                     High            Low
         * PB16         fpgaDoneBi              In                      High            X
-        * PB17         swBitOkLowOut   Out                     Low                     Low
+        * PB17         swBitOkLowOut   Out                     Low                     High
         * PB19         speakerVolSig   Out/Hi-Z        High/Low        High (Hi-Z)
         * PB22         fpgaInitLowBi   In                      Low                     X
         * PB23         batteryOkSig    In                      High            X
-     */
-    {  /*          conf ppar psor pdir podr pdat pint    function                      */
-       /* PB31 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
+        * PB31         pulseCatcherClr Out                     High            0
+        */
+       {       /*          conf ppar psor pdir podr pdat pint    function                      */
+#if !defined(CONFIG_SC)
+       /* PB31 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
+#else
+       /* PB31 */ { 1,   0,   0,   1,   0,   0,   0 }, /* pulseCatcherClr      */
+#endif
        /* PB30 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* PB29 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* PB28 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
@@ -85,19 +80,32 @@ const mpc8xx_iop_conf_t iop_conf_tab[NUM_PORTS][PORT_BITS] = {
        /* PB26 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* PB25 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* PB24 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
+#if !defined(CONFIG_SC)
        /* PB23 */ { 1,   0,   0,   0,   0,   0,   0 }, /* batteryOk            */
+#else
+       /* PB23 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
+#endif
        /* PB22 */ { 1,   0,   0,   0,   0,   0,   0 }, /* fpgaInitLowBi        */
        /* PB21 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* PB20 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
+#if !defined(CONFIG_SC)
        /* PB19 */ { 1,   0,   0,   1,   1,   1,   0 }, /* speakerVol           */
+#else
+       /* PB19 */ { 0,   0,   0,   1,   1,   1,   0 }, /*      */
+#endif
        /* PB18 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
-       /* PB17 */ { 1,   0,   0,   1,   0,   0,   0 }, /* swBitOkLow           */
+       /* PB17 */ { 1,   0,   0,   1,   0,   1,   0 }, /* swBitOkLow           */
        /* PB16 */ { 1,   0,   0,   0,   0,   0,   0 }, /* fpgaDone                     */
        /* PB15 */ { 1,   0,   0,   1,   0,   0,   0 }, /* gpio1                        */
+#if !defined(CONFIG_SC)
        /* PB14 */ { 1,   0,   0,   0,   0,   0,   0 }  /* docBusyLow           */
-    },
+#else
+       /* PB14 */ { 0,   0,   0,   0,   0,   0,   0 }  /*      */
+#endif
+       },
 
        /*
+        * Port C configuration
         * Pin          Signal                          Type    Active          Initial state
         * PC4          i2cBus1EnSig            Out             High            High
         * PC5          i2cBus2EnSig            Out             High            High
@@ -108,29 +116,48 @@ const mpc8xx_iop_conf_t iop_conf_tab[NUM_PORTS][PORT_BITS] = {
         * PC12         systemBitOkIn           In              High            X
         * PC15         selfDreqLow                     In              Low                     X
         */
-    {  /*          conf ppar psor pdir podr pdat pint    function                      */
+       {       /*          conf ppar psor pdir podr pdat pint    function                      */
        /* N/A  */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* N/A  */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* PC15 */ { 1,   0,   0,   0,   0,   0,   0 }, /* selfDreqLowIn        */
        /* PC14 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* PC13 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
+#if !defined(CONFIG_SC)
        /* PC12 */ { 1,   0,   0,   0,   0,   0,   0 }, /* systemBitOkIn        */
+#else
+       /* PC12 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
+#endif
        /* PC11 */ { 1,   0,   0,   1,   0,   1,   0 }, /* fpgaResetLowOut      */
+#if !defined(CONFIG_SC)
        /* PC10 */ { 1,   0,   0,   1,   0,   1,   0 }, /* i2cBus4EnSig         */
+#else
+       /* PC10 */ { 0,   0,   0,   1,   0,   1,   0 }, /*      */
+#endif
        /* PC9  */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
+#if !defined(CONFIG_SC)
        /* PC8  */ { 1,   0,   0,   1,   0,   1,   0 }, /* i2cBus3EnSig         */
+#else
+       /* PC8  */ { 0,   0,   0,   1,   0,   1,   0 }, /*      */
+#endif
        /* PC7  */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* PC6  */ { 1,   0,   0,   1,   0,   1,   0 }, /* gpio0                        */
+#if !defined(CONFIG_SC)
        /* PC5  */ { 1,   0,   0,   1,   0,   1,   0 }, /* i2cBus2EnSig         */
        /* PC4  */ { 1,   0,   0,   1,   0,   1,   0 }, /* i2cBus1EnSig         */
+#else
+       /* PC5  */ { 0,   0,   0,   1,   0,   1,   0 }, /*      */
+       /* PC4  */ { 0,   0,   0,   1,   0,   1,   0 }, /*      */
+#endif
        /* N/A  */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* N/A  */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* N/A  */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* N/A  */ { 0,   0,   0,   0,   0,   0,   0 }  /*      */
-    },
+       },
 
-    /* Port D configuration */
-    {  /*          conf ppar psor pdir podr pdat pint     function                     */
+       /*
+        * Port D configuration
+        */
+       {       /*          conf ppar psor pdir podr pdat pint     function                     */
        /* N/A  */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* N/A  */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* PD15 */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
@@ -149,23 +176,23 @@ const mpc8xx_iop_conf_t iop_conf_tab[NUM_PORTS][PORT_BITS] = {
        /* N/A  */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* N/A  */ { 0,   0,   0,   0,   0,   0,   0 }, /*      */
        /* N/A  */ { 0,   0,   0,   0,   0,   0,   0 }  /*      */
-    }
+       }
 };
 
 /*
  * Configure the MPC8XX I/O ports per the ioport configuration table
- * (taken from ./cpu/mpc8260/cpu_init.c)
+ * (taken from ./arch/powerpc/cpu/mpc8260/cpu_init.c)
  */
-void
-config_mpc8xx_ioports(volatile immap_t *immr)
+void config_mpc8xx_ioports (volatile immap_t * immr)
 {
-    int portnum;
+       int portnum;
 
-    for (portnum = 0; portnum < NUM_PORTS; portnum++) {
+       for (portnum = 0; portnum < NUM_PORTS; portnum++) {
                uint pmsk = 0, ppar = 0, psor = 0, pdir = 0;
                uint podr = 0, pdat = 0, pint = 0;
                uint msk = 1;
-               mpc8xx_iop_conf_t *iopc = (mpc8xx_iop_conf_t *)&iop_conf_tab[portnum][0];
+               mpc8xx_iop_conf_t *iopc =
+                       (mpc8xx_iop_conf_t *) & iop_conf_tab[portnum][0];
                mpc8xx_iop_conf_t *eiopc = iopc + PORT_BITS;
 
                /*
@@ -173,104 +200,132 @@ config_mpc8xx_ioports(volatile immap_t *immr)
                 * in the configuration tables.
                 */
                if (portnum != 1) {
-                       iopc = (mpc8xx_iop_conf_t *)&iop_conf_tab[portnum][2];
+                       iopc = (mpc8xx_iop_conf_t *) &
+                               iop_conf_tab[portnum][2];
                }
 
                /*
                 * NOTE: index 0 refers to pin 17, index 17 refers to pin 0
                 */
                while (iopc < eiopc) {
-               if (iopc->conf) {
+                       if (iopc->conf) {
                                pmsk |= msk;
-                               if (iopc->ppar) ppar |= msk;
-                               if (iopc->psor) psor |= msk;
-                               if (iopc->pdir) pdir |= msk;
-                               if (iopc->podr) podr |= msk;
-                               if (iopc->pdat) pdat |= msk;
-                               if (iopc->pint) pint |= msk;
-                   }
-                   msk <<= 1;
-                 iopc++;
+                               if (iopc->ppar)
+                                       ppar |= msk;
+                               if (iopc->psor)
+                                       psor |= msk;
+                               if (iopc->pdir)
+                                       pdir |= msk;
+                               if (iopc->podr)
+                                       podr |= msk;
+                               if (iopc->pdat)
+                                       pdat |= msk;
+                               if (iopc->pint)
+                                       pint |= msk;
+                       }
+                       msk <<= 1;
+                       iopc++;
                }
 
-               PRINTF("%s:%d:\n  portnum=%d ", __FUNCTION__, __LINE__, portnum);
+               PRINTF ("%s:%d:\n  portnum=%d ", __FUNCTION__, __LINE__,
+                       portnum);
 #ifdef IOPORT_DEBUG
-               switch(portnum) {
-                       case 0: printf("(A)\n"); break;
-                       case 1: printf("(B)\n"); break;
-                       case 2: printf("(C)\n"); break;
-                       case 3: printf("(D)\n"); break;
-                       default: printf("(?)\n"); break;
+               switch (portnum) {
+               case 0:
+                       printf ("(A)\n");
+                       break;
+               case 1:
+                       printf ("(B)\n");
+                       break;
+               case 2:
+                       printf ("(C)\n");
+                       break;
+               case 3:
+                       printf ("(D)\n");
+                       break;
+               default:
+                       printf ("(?)\n");
+                       break;
                }
 #endif
-               PRINTF("  ppar=0x%.8x  pdir=0x%.8x  podr=0x%.8x\n"
-                          "  pdat=0x%.8x  psor=0x%.8x  pint=0x%.8x  pmsk=0x%.8x\n",
-                          ppar, pdir, podr, pdat, psor, pint, pmsk);
+               PRINTF ("  ppar=0x%.8x  pdir=0x%.8x  podr=0x%.8x\n"
+                       "  pdat=0x%.8x  psor=0x%.8x  pint=0x%.8x  pmsk=0x%.8x\n",
+                       ppar, pdir, podr, pdat, psor, pint, pmsk);
 
                /*
                 * Have to handle the ioports on a port-by-port basis since there
                 * are three different flavors.
                 */
                if (pmsk != 0) {
-                   uint tpmsk = ~pmsk;
+                       uint tpmsk = ~pmsk;
 
-                       if (0 == portnum) { /* port A */
-                       immr->im_ioport.iop_papar &= tpmsk;
-                       immr->im_ioport.iop_padat =
-                                       (immr->im_ioport.iop_padat & tpmsk) | pdat;
-                       immr->im_ioport.iop_padir =
-                                       (immr->im_ioport.iop_padir & tpmsk) | pdir;
-                       immr->im_ioport.iop_paodr =
-                                       (immr->im_ioport.iop_paodr & tpmsk) | podr;
-                       immr->im_ioport.iop_papar |= ppar;
-                       }
-                       else if (1 == portnum) { /* port B */
-                       immr->im_cpm.cp_pbpar &= tpmsk;
-                       immr->im_cpm.cp_pbdat = (immr->im_cpm.cp_pbdat & tpmsk) | pdat;
-                       immr->im_cpm.cp_pbdir = (immr->im_cpm.cp_pbdir & tpmsk) | pdir;
-                       immr->im_cpm.cp_pbodr = (immr->im_cpm.cp_pbodr & tpmsk) | podr;
-                       immr->im_cpm.cp_pbpar |= ppar;
-                       }
-                       else if (2 == portnum) { /* port C */
-                       immr->im_ioport.iop_pcpar &= tpmsk;
-                       immr->im_ioport.iop_pcdat =
-                                       (immr->im_ioport.iop_pcdat & tpmsk) | pdat;
-                       immr->im_ioport.iop_pcdir =
-                                       (immr->im_ioport.iop_pcdir & tpmsk) | pdir;
-                       immr->im_ioport.iop_pcint =
-                                       (immr->im_ioport.iop_pcint & tpmsk) | pint;
-                       immr->im_ioport.iop_pcso =
-                                       (immr->im_ioport.iop_pcso & tpmsk) | psor;
-                       immr->im_ioport.iop_pcpar |= ppar;
-                       }
-                       else if (3 == portnum) { /* port D */
-                       immr->im_ioport.iop_pdpar &= tpmsk;
-                       immr->im_ioport.iop_pddat =
-                                       (immr->im_ioport.iop_pddat & tpmsk) | pdat;
-                       immr->im_ioport.iop_pddir =
-                                       (immr->im_ioport.iop_pddir & tpmsk) | pdir;
-                       immr->im_ioport.iop_pdpar |= ppar;
+                       if (0 == portnum) {     /* port A */
+                               immr->im_ioport.iop_papar &= tpmsk;
+                               immr->im_ioport.iop_padat =
+                                       (immr->im_ioport.
+                                        iop_padat & tpmsk) | pdat;
+                               immr->im_ioport.iop_padir =
+                                       (immr->im_ioport.
+                                        iop_padir & tpmsk) | pdir;
+                               immr->im_ioport.iop_paodr =
+                                       (immr->im_ioport.
+                                        iop_paodr & tpmsk) | podr;
+                               immr->im_ioport.iop_papar |= ppar;
+                       } else if (1 == portnum) {      /* port B */
+                               immr->im_cpm.cp_pbpar &= tpmsk;
+                               immr->im_cpm.cp_pbdat =
+                                       (immr->im_cpm.
+                                        cp_pbdat & tpmsk) | pdat;
+                               immr->im_cpm.cp_pbdir =
+                                       (immr->im_cpm.
+                                        cp_pbdir & tpmsk) | pdir;
+                               immr->im_cpm.cp_pbodr =
+                                       (immr->im_cpm.
+                                        cp_pbodr & tpmsk) | podr;
+                               immr->im_cpm.cp_pbpar |= ppar;
+                       } else if (2 == portnum) {      /* port C */
+                               immr->im_ioport.iop_pcpar &= tpmsk;
+                               immr->im_ioport.iop_pcdat =
+                                       (immr->im_ioport.
+                                        iop_pcdat & tpmsk) | pdat;
+                               immr->im_ioport.iop_pcdir =
+                                       (immr->im_ioport.
+                                        iop_pcdir & tpmsk) | pdir;
+                               immr->im_ioport.iop_pcint =
+                                       (immr->im_ioport.
+                                        iop_pcint & tpmsk) | pint;
+                               immr->im_ioport.iop_pcso =
+                                       (immr->im_ioport.
+                                        iop_pcso & tpmsk) | psor;
+                               immr->im_ioport.iop_pcpar |= ppar;
+                       } else if (3 == portnum) {      /* port D */
+                               immr->im_ioport.iop_pdpar &= tpmsk;
+                               immr->im_ioport.iop_pddat =
+                                       (immr->im_ioport.
+                                        iop_pddat & tpmsk) | pdat;
+                               immr->im_ioport.iop_pddir =
+                                       (immr->im_ioport.
+                                        iop_pddir & tpmsk) | pdir;
+                               immr->im_ioport.iop_pdpar |= ppar;
                        }
                }
-    }
+       }
 
-       PRINTF("%s:%d: Port A:\n  papar=0x%.4x  padir=0x%.4x"
-                  "  paodr=0x%.4x\n  padat=0x%.4x\n", __FUNCTION__, __LINE__,
-                  immr->im_ioport.iop_papar, immr->im_ioport.iop_padir,
-                  immr->im_ioport.iop_paodr, immr->im_ioport.iop_padat);
-       PRINTF("%s:%d: Port B:\n  pbpar=0x%.8x  pbdir=0x%.8x"
-                  "  pbodr=0x%.8x\n  pbdat=0x%.8x\n", __FUNCTION__, __LINE__,
-                  immr->im_cpm.cp_pbpar, immr->im_cpm.cp_pbdir,
-                  immr->im_cpm.cp_pbodr, immr->im_cpm.cp_pbdat);
-       PRINTF("%s:%d: Port C:\n  pcpar=0x%.4x  pcdir=0x%.4x"
-                  "  pcdat=0x%.4x\n  pcso=0x%.4x  pcint=0x%.4x\n  ",
-                  __FUNCTION__, __LINE__, immr->im_ioport.iop_pcpar,
-                  immr->im_ioport.iop_pcdir, immr->im_ioport.iop_pcdat,
-                  immr->im_ioport.iop_pcso, immr->im_ioport.iop_pcint);
-       PRINTF("%s:%d: Port D:\n  pdpar=0x%.4x  pddir=0x%.4x"
-                  "  pddat=0x%.4x\n", __FUNCTION__, __LINE__,
-                  immr->im_ioport.iop_pdpar, immr->im_ioport.iop_pddir,
-                  immr->im_ioport.iop_pddat);
+       PRINTF ("%s:%d: Port A:\n  papar=0x%.4x  padir=0x%.4x"
+               "  paodr=0x%.4x\n  padat=0x%.4x\n", __FUNCTION__, __LINE__,
+               immr->im_ioport.iop_papar, immr->im_ioport.iop_padir,
+               immr->im_ioport.iop_paodr, immr->im_ioport.iop_padat);
+       PRINTF ("%s:%d: Port B:\n  pbpar=0x%.8x  pbdir=0x%.8x"
+               "  pbodr=0x%.8x\n  pbdat=0x%.8x\n", __FUNCTION__, __LINE__,
+               immr->im_cpm.cp_pbpar, immr->im_cpm.cp_pbdir,
+               immr->im_cpm.cp_pbodr, immr->im_cpm.cp_pbdat);
+       PRINTF ("%s:%d: Port C:\n  pcpar=0x%.4x  pcdir=0x%.4x"
+               "  pcdat=0x%.4x\n  pcso=0x%.4x  pcint=0x%.4x\n  ",
+               __FUNCTION__, __LINE__, immr->im_ioport.iop_pcpar,
+               immr->im_ioport.iop_pcdir, immr->im_ioport.iop_pcdat,
+               immr->im_ioport.iop_pcso, immr->im_ioport.iop_pcint);
+       PRINTF ("%s:%d: Port D:\n  pdpar=0x%.4x  pddir=0x%.4x"
+               "  pddat=0x%.4x\n", __FUNCTION__, __LINE__,
+               immr->im_ioport.iop_pdpar, immr->im_ioport.iop_pddir,
+               immr->im_ioport.iop_pddat);
 }
-
-/* vim: set ts=4 sw=4 tw=78: */