File indexing completed on 2025-05-11 08:24:06
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 #include <stdio.h>
0032 #include <grlib/ambapp.h>
0033
0034 struct ambapp_dev_print_arg {
0035 int show_depth;
0036 };
0037
0038 static char *unknown = "unknown";
0039
0040 static int ambapp_dev_print(struct ambapp_dev *dev, int index, void *arg)
0041 {
0042 char *dev_str, *ven_str, *type_str;
0043 struct ambapp_dev_print_arg *p = arg;
0044 char dp[32];
0045 int i=0;
0046 unsigned int basereg;
0047
0048 if (p->show_depth) {
0049 for (i=0; i<ambapp_depth(dev)*2; i+=2) {
0050 dp[i] = ' ';
0051 dp[i+1] = ' ';
0052 }
0053 }
0054 dp[i] = '\0';
0055
0056 ven_str = ambapp_vendor_id2str(dev->vendor);
0057 if (!ven_str) {
0058 ven_str = unknown;
0059 dev_str = unknown;
0060 } else {
0061 dev_str = ambapp_device_id2str(dev->vendor, dev->device);
0062 if (!dev_str)
0063 dev_str = unknown;
0064 }
0065 if (dev->dev_type == DEV_APB_SLV) {
0066
0067 basereg = DEV_TO_APB(dev)->start;
0068 type_str = "apb";
0069 } else {
0070
0071 basereg = DEV_TO_AHB(dev)->start[0];
0072 type_str = "ahb";
0073 }
0074 printf("%s |-> 0x%x:0x%x:0x%x: %s_%s, %s: 0x%x, 0x%x (OWNER: 0x%x)\n",
0075 dp, index, dev->vendor, dev->device, ven_str, dev_str, type_str,
0076 basereg, (unsigned int)dev, (unsigned int)dev->owner);
0077
0078 return 0;
0079 }
0080
0081 void ambapp_print(struct ambapp_bus *abus, int show_depth)
0082 {
0083 struct ambapp_dev_print_arg arg;
0084 arg.show_depth = show_depth;
0085 ambapp_for_each(abus, (OPTIONS_ALL_DEVS|OPTIONS_ALL|OPTIONS_DEPTH_FIRST), -1,
0086 -1, ambapp_dev_print, &arg);
0087 }