103479763SNathan Whitehorn/* 203479763SNathan Whitehorn * Playstation 3 LV1 hypercall interface 303479763SNathan Whitehorn * 403479763SNathan Whitehorn * $FreeBSD$ 503479763SNathan Whitehorn */ 603479763SNathan Whitehorn 703479763SNathan Whitehorn#include <sys/types.h> 803479763SNathan Whitehorn 903479763SNathan Whitehornenum lpar_id { 1003479763SNathan Whitehorn PS3_LPAR_ID_CURRENT = 0x00, 1103479763SNathan Whitehorn PS3_LPAR_ID_PME = 0x01, 1203479763SNathan Whitehorn}; 1303479763SNathan Whitehorn 14*67de2cd3SNathan Whitehorn/* Return codes from hypercalls */ 15*67de2cd3SNathan Whitehorn#define LV1_SUCCESS 0 16*67de2cd3SNathan Whitehorn#define LV1_RESOURCE_SHORTAGE -2 17*67de2cd3SNathan Whitehorn#define LV1_NO_PRIVILEGE -3 18*67de2cd3SNathan Whitehorn#define LV1_DENIED_BY_POLICY -4 19*67de2cd3SNathan Whitehorn#define LV1_ACCESS_VIOLATION -5 20*67de2cd3SNathan Whitehorn#define LV1_NO_ENTRY -6 21*67de2cd3SNathan Whitehorn#define LV1_DUPLICATE_ENTRY -7 22*67de2cd3SNathan Whitehorn#define LV1_TYPE_MISMATCH -8 23*67de2cd3SNathan Whitehorn#define LV1_BUSY -9 24*67de2cd3SNathan Whitehorn#define LV1_EMPTY -10 25*67de2cd3SNathan Whitehorn#define LV1_WRONG_STATE -11 26*67de2cd3SNathan Whitehorn#define LV1_NO_MATCH -13 27*67de2cd3SNathan Whitehorn#define LV1_ALREADY_CONNECTED -14 28*67de2cd3SNathan Whitehorn#define LV1_UNSUPPORTED_PARAMETER_VALUE -15 29*67de2cd3SNathan Whitehorn#define LV1_CONDITION_NOT_SATISFIED -16 30*67de2cd3SNathan Whitehorn#define LV1_ILLEGAL_PARAMETER_VALUE -17 31*67de2cd3SNathan Whitehorn#define LV1_BAD_OPTION -18 32*67de2cd3SNathan Whitehorn#define LV1_IMPLEMENTATION_LIMITATION -19 33*67de2cd3SNathan Whitehorn#define LV1_NOT_IMPLEMENTED -20 34*67de2cd3SNathan Whitehorn#define LV1_INVALID_CLASS_ID -21 35*67de2cd3SNathan Whitehorn#define LV1_CONSTRAINT_NOT_SATISFIED -22 36*67de2cd3SNathan Whitehorn#define LV1_ALIGNMENT_ERROR -23 37*67de2cd3SNathan Whitehorn#define LV1_HARDWARE_ERROR -24 38*67de2cd3SNathan Whitehorn#define LV1_INVALID_DATA_FORMAT -25 39*67de2cd3SNathan Whitehorn#define LV1_INVALID_OPERATION -26 40*67de2cd3SNathan Whitehorn#define LV1_INTERNAL_ERROR -32768 41*67de2cd3SNathan Whitehorn 4203479763SNathan Whitehornstatic inline uint64_t 4303479763SNathan Whitehornlv1_repository_string(const char *str) 4403479763SNathan Whitehorn{ 4503479763SNathan Whitehorn uint64_t ret = 0; 4603479763SNathan Whitehorn strncpy((char *)&ret, str, sizeof(ret)); 4703479763SNathan Whitehorn return (ret); 4803479763SNathan Whitehorn} 4903479763SNathan Whitehorn 5003479763SNathan Whitehorn# Code Name Inputs Outputs 5103479763SNathan WhitehornHVCALL 0 lv1_allocate_memory size,log_page_size,zero,flags base_addr,muid 5203479763SNathan WhitehornHVCALL 1 lv1_write_htab_entry vas_id,slot,pte_hi,pte_lo 5303479763SNathan WhitehornHVCALL 2 lv1_construct_virtual_address_space log_pteg_count,n_sizes,page_sizes vas_id,hv_pteg_count 5403479763SNathan WhitehornHVCALL 4 lv1_get_virtual_address_space_id_of_ppe ppe_id vas_id 5503479763SNathan WhitehornHVCALL 6 lv1_query_logical_partition_address_region_info lpar_id base_addr,size,access_right,max_page_size,flags 5603479763SNathan WhitehornHVCALL 7 lv1_select_virtual_address_space vas_id 5703479763SNathan WhitehornHVCALL 9 lv1_pause mode 5803479763SNathan WhitehornHVCALL 10 lv1_destruct_virtual_address_space vas_id 5903479763SNathan WhitehornHVCALL 11 lv1_configure_irq_state_bitmap ppe_id,cpu_id,bitmap_addr 6003479763SNathan WhitehornHVCALL 12 lv1_connect_irq_plug_ext ppe_id,cpu_id,virq,outlet,zero 6103479763SNathan WhitehornHVCALL 13 lv1_release_memory base_addr 6203479763SNathan WhitehornHVCALL 15 lv1_put_iopte ioas_id,ioif_addr,lpar_addr,io_id,flags 6303479763SNathan WhitehornHVCALL 17 lv1_disconnect_irq_plug_ext ppe_id,cpu_id,virq 6403479763SNathan WhitehornHVCALL 18 lv1_construct_event_receive_port UNUSED outlet 6503479763SNathan WhitehornHVCALL 19 lv1_destruct_event_receive_port outlet 6603479763SNathan WhitehornHVCALL 24 lv1_send_event_locally outlet 6703479763SNathan WhitehornHVCALL 27 lv1_end_of_interrupt irq 6803479763SNathan WhitehornHVCALL 28 lv1_connect_irq_plug virq,irq 6903479763SNathan WhitehornHVCALL 29 lv1_disconnect_irq_plus virq 7003479763SNathan WhitehornHVCALL 30 lv1_end_of_interrupt_ext ppe_id,cpu_id,virq 7103479763SNathan WhitehornHVCALL 31 lv1_did_update_interrupt_mask ppe_id,cpu_id 7203479763SNathan WhitehornHVCALL 44 lv1_shutdown_logical_partition cmd 7303479763SNathan WhitehornHVCALL 54 lv1_destruct_logical_spe spe_id 7403479763SNathan WhitehornHVCALL 57 lv1_construct_logical_spe pshift1,pshift2,pshift3,pshift4,pshift5,vas_id,spe_type priv2_addr,problem_phys,local_store_phys,unused,shadow_addr,spe_id 7503479763SNathan WhitehornHVCALL 61 lv1_set_spe_interrupt_mask spe_id,class,mask 7603479763SNathan WhitehornHVCALL 65 lv1_disable_logical_spe spe_id,zero 7703479763SNathan WhitehornHVCALL 66 lv1_clear_spe_interrupt_status spe_id,class,stat,zero 7803479763SNathan WhitehornHVCALL 67 lv1_get_spe_interrupt_status spe_id,class stat 7903479763SNathan WhitehornHVCALL 69 lv1_get_logical_ppe_id UNUSED ppe_id 8003479763SNathan WhitehornHVCALL 74 lv1_get_logical_partition_id UNUSED lpar_id 8103479763SNathan WhitehornHVCALL 78 lv1_get_spe_irq_outlet spe_id,class outlet 8203479763SNathan WhitehornHVCALL 79 lv1_set_spe_privilege_state_area_1_register spe_id,offset,value 8303479763SNathan WhitehornHVCALL 91 lv1_get_repository_node_value lpar_id,n1,n2,n3,n4 v1,v2 8403479763SNathan WhitehornHVCALL 95 lv1_read_htab_entries vas_id,slot hi1,hi2,hi3,hi4,rcbits 8503479763SNathan WhitehornHVCALL 96 lv1_set_dabr dabr,flags 8603479763SNathan WhitehornHVCALL 116 lv1_allocate_io_segment ioas_id,seg_size,io_pagesize ioif_addr 8703479763SNathan WhitehornHVCALL 117 lv1_release_io_segment ioas_id,ioif_addr 8803479763SNathan WhitehornHVCALL 120 lv1_construct_io_irq_outlet interrupt_id outlet 8903479763SNathan WhitehornHVCALL 121 lv1_destruct_io_irq_outlet outlet 9003479763SNathan WhitehornHVCALL 122 lv1_map_htab lpar_id htab_addr 9103479763SNathan WhitehornHVCALL 123 lv1_unmap_htab htab_addr 9203479763SNathan WhitehornHVCALL 127 lv1_get_version_info UNUSED firm_vers 9303479763SNathan WhitehornHVCALL 158 lv1_insert_htab_entry vas_id,pteg,pte_hi,pte_lo,lockflags,flags index,evicted_hi,evicted_lo 9403479763SNathan WhitehornHVCALL 162 lv1_read_virtual_uart port,buffer,bytes bytes_read 9503479763SNathan WhitehornHVCALL 163 lv1_write_virtual_uart port,buffer,bytes bytes_written 9603479763SNathan WhitehornHVCALL 164 lv1_set_virtual_uart_param port,param,value 9703479763SNathan WhitehornHVCALL 165 lv1_get_virtual_uart_param port,param value 9803479763SNathan WhitehornHVCALL 166 lv1_configure_virtual_uart lpar_addr outlet 9903479763SNathan WhitehornHVCALL 170 lv1_open_device bus,dev,zero 10003479763SNathan WhitehornHVCALL 171 lv1_close_device bus,dev 10103479763SNathan WhitehornHVCALL 172 lv1_map_device_mmio_region bus,dev,bus_addr,size,page_size lpar_addr 10203479763SNathan WhitehornHVCALL 173 lv1_unmap_device_mmio_region bus,dev,lpar_addr 10303479763SNathan WhitehornHVCALL 174 lv1_allocate_device_dma_region bus,dev,io_size,io_pagesize,flag dma_region 10403479763SNathan WhitehornHVCALL 175 lv1_free_device_dma_region bus,dev,dma_region 10503479763SNathan WhitehornHVCALL 176 lv1_map_device_dma_region bus,dev,lpar_addr,dma_region,size,flags 10603479763SNathan WhitehornHVCALL 177 lv1_unmap_device_dma_region bus,dev,dma_region,size 10703479763SNathan WhitehornHVCALL 178 lv1_read_pci_config ps3bus,bus,dev,func,offset,size result 10803479763SNathan WhitehornHVCALL 179 lv1_write_pci_config ps3bus,bus,dev,func,offset,size,data 10903479763SNathan WhitehornHVCALL 185 lv1_net_add_multicast_address bus,dev,addr,flags 11003479763SNathan WhitehornHVCALL 186 lv1_net_remove_multicast_address bus,dev,zero,one 11103479763SNathan WhitehornHVCALL 187 lv1_net_start_tx_dma bus,dev,bus_addr,zero 11203479763SNathan WhitehornHVCALL 188 lv1_net_stop_tx_dma bus,dev,zero 11303479763SNathan WhitehornHVCALL 189 lv1_net_start_rx_dma bus,dev,bus_addr,zero 11403479763SNathan WhitehornHVCALL 190 lv1_net_stop_rx_dma bus,dev,zero 11503479763SNathan WhitehornHVCALL 191 lv1_net_set_interrupt_status_indicator bus,dev,irq_status_addr,zero 11603479763SNathan WhitehornHVCALL 193 lv1_net_set_interrupt_mask bus,dev,mask,zero 11703479763SNathan WhitehornHVCALL 194 lv1_net_control bus,dev,p1,p2,p3,p4 v1,v2 11803479763SNathan WhitehornHVCALL 197 lv1_connect_interrupt_event_receive_port bus,dev,outlet,irq 11903479763SNathan WhitehornHVCALL 198 lv1_disconnect_interrupt_event_receive_port bus,dev,outlet,irq 12003479763SNathan WhitehornHVCALL 202 lv1_deconfigure_virtual_uart_irq 12103479763SNathan WhitehornHVCALL 207 lv1_enable_logical_spe spe_id,resource_id 12203479763SNathan WhitehornHVCALL 210 lv1_gpu_open zero 12303479763SNathan WhitehornHVCALL 211 lv1_gpu_close 12403479763SNathan WhitehornHVCALL 212 lv1_gpu_device_map dev lpar_addr,lpar_size 12503479763SNathan WhitehornHVCALL 213 lv1_gpu_device_unmap dev 12603479763SNathan WhitehornHVCALL 214 lv1_gpu_memory_allocate ddr_size,zero1,zero2,zero3,zero4 handle,ddr_lpar 12703479763SNathan WhitehornHVCALL 216 lv1_gpu_memory_free handle 12803479763SNathan WhitehornHVCALL 217 lv1_gpu_context_allocate handle, zero chandle,lpar_dma_control,lpar_driver_info,lpar_reports,lpar_reports_size 12903479763SNathan WhitehornHVCALL 218 lv1_gpu_context_free chandle 13003479763SNathan WhitehornHVCALL 221 lv1_gpu_context_iomap changle,gpu_ioif,xdr_lpar,fbsize,ioflags 13103479763SNathan WhitehornHVCALL 225 lv1_gpu_context_attribute chandle,op,p1,p2,p3,p4 13203479763SNathan WhitehornHVCALL 227 lv1_gpu_context_intr chandle v1 13303479763SNathan WhitehornHVCALL 232 lv1_get_rtc UNUSED rtc_val,timebase 13403479763SNathan WhitehornHVCALL 245 lv1_storage_read dev,region,sector,nsectors,flags,buf dma_tag 13503479763SNathan WhitehornHVCALL 246 lv1_storage_write dev,region,sector,nsectors,flags,buf dma_tag 13603479763SNathan WhitehornHVCALL 248 lv1_storage_send_device_command dev,cmd_id,cmd_block,cmd_size,data_buf,blocks dma_tag 13703479763SNathan WhitehornHVCALL 249 lv1_storage_get_async_status dev dma_tag,status 13803479763SNathan WhitehornHVCALL 254 lv1_storage_check_async_status dev,dma_tag status 13903479763SNathan WhitehornHVCALL 255 lv1_panic howto 140