]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - drivers/fpga/xilinx.c
fpga: xilinx: Simplify load/dump/info function handling
[karo-tx-uboot.git] / drivers / fpga / xilinx.c
index b0e9cb35a31e9d005156fb652513d958ccf02035..8837f5c122e781a6bcb05f928a030b16dd1480ef 100644 (file)
 #include <spartan3.h>
 #include <zynqpl.h>
 
-#if 0
-#define FPGA_DEBUG
-#endif
-
-/* Define FPGA_DEBUG to get debug printf's */
-#ifdef FPGA_DEBUG
-#define        PRINTF(fmt,args...)     printf (fmt ,##args)
-#else
-#define PRINTF(fmt,args...)
-#endif
-
 /* Local Static Functions */
 static int xilinx_validate(xilinx_desc *desc, char *fn);
 
@@ -143,116 +132,22 @@ int fpga_loadbitstream(int devnum, char *fpgadata, size_t size)
 
 int xilinx_load(xilinx_desc *desc, const void *buf, size_t bsize)
 {
-       int ret_val = FPGA_FAIL;        /* assume a failure */
-
        if (!xilinx_validate (desc, (char *)__FUNCTION__)) {
                printf ("%s: Invalid device descriptor\n", __FUNCTION__);
-       } else
-               switch (desc->family) {
-               case xilinx_spartan2:
-#if defined(CONFIG_FPGA_SPARTAN2)
-                       PRINTF ("%s: Launching the Spartan-II Loader...\n",
-                                       __FUNCTION__);
-                       ret_val = spartan2_load(desc, buf, bsize);
-#else
-                       printf ("%s: No support for Spartan-II devices.\n",
-                                       __FUNCTION__);
-#endif
-                       break;
-               case xilinx_spartan3:
-#if defined(CONFIG_FPGA_SPARTAN3)
-                       PRINTF ("%s: Launching the Spartan-III Loader...\n",
-                                       __FUNCTION__);
-                       ret_val = spartan3_load(desc, buf, bsize);
-#else
-                       printf ("%s: No support for Spartan-III devices.\n",
-                                       __FUNCTION__);
-#endif
-                       break;
-               case xilinx_virtex2:
-#if defined(CONFIG_FPGA_VIRTEX2)
-                       PRINTF ("%s: Launching the Virtex-II Loader...\n",
-                                       __FUNCTION__);
-                       ret_val = virtex2_load(desc, buf, bsize);
-#else
-                       printf ("%s: No support for Virtex-II devices.\n",
-                                       __FUNCTION__);
-#endif
-                       break;
-               case xilinx_zynq:
-#if defined(CONFIG_FPGA_ZYNQPL)
-                       PRINTF("%s: Launching the Zynq PL Loader...\n",
-                              __func__);
-                       ret_val = zynq_load(desc, buf, bsize);
-#else
-                       printf("%s: No support for Zynq devices.\n",
-                              __func__);
-#endif
-                       break;
-
-               default:
-                       printf ("%s: Unsupported family type, %d\n",
-                                       __FUNCTION__, desc->family);
-               }
+               return FPGA_FAIL;
+       }
 
-       return ret_val;
+       return desc->operations->load(desc, buf, bsize);
 }
 
 int xilinx_dump(xilinx_desc *desc, const void *buf, size_t bsize)
 {
-       int ret_val = FPGA_FAIL;        /* assume a failure */
-
        if (!xilinx_validate (desc, (char *)__FUNCTION__)) {
                printf ("%s: Invalid device descriptor\n", __FUNCTION__);
-       } else
-               switch (desc->family) {
-               case xilinx_spartan2:
-#if defined(CONFIG_FPGA_SPARTAN2)
-                       PRINTF ("%s: Launching the Spartan-II Reader...\n",
-                                       __FUNCTION__);
-                       ret_val = spartan2_dump(desc, buf, bsize);
-#else
-                       printf ("%s: No support for Spartan-II devices.\n",
-                                       __FUNCTION__);
-#endif
-                       break;
-               case xilinx_spartan3:
-#if defined(CONFIG_FPGA_SPARTAN3)
-                       PRINTF ("%s: Launching the Spartan-III Reader...\n",
-                                       __FUNCTION__);
-                       ret_val = spartan3_dump(desc, buf, bsize);
-#else
-                       printf ("%s: No support for Spartan-III devices.\n",
-                                       __FUNCTION__);
-#endif
-                       break;
-               case xilinx_virtex2:
-#if defined( CONFIG_FPGA_VIRTEX2)
-                       PRINTF ("%s: Launching the Virtex-II Reader...\n",
-                                       __FUNCTION__);
-                       ret_val = virtex2_dump(desc, buf, bsize);
-#else
-                       printf ("%s: No support for Virtex-II devices.\n",
-                                       __FUNCTION__);
-#endif
-                       break;
-               case xilinx_zynq:
-#if defined(CONFIG_FPGA_ZYNQPL)
-                       PRINTF("%s: Launching the Zynq PL Reader...\n",
-                              __func__);
-                       ret_val = zynq_dump(desc, buf, bsize);
-#else
-                       printf("%s: No support for Zynq devices.\n",
-                              __func__);
-#endif
-                       break;
-
-               default:
-                       printf ("%s: Unsupported family type, %d\n",
-                                       __FUNCTION__, desc->family);
-               }
+               return FPGA_FAIL;
+       }
 
-       return ret_val;
+       return desc->operations->dump(desc, buf, bsize);
 }
 
 int xilinx_info(xilinx_desc *desc)
@@ -315,47 +210,7 @@ int xilinx_info(xilinx_desc *desc)
 
                if (desc->iface_fns) {
                        printf ("Device Function Table @ 0x%p\n", desc->iface_fns);
-                       switch (desc->family) {
-                       case xilinx_spartan2:
-#if defined(CONFIG_FPGA_SPARTAN2)
-                               spartan2_info(desc);
-#else
-                               /* just in case */
-                               printf ("%s: No support for Spartan-II devices.\n",
-                                               __FUNCTION__);
-#endif
-                               break;
-                       case xilinx_spartan3:
-#if defined(CONFIG_FPGA_SPARTAN3)
-                               spartan3_info(desc);
-#else
-                               /* just in case */
-                               printf ("%s: No support for Spartan-III devices.\n",
-                                               __FUNCTION__);
-#endif
-                               break;
-                       case xilinx_virtex2:
-#if defined(CONFIG_FPGA_VIRTEX2)
-                               virtex2_info(desc);
-#else
-                               /* just in case */
-                               printf ("%s: No support for Virtex-II devices.\n",
-                                               __FUNCTION__);
-#endif
-                               break;
-                       case xilinx_zynq:
-#if defined(CONFIG_FPGA_ZYNQPL)
-                               zynq_info(desc);
-#else
-                               /* just in case */
-                               printf("%s: No support for Zynq devices.\n",
-                                      __func__);
-#endif
-                               /* Add new family types here */
-                       default:
-                               /* we don't need a message here - we give one up above */
-                               ;
-                       }
+                       desc->operations->info(desc);
                } else
                        printf ("No Device Function Table.\n");