@@ -216,28 +216,44 @@ def get_list_by_name_without_scope(self, reg_name: str) -> 'ObjList':
216216 if hasattr (self .cs .Cfg , 'platform' ) and self .cs .Cfg .platform :
217217 # Log diagnostic info at debug level
218218 platform = self .cs .Cfg .platform
219- if hasattr (platform , 'vendors ' ) and platform .vendors :
220- vendor_count = len (platform .vendors )
219+ if hasattr (platform , 'vendor_list ' ) and platform .vendor_list :
220+ vendor_count = len (platform .vendor_list )
221221 logger ().log_debug (f"Searching { vendor_count } vendors in platform structure" )
222222
223223 # Search through all vendor/device combinations
224- for vendor_id in platform .vendors :
225- vendor = platform .vendors [ vendor_id ]
224+ for vendor_id in platform .vendor_list :
225+ vendor = platform .get_vendor ( vendor_id )
226226
227227 # Check if vendor.devices exists
228- if hasattr (vendor , 'devices' ) and vendor .devices :
229- for device_id in vendor .devices :
230- device = vendor .devices [device_id ]
231-
228+ if hasattr (vendor , 'ip_list' ) and vendor .ip_list :
229+ for ip_id in vendor .ip_list :
230+ ip = vendor .get_ip (ip_id )
231+
232+ if hasattr (ip , 'bar_list' ) and ip .bar_list :
233+ for bar_id in ip .bar_list :
234+ # Check for registers
235+ bar = ip .get_bar (bar_id )
236+ has_registers = (hasattr (bar , 'register_list' ) and
237+ bar .register_list )
238+
239+ if has_registers and reg_name in bar .register_list :
240+ # Found the register, add all instances
241+ reg_objects = bar .register_list [reg_name ]
242+ logger ().log_debug (
243+ f"Found register { reg_name } in { vendor_id } .{ ip_id } .{ bar_id } " )
244+ if isinstance (reg_objects , list ):
245+ result_list .extend (reg_objects )
246+ else :
247+ result_list .append (reg_objects )
232248 # Check for registers
233- has_registers = (hasattr (device , 'registers ' ) and
234- device . registers is not None )
249+ has_registers = (hasattr (ip , 'register_list ' ) and
250+ ip . register_list )
235251
236- if has_registers and reg_name in device . registers :
252+ if has_registers and reg_name in ip . register_list :
237253 # Found the register, add all instances
238- reg_objects = device . registers [reg_name ]
254+ reg_objects = ip . register_list [reg_name ]
239255 logger ().log_debug (
240- f"Found register { reg_name } in { vendor_id } .{ device_id } " )
256+ f"Found register { reg_name } in { vendor_id } .{ ip_id } " )
241257
242258 if isinstance (reg_objects , list ):
243259 result_list .extend (reg_objects )
@@ -337,12 +353,10 @@ def has_field(self, reg_name: str, field_name: str) -> bool:
337353 reg_defs = self .cs .Cfg .get_reglist (reg_name )
338354 except RegisterNotFoundError :
339355 return False
340- for reg_def in reg_defs :
341- try :
342- return field_name in reg_def .fields
343- except KeyError :
344- return False
345- return False
356+ try :
357+ return bool (reg_defs ) and all ([field_name in reg_def .fields for reg_def in reg_defs ])
358+ except KeyError :
359+ return False
346360
347361 def get_match (self , name : str ) -> List [str ]:
348362 """
0 commit comments