@@ -274,8 +274,8 @@ static int isp_firmware_boot_stage2(struct apple_isp *isp)
274274 memset (& args , 0 , sizeof (args ));
275275 args .ipc_iova = isp -> ipc_surf -> iova ;
276276 args .ipc_size = isp -> ipc_surf -> size ;
277- args .shared_base = isp -> fw .heap_top ;
278- args .shared_size = 0x10000000UL - isp -> fw . heap_top ;
277+ args .shared_base = isp -> fw .heap_top & 0xffffffff ;
278+ args .shared_size = 0x10000000UL - args . shared_base ;
279279 args .extra_iova = isp -> extra_surf -> iova ;
280280 args .extra_size = isp -> extra_surf -> size ;
281281 args .platform_id = isp -> hw -> platform_id ;
@@ -286,7 +286,7 @@ static int isp_firmware_boot_stage2(struct apple_isp *isp)
286286 isp_iowrite (isp , args_iova , & args , sizeof (args ));
287287
288288 isp_gpio_write32 (isp , ISP_GPIO_0 , args_iova );
289- isp_gpio_write32 (isp , ISP_GPIO_1 , 0x0 );
289+ isp_gpio_write32 (isp , ISP_GPIO_1 , args_iova >> 32 );
290290 wmb ();
291291
292292 /* Wait for ISP_GPIO_7 to 0xf7fbdff9 -> 0x8042006 */
@@ -342,7 +342,8 @@ static void isp_free_channel_info(struct apple_isp *isp)
342342
343343static int isp_fill_channel_info (struct apple_isp * isp )
344344{
345- u32 table_iova = isp_gpio_read32 (isp , ISP_GPIO_0 );
345+ u64 table_iova = isp_gpio_read32 (isp , ISP_GPIO_0 ) |
346+ ((u64 )isp_gpio_read32 (isp , ISP_GPIO_1 )) << 32 ;
346347
347348 isp -> ipc_chans = kcalloc (isp -> num_ipc_chans ,
348349 sizeof (struct isp_channel * ), GFP_KERNEL );
0 commit comments