]> err.no Git - linux-2.6/blobdiff - include/asm-powerpc/ps3.h
[POWERPC] ps3: add interrupt alloc for outlets
[linux-2.6] / include / asm-powerpc / ps3.h
index 52a69ed0d90a86eb92cc261085e815dc4b56b4ad..00a4c7d3c6d1e2767dec2eecdd289e266ca16b2e 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/init.h>
 #include <linux/types.h>
 #include <linux/device.h>
+#include <scsi/scsi.h>
 
 /**
  * struct ps3_device_id - HV bus device identifier from the system repository
@@ -139,20 +140,32 @@ unsigned long ps3_mm_phys_to_lpar(unsigned long phys_addr);
 
 /* inrerrupt routines */
 
-int ps3_alloc_io_irq(unsigned int interrupt_id, unsigned int *virq);
+enum ps3_cpu_binding {
+       PS3_BINDING_CPU_ANY = -1,
+       PS3_BINDING_CPU_0 = 0,
+       PS3_BINDING_CPU_1 = 1,
+};
+
+int ps3_alloc_io_irq(enum ps3_cpu_binding cpu, unsigned int interrupt_id,
+       unsigned int *virq);
 int ps3_free_io_irq(unsigned int virq);
-int ps3_alloc_event_irq(unsigned int *virq);
+int ps3_alloc_event_irq(enum ps3_cpu_binding cpu, unsigned int *virq);
 int ps3_free_event_irq(unsigned int virq);
 int ps3_send_event_locally(unsigned int virq);
-int ps3_connect_event_irq(const struct ps3_device_id *did,
-       unsigned int interrupt_id, unsigned int *virq);
+int ps3_connect_event_irq(enum ps3_cpu_binding cpu,
+       const struct ps3_device_id *did, unsigned int interrupt_id,
+       unsigned int *virq);
 int ps3_disconnect_event_irq(const struct ps3_device_id *did,
        unsigned int interrupt_id, unsigned int virq);
