101 lines
2.7 KiB
C
101 lines
2.7 KiB
C
|
/* include/uapi/linux/hwmmsqz.h
|
||
|
*
|
||
|
* Userspace API for Samsung MMSQZ driver
|
||
|
*
|
||
|
* Copyright (c) 2019 Samsung Electronics Co., Ltd.
|
||
|
* http://www.samsung.com
|
||
|
*
|
||
|
* Author: Jungik Seo <jungik.seo@samsung.com>
|
||
|
*
|
||
|
* 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.
|
||
|
*/
|
||
|
|
||
|
#ifndef __HWMMSQZ_H__
|
||
|
#define __HWMMSQZ_H__
|
||
|
|
||
|
#include "hwjsqz.h"
|
||
|
|
||
|
|
||
|
/*
|
||
|
* NOTE: THESE ENUMS ARE ALSO USED BY USERSPACE TO SPECIFY SETTINGS AND THEY'RE
|
||
|
* SUPPOSED TO WORK WITH FUTURE HARDWARE AS WELL (WHICH MAY OR MAY NOT
|
||
|
* SUPPORT ALL THE SETTINGS.
|
||
|
*
|
||
|
* FOR THAT REASON, YOU MUST NOT CHANGE THE ORDER OF VALUES,
|
||
|
* AND NEW VALUES MUST BE ADDED AT THE END OF THE ENUMS TO AVOID
|
||
|
* API BREAKAGES.
|
||
|
*/
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @brief the video size
|
||
|
*/
|
||
|
struct hwMSQZ_video_info {
|
||
|
__u32 width; /**< width of the image */
|
||
|
__u32 height; /**< height of the image */
|
||
|
__u32 stride; /**<: stride of the image */
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* @brief the gyro data
|
||
|
*/
|
||
|
struct hwMSQZ_velocity {
|
||
|
__u32 vel_x; /**< Gyro X data */
|
||
|
__u32 vel_y; /**< Gyro Y data */
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* @brief the tune data of DC
|
||
|
*/
|
||
|
struct hwMSQZ_tune_dc {
|
||
|
unsigned short base; /**< Gyro X data */
|
||
|
unsigned char reduce; /**< Gyro X data */
|
||
|
unsigned char wshift; /**< Gyro X data */
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* @brief the tune data of Alpha
|
||
|
*/
|
||
|
struct hwMSQZ_tune_alpha {
|
||
|
short jnd;
|
||
|
short dqp;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* @brief the tune data of DQP
|
||
|
*/
|
||
|
struct hwMSQZ_tune_dqp {
|
||
|
short dqp_max;
|
||
|
short dqp_min;
|
||
|
};
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @brief the task information to be sent to the driver
|
||
|
*
|
||
|
* This is the struct holding all the task information that the driver needs
|
||
|
* to process a task.
|
||
|
*
|
||
|
* The client needs to fill it in with the necessary information and send it
|
||
|
* to the driver through the IOCTL.
|
||
|
*/
|
||
|
struct hwMSQZ_task {
|
||
|
struct hwMSQZ_video_info video_info; /**< info related to the video sent to the HW for processing */
|
||
|
struct hwMSQZ_velocity vel_info; /**< info related to gyro data sent to the HW for processing */
|
||
|
struct hwMSQZ_tune_dc dc_tune; /**< info related to tuning dc value sent to the HW for processing */
|
||
|
struct hwMSQZ_tune_alpha alpha_tune; /**< info related to tuning alpha value sent to the HW for processing */
|
||
|
struct hwMSQZ_tune_dqp dqp_tune; /**< info related to tuning dqp value sent to the HW for processing */
|
||
|
struct hwSQZ_buffer buf_in; /**< info related to the input buffer sent to the HW for processing */
|
||
|
struct hwSQZ_buffer buf_out; /**< info related to the output buffer sent to the HW for processing */
|
||
|
int frame_dqp; /**< frame average dqp */
|
||
|
};
|
||
|
|
||
|
|
||
|
#define HWMSQZ_IOC_PROCESS _IOWR('M', 1, struct hwMSQZ_task)
|
||
|
|
||
|
|
||
|
#endif // __HWJSQZ_H__
|
||
|
|