diff options
author | Geoff Levand <geoffrey.levand@am.sony.com> | 2006-11-22 18:47:00 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-12-04 04:40:57 -0500 |
commit | a3d4d6435b56eb0b6ff4f88e5a513cfccfb3e770 (patch) | |
tree | 20f5af985f0e9cd3edaf46efe425c961a460f930 /include/asm-powerpc/ps3.h | |
parent | de91a53429952875740692d1de36ae70d4cf81da (diff) |
[POWERPC] ps3: add ps3 platform system bus support
Adds a PS3 system bus driver. This system bus is a virtual bus used to present
the PS3 system devices in the LDM.
Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com>
Diffstat (limited to 'include/asm-powerpc/ps3.h')
-rw-r--r-- | include/asm-powerpc/ps3.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/include/asm-powerpc/ps3.h b/include/asm-powerpc/ps3.h index eb4bbb6cff57..52a69ed0d90a 100644 --- a/include/asm-powerpc/ps3.h +++ b/include/asm-powerpc/ps3.h | |||
@@ -386,4 +386,77 @@ int ps3_repository_read_num_spu_resource_id(unsigned int *num_resource_id); | |||
386 | int ps3_repository_read_spu_resource_id(unsigned int res_index, | 386 | int ps3_repository_read_spu_resource_id(unsigned int res_index, |
387 | enum ps3_spu_resource_type* resource_type, unsigned int *resource_id); | 387 | enum ps3_spu_resource_type* resource_type, unsigned int *resource_id); |
388 | 388 | ||
389 | |||
390 | /* system bus routines */ | ||
391 | |||
392 | enum ps3_match_id { | ||
393 | PS3_MATCH_ID_EHCI = 1, | ||
394 | PS3_MATCH_ID_OHCI, | ||
395 | PS3_MATCH_ID_GELIC, | ||
396 | PS3_MATCH_ID_AV_SETTINGS, | ||
397 | PS3_MATCH_ID_SYSTEM_MANAGER, | ||
398 | }; | ||
399 | |||
400 | /** | ||
401 | * struct ps3_system_bus_device - a device on the system bus | ||
402 | */ | ||
403 | |||
404 | struct ps3_system_bus_device { | ||
405 | enum ps3_match_id match_id; | ||
406 | struct ps3_device_id did; | ||
407 | unsigned int interrupt_id; | ||
408 | /* struct iommu_table *iommu_table; -- waiting for Ben's cleanups */ | ||
409 | struct ps3_dma_region *d_region; | ||
410 | struct ps3_mmio_region *m_region; | ||
411 | struct device core; | ||
412 | }; | ||
413 | |||
414 | /** | ||
415 | * struct ps3_system_bus_driver - a driver for a device on the system bus | ||
416 | */ | ||
417 | |||
418 | struct ps3_system_bus_driver { | ||
419 | enum ps3_match_id match_id; | ||
420 | struct device_driver core; | ||
421 | int (*probe)(struct ps3_system_bus_device *); | ||
422 | int (*remove)(struct ps3_system_bus_device *); | ||
423 | /* int (*suspend)(struct ps3_system_bus_device *, pm_message_t); */ | ||
424 | /* int (*resume)(struct ps3_system_bus_device *); */ | ||
425 | }; | ||
426 | |||
427 | int ps3_system_bus_device_register(struct ps3_system_bus_device *dev); | ||
428 | int ps3_system_bus_driver_register(struct ps3_system_bus_driver *drv); | ||
429 | void ps3_system_bus_driver_unregister(struct ps3_system_bus_driver *drv); | ||
430 | static inline struct ps3_system_bus_driver *to_ps3_system_bus_driver( | ||
431 | struct device_driver *_drv) | ||
432 | { | ||
433 | return container_of(_drv, struct ps3_system_bus_driver, core); | ||
434 | } | ||
435 | static inline struct ps3_system_bus_device *to_ps3_system_bus_device( | ||
436 | struct device *_dev) | ||
437 | { | ||
438 | return container_of(_dev, struct ps3_system_bus_device, core); | ||
439 | } | ||
440 | |||
441 | /** | ||
442 | * ps3_system_bus_set_drvdata - | ||
443 | * @dev: device structure | ||
444 | * @data: Data to set | ||
445 | */ | ||
446 | |||
447 | static inline void ps3_system_bus_set_driver_data( | ||
448 | struct ps3_system_bus_device *dev, void *data) | ||
449 | { | ||
450 | dev->core.driver_data = data; | ||
451 | } | ||
452 | static inline void *ps3_system_bus_get_driver_data( | ||
453 | struct ps3_system_bus_device *dev) | ||
454 | { | ||
455 | return dev->core.driver_data; | ||
456 | } | ||
457 | |||
458 | /* These two need global scope for get_dma_ops(). */ | ||
459 | |||
460 | extern struct bus_type ps3_system_bus_type; | ||
461 | |||
389 | #endif | 462 | #endif |