Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:06

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /*
0004  *  AMBA Plug & Play Device and Vendor name database: Created from GRLIB 3386.
0005  *
0006  *  COPYRIGHT (c) 2009.
0007  *  Aeroflex Gaisler.
0008  *
0009  *  The device and vendor definitions are extracted with a script from
0010  *  GRLIB.
0011  *
0012  * Redistribution and use in source and binary forms, with or without
0013  * modification, are permitted provided that the following conditions
0014  * are met:
0015  * 1. Redistributions of source code must retain the above copyright
0016  *    notice, this list of conditions and the following disclaimer.
0017  * 2. Redistributions in binary form must reproduce the above copyright
0018  *    notice, this list of conditions and the following disclaimer in the
0019  *    documentation and/or other materials provided with the distribution.
0020  *
0021  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0022  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0023  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0024  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0025  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0026  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0027  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0028  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0029  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0030  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0031  * POSSIBILITY OF SUCH DAMAGE.
0032  */
0033 
0034 #include <grlib/ambapp.h>
0035 #include <grlib/ambapp_ids.h>
0036 #include <string.h>
0037 
0038 #ifndef NULL
0039 #define NULL 0
0040 #endif
0041 
0042 typedef struct {
0043   int device_id;
0044   char *name;
0045 } ambapp_device_name;
0046 
0047 typedef struct {
0048   unsigned int vendor_id;
0049   char *name;
0050   ambapp_device_name *devices;
0051 } ambapp_vendor_devnames;
0052 
0053 /**************** AUTO GENERATED FROM devices.vhd ****************/
0054 static ambapp_device_name GAISLER_devices[] =
0055 {
0056   {GAISLER_LEON2DSU, "LEON2DSU"},
0057   {GAISLER_LEON3, "LEON3"},
0058   {GAISLER_LEON3DSU, "LEON3DSU"},
0059   {GAISLER_ETHAHB, "ETHAHB"},
0060   {GAISLER_APBMST, "APBMST"},
0061   {GAISLER_AHBUART, "AHBUART"},
0062   {GAISLER_SRCTRL, "SRCTRL"},
0063   {GAISLER_SDCTRL, "SDCTRL"},
0064   {GAISLER_SSRCTRL, "SSRCTRL"},
0065   {GAISLER_I2C2AHB, "I2C2AHB"},
0066   {GAISLER_APBUART, "APBUART"},
0067   {GAISLER_IRQMP, "IRQMP"},
0068   {GAISLER_AHBRAM, "AHBRAM"},
0069   {GAISLER_AHBDPRAM, "AHBDPRAM"},
0070   {GAISLER_GRIOMMU2, "GRIOMMU2"},
0071   {GAISLER_GPTIMER, "GPTIMER"},
0072   {GAISLER_PCITRG, "PCITRG"},
0073   {GAISLER_PCISBRG, "PCISBRG"},
0074   {GAISLER_PCIFBRG, "PCIFBRG"},
0075   {GAISLER_PCITRACE, "PCITRACE"},
0076   {GAISLER_DMACTRL, "DMACTRL"},
0077   {GAISLER_AHBTRACE, "AHBTRACE"},
0078   {GAISLER_DSUCTRL, "DSUCTRL"},
0079   {GAISLER_CANAHB, "CANAHB"},
0080   {GAISLER_GPIO, "GPIO"},
0081   {GAISLER_AHBROM, "AHBROM"},
0082   {GAISLER_AHBJTAG, "AHBJTAG"},
0083   {GAISLER_ETHMAC, "ETHMAC"},
0084   {GAISLER_SWNODE, "SWNODE"},
0085   {GAISLER_SPW, "SPW"},
0086   {GAISLER_AHB2AHB, "AHB2AHB"},
0087   {GAISLER_USBDC, "USBDC"},
0088   {GAISLER_USB_DCL, "USB_DCL"},
0089   {GAISLER_DDRMP, "DDRMP"},
0090   {GAISLER_ATACTRL, "ATACTRL"},
0091   {GAISLER_DDRSP, "DDRSP"},
0092   {GAISLER_EHCI, "EHCI"},
0093   {GAISLER_UHCI, "UHCI"},
0094   {GAISLER_I2CMST, "I2CMST"},
0095   {GAISLER_SPW2, "SPW2"},
0096   {GAISLER_AHBDMA, "AHBDMA"},
0097   {GAISLER_NUHOSP3, "NUHOSP3"},
0098   {GAISLER_CLKGATE, "CLKGATE"},
0099   {GAISLER_SPICTRL, "SPICTRL"},
0100   {GAISLER_DDR2SP, "DDR2SP"},
0101   {GAISLER_SLINK, "SLINK"},
0102   {GAISLER_GRTM, "GRTM"},
0103   {GAISLER_GRTC, "GRTC"},
0104   {GAISLER_GRPW, "GRPW"},
0105   {GAISLER_GRCTM, "GRCTM"},
0106   {GAISLER_GRHCAN, "GRHCAN"},
0107   {GAISLER_GRFIFO, "GRFIFO"},
0108   {GAISLER_GRADCDAC, "GRADCDAC"},
0109   {GAISLER_GRPULSE, "GRPULSE"},
0110   {GAISLER_GRTIMER, "GRTIMER"},
0111   {GAISLER_AHB2PP, "AHB2PP"},
0112   {GAISLER_GRVERSION, "GRVERSION"},
0113   {GAISLER_APB2PW, "APB2PW"},
0114   {GAISLER_PW2APB, "PW2APB"},
0115   {GAISLER_GRCAN, "GRCAN"},
0116   {GAISLER_I2CSLV, "I2CSLV"},
0117   {GAISLER_U16550, "U16550"},
0118   {GAISLER_AHBMST_EM, "AHBMST_EM"},
0119   {GAISLER_AHBSLV_EM, "AHBSLV_EM"},
0120   {GAISLER_GRTESTMOD, "GRTESTMOD"},
0121   {GAISLER_ASCS, "ASCS"},
0122   {GAISLER_IPMVBCTRL, "IPMVBCTRL"},
0123   {GAISLER_SPIMCTRL, "SPIMCTRL"},
0124   {GAISLER_L4STAT, "L4STAT"},
0125   {GAISLER_LEON4, "LEON4"},
0126   {GAISLER_LEON4DSU, "LEON4DSU"},
0127   {GAISLER_PWM, "PWM"},
0128   {GAISLER_L2CACHE, "L2CACHE"},
0129   {GAISLER_SDCTRL64, "SDCTRL64"},
0130   {GAISLER_GR1553B, "GR1553B"},
0131   {GAISLER_1553TST, "1553TST"},
0132   {GAISLER_GRIOMMU, "GRIOMMU"},
0133   {GAISLER_FTAHBRAM, "FTAHBRAM"},
0134   {GAISLER_FTSRCTRL, "FTSRCTRL"},
0135   {GAISLER_AHBSTAT, "AHBSTAT"},
0136   {GAISLER_LEON3FT, "LEON3FT"},
0137   {GAISLER_FTMCTRL, "FTMCTRL"},
0138   {GAISLER_FTSDCTRL, "FTSDCTRL"},
0139   {GAISLER_FTSRCTRL8, "FTSRCTRL8"},
0140   {GAISLER_MEMSCRUB, "MEMSCRUB"},
0141   {GAISLER_FTSDCTRL64, "FTSDCTRL64"},
0142   {GAISLER_NANDFCTRL, "NANDFCTRL"},
0143   {GAISLER_N2DLLCTRL, "N2DLLCTRL"},
0144   {GAISLER_N2PLLCTRL, "N2PLLCTRL"},
0145   {GAISLER_SPI2AHB, "SPI2AHB"},
0146   {GAISLER_DDRSDMUX, "DDRSDMUX"},
0147   {GAISLER_AHBFROM, "AHBFROM"},
0148   {GAISLER_PCIEXP, "PCIEXP"},
0149   {GAISLER_APBPS2, "APBPS2"},
0150   {GAISLER_VGACTRL, "VGACTRL"},
0151   {GAISLER_LOGAN, "LOGAN"},
0152   {GAISLER_SVGACTRL, "SVGACTRL"},
0153   {GAISLER_T1AHB, "T1AHB"},
0154   {GAISLER_MP7WRAP, "MP7WRAP"},
0155   {GAISLER_GRSYSMON, "GRSYSMON"},
0156   {GAISLER_GRACECTRL, "GRACECTRL"},
0157   {GAISLER_ATAHBSLV, "ATAHBSLV"},
0158   {GAISLER_ATAHBMST, "ATAHBMST"},
0159   {GAISLER_ATAPBSLV, "ATAPBSLV"},
0160   {GAISLER_MIGDDR2, "MIGDDR2"},
0161   {GAISLER_LCDCTRL, "LCDCTRL"},
0162   {GAISLER_SWITCHOVER, "SWITCHOVER"},
0163   {GAISLER_FIFOUART, "FIFOUART"},
0164   {GAISLER_MUXCTRL, "MUXCTRL"},
0165   {GAISLER_B1553BC, "B1553BC"},
0166   {GAISLER_B1553RT, "B1553RT"},
0167   {GAISLER_B1553BRM, "B1553BRM"},
0168   {GAISLER_AES, "AES"},
0169   {GAISLER_ECC, "ECC"},
0170   {GAISLER_PCIF, "PCIF"},
0171   {GAISLER_CLKMOD, "CLKMOD"},
0172   {GAISLER_HAPSTRAK, "HAPSTRAK"},
0173   {GAISLER_TEST_1X2, "TEST_1X2"},
0174   {GAISLER_WILD2AHB, "WILD2AHB"},
0175   {GAISLER_BIO1, "BIO1"},
0176   {GAISLER_AESDMA, "AESDMA"},
0177   {GAISLER_GRPCI2, "GRPCI2"},
0178   {GAISLER_GRPCI2_DMA, "GRPCI2_DMA"},
0179   {GAISLER_GRPCI2_TB, "GRPCI2_TB"},
0180   {GAISLER_MMA, "MMA"},
0181   {GAISLER_SATCAN, "SATCAN"},
0182   {GAISLER_CANMUX, "CANMUX"},
0183   {GAISLER_GRTMRX, "GRTMRX"},
0184   {GAISLER_GRTCTX, "GRTCTX"},
0185   {GAISLER_GRTMDESC, "GRTMDESC"},
0186   {GAISLER_GRTMVC, "GRTMVC"},
0187   {GAISLER_GEFFE, "GEFFE"},
0188   {GAISLER_GPREG, "GPREG"},
0189   {GAISLER_GRTMPAHB, "GRTMPAHB"},
0190   {GAISLER_SPWCUC, "SPWCUC"},
0191   {GAISLER_SPW2_DMA, "SPW2_DMA"},
0192   {GAISLER_SPWROUTER, "SPWROUTER"},
0193   {GAISLER_EDCLMST, "EDCLMST"},
0194   {GAISLER_GRPWTX, "GRPWTX"},
0195   {GAISLER_GRPWRX, "GRPWRX"},
0196   {GAISLER_GPREGBANK, "GPREGBANK"},
0197   {GAISLER_MIG_7SERIES, "MIG_7SERIES"},
0198   {GAISLER_GRSPW2_SIST, "GRSPW2_SIST"},
0199   {GAISLER_SGMII, "SGMII"},
0200   {GAISLER_RGMII, "RGMII"},
0201   {GAISLER_IRQGEN, "IRQGEN"},
0202   {GAISLER_GRDMAC, "GRDMAC"},
0203   {GAISLER_AHB2AVLA, "AHB2AVLA"},
0204   {GAISLER_SPWTDP, "SPWTDP"},
0205   {GAISLER_L3STAT, "L3STAT"},
0206   {GAISLER_GR740THS, "GR740THS"},
0207   {GAISLER_GRRM, "GRRM"},
0208   {GAISLER_CMAP, "CMAP"},
0209   {GAISLER_CPGEN, "CPGEN"},
0210   {GAISLER_AMBAPROT, "AMBAPROT"},
0211   {GAISLER_IGLOO2_BRIDGE, "IGLOO2_BRIDGE"},
0212   {GAISLER_AHB2AXI, "AHB2AXI"},
0213   {GAISLER_AXI2AHB, "AXI2AHB"},
0214   {GAISLER_FDIR_RSTCTRL, "FDIR_RSTCTRL"},
0215   {GAISLER_APB3MST, "APB3MST"},
0216   {GAISLER_LRAM, "LRAM"},
0217   {GAISLER_BOOTSEQ, "BOOTSEQ"},
0218   {GAISLER_TCCOP, "TCCOP"},
0219   {GAISLER_SPIMASTER, "SPIMASTER"},
0220   {GAISLER_SPISLAVE, "SPISLAVE"},
0221   {GAISLER_GRSRIO, "GRSRIO"},
0222   {GAISLER_AHBLM2AHB, "AHBLM2AHB"},
0223   {GAISLER_AHBS2NOC, "AHBS2NOC"},
0224   {GAISLER_TCAU, "TCAU"},
0225   {GAISLER_GRTMDYNVCID, "GRTMDYNVCID"},
0226   {GAISLER_RNOCIRQPROP, "RNOCIRQPROP"},
0227   {GAISLER_FTADDR, "FTADDR"},
0228   {GAISLER_ATG, "ATG"},
0229   {GAISLER_DFITRACE, "DFITRACE"},
0230   {GAISLER_SELFTEST, "SELFTEST"},
0231   {GAISLER_DFIERRINJ, "DFIERRINJ"},
0232   {GAISLER_DFICHECK, "DFICHECK"},
0233   {GAISLER_GRCANFD, "GRCANFD"},
0234   {GAISLER_NIM, "NIM"},
0235   {GAISLER_BANDGAP, "BANDGAP"},
0236   {GAISLER_MPROT, "MPROT"},
0237   {GAISLER_ADC, "ADC"},
0238   {GAISLER_BO, "BO"},
0239   {GAISLER_DAC, "DAC"},
0240   {GAISLER_PLL, "PLL"},
0241   {0, NULL}
0242 };
0243 
0244 static ambapp_device_name PENDER_devices[] =
0245 {
0246   {0, NULL}
0247 };
0248 
0249 static ambapp_device_name ESA_devices[] =
0250 {
0251   {ESA_LEON2, "LEON2"},
0252   {ESA_LEON2APB, "LEON2APB"},
0253   {ESA_IRQ, "IRQ"},
0254   {ESA_TIMER, "TIMER"},
0255   {ESA_UART, "UART"},
0256   {ESA_CFG, "CFG"},
0257   {ESA_IO, "IO"},
0258   {ESA_MCTRL, "MCTRL"},
0259   {ESA_PCIARB, "PCIARB"},
0260   {ESA_HURRICANE, "HURRICANE"},
0261   {ESA_SPW_RMAP, "SPW_RMAP"},
0262   {ESA_AHBUART, "AHBUART"},
0263   {ESA_SPWA, "SPWA"},
0264   {ESA_BOSCHCAN, "BOSCHCAN"},
0265   {ESA_IRQ2, "IRQ2"},
0266   {ESA_AHBSTAT, "AHBSTAT"},
0267   {ESA_WPROT, "WPROT"},
0268   {ESA_WPROT2, "WPROT2"},
0269   {ESA_PDEC3AMBA, "PDEC3AMBA"},
0270   {ESA_PTME3AMBA, "PTME3AMBA"},
0271   {0, NULL}
0272 };
0273 
0274 static ambapp_device_name ASTRIUM_devices[] =
0275 {
0276   {0, NULL}
0277 };
0278 
0279 static ambapp_device_name OPENCHIP_devices[] =
0280 {
0281   {OPENCHIP_APBGPIO, "APBGPIO"},
0282   {OPENCHIP_APBI2C, "APBI2C"},
0283   {OPENCHIP_APBSPI, "APBSPI"},
0284   {OPENCHIP_APBCHARLCD, "APBCHARLCD"},
0285   {OPENCHIP_APBPWM, "APBPWM"},
0286   {OPENCHIP_APBPS2, "APBPS2"},
0287   {OPENCHIP_APBMMCSD, "APBMMCSD"},
0288   {OPENCHIP_APBNAND, "APBNAND"},
0289   {OPENCHIP_APBLPC, "APBLPC"},
0290   {OPENCHIP_APBCF, "APBCF"},
0291   {OPENCHIP_APBSYSACE, "APBSYSACE"},
0292   {OPENCHIP_APB1WIRE, "APB1WIRE"},
0293   {OPENCHIP_APBJTAG, "APBJTAG"},
0294   {OPENCHIP_APBSUI, "APBSUI"},
0295   {0, NULL}
0296 };
0297 
0298 static ambapp_device_name OPENCORES_devices[] =
0299 {
0300   {0, NULL}
0301 };
0302 
0303 static ambapp_device_name CONTRIB_devices[] =
0304 {
0305   {CONTRIB_CORE1, "CORE1"},
0306   {CONTRIB_CORE2, "CORE2"},
0307   {0, NULL}
0308 };
0309 
0310 static ambapp_device_name EONIC_devices[] =
0311 {
0312   {0, NULL}
0313 };
0314 
0315 static ambapp_device_name RADIONOR_devices[] =
0316 {
0317   {0, NULL}
0318 };
0319 
0320 static ambapp_device_name GLEICHMANN_devices[] =
0321 {
0322   {GLEICHMANN_CUSTOM, "CUSTOM"},
0323   {GLEICHMANN_GEOLCD01, "GEOLCD01"},
0324   {GLEICHMANN_DAC, "DAC"},
0325   {GLEICHMANN_HPI, "HPI"},
0326   {GLEICHMANN_SPI, "SPI"},
0327   {GLEICHMANN_HIFC, "HIFC"},
0328   {GLEICHMANN_ADCDAC, "ADCDAC"},
0329   {GLEICHMANN_SPIOC, "SPIOC"},
0330   {GLEICHMANN_AC97, "AC97"},
0331   {0, NULL}
0332 };
0333 
0334 static ambapp_device_name MENTA_devices[] =
0335 {
0336   {0, NULL}
0337 };
0338 
0339 static ambapp_device_name SUN_devices[] =
0340 {
0341   {SUN_T1, "SUN_T1"},
0342   {SUN_S1, "SUN_S1"},
0343   {0, NULL}
0344 };
0345 
0346 static ambapp_device_name MOVIDIA_devices[] =
0347 {
0348   {0, NULL}
0349 };
0350 
0351 static ambapp_device_name ORBITA_devices[] =
0352 {
0353   {ORBITA_1553B, "1553B"},
0354   {ORBITA_429, "429"},
0355   {ORBITA_SPI, "SPI"},
0356   {ORBITA_I2C, "I2C"},
0357   {ORBITA_SMARTCARD, "SMARTCARD"},
0358   {ORBITA_SDCARD, "SDCARD"},
0359   {ORBITA_UART16550, "UART16550"},
0360   {ORBITA_CRYPTO, "CRYPTO"},
0361   {ORBITA_SYSIF, "SYSIF"},
0362   {ORBITA_PIO, "PIO"},
0363   {ORBITA_RTC, "RTC"},
0364   {ORBITA_COLORLCD, "COLORLCD"},
0365   {ORBITA_PCI, "PCI"},
0366   {ORBITA_DSP, "DSP"},
0367   {ORBITA_USBHOST, "USBHOST"},
0368   {ORBITA_USBDEV, "USBDEV"},
0369   {0, NULL}
0370 };
0371 
0372 static ambapp_device_name SYNOPSYS_devices[] =
0373 {
0374   {0, NULL}
0375 };
0376 
0377 static ambapp_device_name NASA_devices[] =
0378 {
0379   {NASA_EP32, "EP32"},
0380   {0, NULL}
0381 };
0382 
0383 static ambapp_device_name CAL_devices[] =
0384 {
0385   {CAL_DDRCTRL, "DDRCTRL"},
0386   {0, NULL}
0387 };
0388 
0389 static ambapp_device_name EMBEDDIT_devices[] =
0390 {
0391   {0, NULL}
0392 };
0393 
0394 static ambapp_device_name CETON_devices[] =
0395 {
0396   {0, NULL}
0397 };
0398 
0399 static ambapp_device_name ACTEL_devices[] =
0400 {
0401   {ACTEL_COREMP7, "COREMP7"},
0402   {0, NULL}
0403 };
0404 
0405 static ambapp_vendor_devnames vendors[] =
0406 {
0407   {VENDOR_GAISLER, "GAISLER", GAISLER_devices},
0408   {VENDOR_PENDER, "PENDER", PENDER_devices},
0409   {VENDOR_ESA, "ESA", ESA_devices},
0410   {VENDOR_ASTRIUM, "ASTRIUM", ASTRIUM_devices},
0411   {VENDOR_OPENCHIP, "OPENCHIP", OPENCHIP_devices},
0412   {VENDOR_OPENCORES, "OPENCORES", OPENCORES_devices},
0413   {VENDOR_CONTRIB, "CONTRIB", CONTRIB_devices},
0414   {VENDOR_EONIC, "EONIC", EONIC_devices},
0415   {VENDOR_RADIONOR, "RADIONOR", RADIONOR_devices},
0416   {VENDOR_GLEICHMANN, "GLEICHMANN", GLEICHMANN_devices},
0417   {VENDOR_MENTA, "MENTA", MENTA_devices},
0418   {VENDOR_SUN, "SUN", SUN_devices},
0419   {VENDOR_MOVIDIA, "MOVIDIA", MOVIDIA_devices},
0420   {VENDOR_ORBITA, "ORBITA", ORBITA_devices},
0421   {VENDOR_SYNOPSYS, "SYNOPSYS", SYNOPSYS_devices},
0422   {VENDOR_NASA, "NASA", NASA_devices},
0423   {VENDOR_CAL, "CAL", CAL_devices},
0424   {VENDOR_EMBEDDIT, "EMBEDDIT", EMBEDDIT_devices},
0425   {VENDOR_CETON, "CETON", CETON_devices},
0426   {VENDOR_ACTEL, "ACTEL", ACTEL_devices},
0427   {0, NULL, NULL}
0428 };
0429 
0430 /*****************************************************************/
0431 
0432 static char *ambapp_get_devname(ambapp_device_name *devs, int id)
0433 {
0434   while (devs->device_id > 0) {
0435     if (devs->device_id == id)
0436       return devs->name;
0437     devs++;
0438   }
0439   return NULL;
0440 }
0441 
0442 char *ambapp_device_id2str(int vendor, int id)
0443 {
0444   ambapp_vendor_devnames *ven = &vendors[0];
0445 
0446   while (ven->vendor_id > 0) {
0447     if (ven->vendor_id == vendor)
0448       return ambapp_get_devname(ven->devices, id);
0449     ven++;
0450   }
0451   return NULL;
0452 }
0453 
0454 char *ambapp_vendor_id2str(int vendor)
0455 {
0456   ambapp_vendor_devnames *ven = &vendors[0];
0457 
0458   while (ven->vendor_id > 0) {
0459     if (ven->vendor_id == vendor)
0460       return ven->name;
0461     ven++;
0462   }
0463   return NULL;
0464 }
0465 
0466 int ambapp_vendev_id2str(int vendor, int id, char *buf)
0467 {
0468   char *dstr, *vstr;
0469 
0470   *buf = '\0';
0471 
0472   vstr = ambapp_vendor_id2str(vendor);
0473   if (vstr == NULL)
0474     return 0;
0475 
0476   dstr = ambapp_device_id2str(vendor, id);
0477   if (dstr == NULL)
0478     return 0;
0479 
0480   strcpy(buf, vstr);
0481   strcat(buf, "_");
0482   strcat(buf, dstr);
0483 
0484   return strlen(buf);
0485 }