Skip to content

Commit

Permalink
media: apple: isp: Only reset coproc when necessary, fix minor race
Browse files Browse the repository at this point in the history
Signed-off-by: Asahi Lina <lina@asahilina.net>
  • Loading branch information
asahilina authored and jannau committed Nov 19, 2024
1 parent c0f0809 commit ecc9d77
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions drivers/media/platform/apple/isp/isp-fw.c
Original file line number Diff line number Diff line change
Expand Up @@ -270,16 +270,22 @@ static void isp_firmware_shutdown_stage1(struct apple_isp *isp)
static int isp_firmware_boot_stage1(struct apple_isp *isp)
{
int err, retries;
u32 val;

err = apple_isp_power_up_domains(isp);
if (err < 0)
return err;

err = isp_reset_coproc(isp);
if (err < 0)
return err;

isp_gpio_write32(isp, ISP_GPIO_CLOCK_EN, 0x1);

val = isp_gpio_read32(isp, ISP_GPIO_1);
if (val == 0xfeedbabe) {
err = isp_reset_coproc(isp);
if (err < 0)
return err;
}

isp_gpio_write32(isp, ISP_GPIO_0, 0x0);
isp_gpio_write32(isp, ISP_GPIO_1, 0x0);
isp_gpio_write32(isp, ISP_GPIO_2, 0x0);
Expand All @@ -295,7 +301,6 @@ static int isp_firmware_boot_stage1(struct apple_isp *isp)
isp_coproc_write32(isp, ISP_COPROC_CONTROL, 0x10);

/* Wait for ISP_GPIO_7 to 0x0 -> 0x8042006 */
isp_gpio_write32(isp, ISP_GPIO_7, 0x0);
for (retries = 0; retries < ISP_FIRMWARE_MAX_TRIES; retries++) {
u32 val = isp_gpio_read32(isp, ISP_GPIO_7);
if (val == 0x8042006) {
Expand Down

0 comments on commit ecc9d77

Please sign in to comment.