static int uni_player_stop(struct uniperif *player) { int ret; /* The player should not be in stopped state */ if (player->state == UNIPERIF_STATE_STOPPED) { dev_err(player->dev, "%s: invalid player state\n", __func__); return -EINVAL; } /* Turn the player off */ SET_UNIPERIF_CTRL_OPERATION_OFF(player); ret = sti_uniperiph_reset(player); if (ret < 0) return ret; /* Disable interrupts */ SET_UNIPERIF_ITM_BCLR(player, GET_UNIPERIF_ITM(player)); /* Disable clock */ clk_disable_unprepare(player->clk); /* Update state to stopped and return */ player->state = UNIPERIF_STATE_STOPPED; return 0; }
static int uni_reader_stop(struct uniperif *reader) { /* The reader should not be in stopped state */ if (reader->state == UNIPERIF_STATE_STOPPED) { dev_err(reader->dev, "%s: invalid reader state", __func__); return -EINVAL; } /* Turn the reader off */ SET_UNIPERIF_CTRL_OPERATION_OFF(reader); /* Disable interrupts */ SET_UNIPERIF_ITM_BCLR(reader, GET_UNIPERIF_ITM(reader)); /* Update state to stopped and return */ reader->state = UNIPERIF_STATE_STOPPED; return 0; }