-int ps3_alloc_vuart_irq(void* virt_addr_bmp, unsigned int *virq);
-int ps3_free_vuart_irq(unsigned int virq);
-int ps3_alloc_spe_irq(unsigned long spe_id, unsigned int class,
+int ps3_alloc_vuart_irq(enum ps3_cpu_binding cpu, void* virt_addr_bmp,
        unsigned int *virq);
+int ps3_free_vuart_irq(unsigned int virq);
+int ps3_alloc_spe_irq(enum ps3_cpu_binding cpu, unsigned long spe_id,
+       unsigned int class, unsigned int *virq);
 int ps3_free_spe_irq(unsigned int virq);
+int ps3_alloc_irq(enum ps3_cpu_binding cpu, unsigned long outlet,
+       unsigned int *virq);
+int ps3_free_irq(unsigned int virq);
 
 /* lv1 result codes */
 
@@ -255,9 +268,12 @@ enum ps3_bus_type {
 };
 
 enum ps3_dev_type {
+       PS3_DEV_TYPE_STOR_DISK = TYPE_DISK,     /* 0 */
        PS3_DEV_TYPE_SB_GELIC = 3,
        PS3_DEV_TYPE_SB_USB = 4,
+       PS3_DEV_TYPE_STOR_ROM = TYPE_ROM,       /* 5 */
        PS3_DEV_TYPE_SB_GPIO = 6,
+       PS3_DEV_TYPE_STOR_FLASH = TYPE_RBC,     /* 14 */
 };
 
 int ps3_repository_read_bus_str(unsigned int bus_index, const char *bus_str,
@@ -277,10 +293,10 @@ enum ps3_interrupt_type {
        PS3_INTERRUPT_TYPE_OTHER = 5,
 };
 
-enum ps3_region_type {
-       PS3_REGION_TYPE_SB_OHCI = 3,
-       PS3_REGION_TYPE_SB_EHCI = 4,
-       PS3_REGION_TYPE_SB_GPIO = 5,
+enum ps3_reg_type {
+       PS3_REG_TYPE_SB_OHCI = 3,
+       PS3_REG_TYPE_SB_EHCI = 4,
+       PS3_REG_TYPE_SB_GPIO = 5,
 };
 
 int ps3_repository_read_dev_str(unsigned int bus_index,
@@ -294,13 +310,13 @@ int ps3_repository_read_dev_intr(unsigned int bus_index,
        enum ps3_interrupt_type *intr_type, unsigned int *interrupt_id);
 int ps3_repository_read_dev_reg_type(unsigned int bus_index,
        unsigned int dev_index, unsigned int reg_index,
-       enum ps3_region_type *reg_type);
+       enum ps3_reg_type *reg_type);
 int ps3_repository_read_dev_reg_addr(unsigned int bus_index,
        unsigned int dev_index, unsigned int reg_index, u64 *bus_addr,
        u64 *len);
 int ps3_repository_read_dev_reg(unsigned int bus_index,
        unsigned int dev_index, unsigned int reg_index,
-       enum ps3_region_type *reg_type, u64 *bus_addr, u64 *len);
+       enum ps3_reg_type *reg_type, u64 *bus_addr, u64 *len);
 
 /* repository bus enumerators */
 
@@ -322,26 +338,32 @@ static inline int ps3_repository_find_first_device(
 }
 int ps3_repository_find_interrupt(const struct ps3_repository_device *dev,
        enum ps3_interrupt_type intr_type, unsigned int *interrupt_id);
-int ps3_repository_find_region(const struct ps3_repository_device *dev,
-       enum ps3_region_type reg_type, u64 *bus_addr, u64 *len);
+int ps3_repository_find_reg(const struct ps3_repository_device *dev,
+       enum ps3_reg_type reg_type, u64 *bus_addr, u64 *len);
 
 /* repository block device info */
 
-int ps3_repository_read_dev_port(unsigned int bus_index,
+int ps3_repository_read_stor_dev_port(unsigned int bus_index,
        unsigned int dev_index, u64 *port);
-int ps3_repository_read_dev_blk_size(unsigned int bus_index,
+int ps3_repository_read_stor_dev_blk_size(unsigned int bus_index,
        unsigned int dev_index, u64 *blk_size);
-int ps3_repository_read_dev_num_blocks(unsigned int bus_index,
+int ps3_repository_read_stor_dev_num_blocks(unsigned int bus_index,
        unsigned int dev_index, u64 *num_blocks);
-int ps3_repository_read_dev_num_regions(unsigned int bus_index,
+int ps3_repository_read_stor_dev_num_regions(unsigned int bus_index,
        unsigned int dev_index, unsigned int *num_regions);
-int ps3_repository_read_dev_region_id(unsigned int bus_index,
+int ps3_repository_read_stor_dev_region_id(unsigned int bus_index,
        unsigned int dev_index, unsigned int region_index,
        unsigned int *region_id);
-int ps3_repository_read_dev_region_size(unsigned int bus_index,
+int ps3_repository_read_stor_dev_region_size(unsigned int bus_index,
        unsigned int dev_index, unsigned int region_index, u64 *region_size);
-int ps3_repository_read_dev_region_start(unsigned int bus_index,
+int ps3_repository_read_stor_dev_region_start(unsigned int bus_index,
        unsigned int dev_index, unsigned int region_index, u64 *region_start);
+int ps3_repository_read_stor_dev_info(unsigned int bus_index,
+       unsigned int dev_index, u64 *port, u64 *blk_size,
+       u64 *num_blocks, unsigned int *num_regions);
+int ps3_repository_read_stor_dev_region(unsigned int bus_index,
+       unsigned int dev_index, unsigned int region_index,
+       unsigned int *region_id, u64 *region_start, u64 *region_size);
 
 /* repository pu and memory info */