/* SPDX-License-Identifier: GPL-2.0 */
|
/*
|
* Support for Clovertrail PNW Camera Imaging ISP subsystem.
|
*
|
* Copyright (c) 2012 Intel Corporation. All Rights Reserved.
|
*
|
* This program is free software; you can redistribute it and/or
|
* modify it under the terms of the GNU General Public License version
|
* 2 as published by the Free Software Foundation.
|
*
|
* This program is distributed in the hope that it will be useful,
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* GNU General Public License for more details.
|
*
|
*
|
*/
|
|
#ifndef __ATOMISP_ACC_H__
|
#define __ATOMISP_ACC_H__
|
|
#include "../../include/linux/atomisp.h"
|
#include "atomisp_internal.h"
|
|
#include "ia_css_types.h"
|
|
/*
|
* Interface functions for AtomISP driver acceleration API implementation.
|
*/
|
|
struct atomisp_sub_device;
|
|
void atomisp_acc_cleanup(struct atomisp_device *isp);
|
|
/*
|
* Free up any allocated resources.
|
* Must be called each time when the device is closed.
|
* Note that there isn't corresponding open() call;
|
* this function may be called sequentially multiple times.
|
* Must be called to free up resources before driver is unloaded.
|
*/
|
void atomisp_acc_release(struct atomisp_sub_device *asd);
|
|
/* Load acceleration binary. DEPRECATED. */
|
int atomisp_acc_load(struct atomisp_sub_device *asd,
|
struct atomisp_acc_fw_load *fw);
|
|
/* Load acceleration binary with specified properties */
|
int atomisp_acc_load_to_pipe(struct atomisp_sub_device *asd,
|
struct atomisp_acc_fw_load_to_pipe *fw);
|
|
/* Unload specified acceleration binary */
|
int atomisp_acc_unload(struct atomisp_sub_device *asd,
|
unsigned int *handle);
|
|
/*
|
* Map a memory region into ISP memory space.
|
*/
|
int atomisp_acc_map(struct atomisp_sub_device *asd,
|
struct atomisp_acc_map *map);
|
|
/*
|
* Unmap a mapped memory region.
|
*/
|
int atomisp_acc_unmap(struct atomisp_sub_device *asd,
|
struct atomisp_acc_map *map);
|
|
/*
|
* Set acceleration binary argument to a previously mapped memory region.
|
*/
|
int atomisp_acc_s_mapped_arg(struct atomisp_sub_device *asd,
|
struct atomisp_acc_s_mapped_arg *arg);
|
|
/*
|
* Start acceleration.
|
* Return immediately, acceleration is left running in background.
|
* Specify either acceleration binary or pipeline which to start.
|
*/
|
int atomisp_acc_start(struct atomisp_sub_device *asd,
|
unsigned int *handle);
|
|
/*
|
* Wait until acceleration finishes.
|
* This MUST be called after each acceleration has been started.
|
* Specify either acceleration binary or pipeline handle.
|
*/
|
int atomisp_acc_wait(struct atomisp_sub_device *asd,
|
unsigned int *handle);
|
|
/*
|
* Used by ISR to notify ACC stage finished.
|
* This is internally used and does not export as IOCTL.
|
*/
|
void atomisp_acc_done(struct atomisp_sub_device *asd, unsigned int handle);
|
|
/*
|
* Appends the loaded acceleration binary extensions to the
|
* current ISP mode. Must be called just before atomisp_css_start().
|
*/
|
int atomisp_acc_load_extensions(struct atomisp_sub_device *asd);
|
|
/*
|
* Must be called after streaming is stopped:
|
* unloads any loaded acceleration extensions.
|
*/
|
void atomisp_acc_unload_extensions(struct atomisp_sub_device *asd);
|
|
/*
|
* Set acceleration firmware flags.
|
*/
|
int atomisp_acc_set_state(struct atomisp_sub_device *asd,
|
struct atomisp_acc_state *arg);
|
|
/*
|
* Get acceleration firmware flags.
|
*/
|
int atomisp_acc_get_state(struct atomisp_sub_device *asd,
|
struct atomisp_acc_state *arg);
|
|
#endif /* __ATOMISP_ACC_H__ */
|