Path: blob/master/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_interface.h
26285 views
/* SPDX-License-Identifier: GPL-2.0-or-later */1/*2* AMD MP2 1.1 communication interfaces3*4* Copyright (c) 2022, Advanced Micro Devices, Inc.5* All Rights Reserved.6*7* Author: Basavaraj Natikar <[email protected]>8*/910#ifndef AMD_SFH_INTERFACE_H11#define AMD_SFH_INTERFACE_H1213#include "../amd_sfh_common.h"1415#define SENSOR_DATA_MEM_SIZE_DEFAULT 25616#define TOTAL_STATIC_MEM_DEFAULT 102417#define OFFSET_SFH_INFO_BASE_DEFAULT 018#define OFFSET_SENSOR_DATA_DEFAULT (OFFSET_SFH_INFO_BASE_DEFAULT + \19TOTAL_STATIC_MEM_DEFAULT)20enum sensor_index {21ACCEL_IDX,22GYRO_IDX,23MAG_IDX,24SRA_IDX,25ALS_IDX,26HPD_IDX,27MAX_IDX = 15,28};2930struct sfh_cmd_base {31union {32u32 ul;33struct {34u32 sensor_id : 4;35u32 cmd_id : 4;36u32 sub_cmd_id : 8;37u32 sub_cmd_value : 12;38u32 rsvd : 3;39u32 intr_disable : 1;40} cmd;41};42};4344struct sfh_cmd_response {45union {46u32 resp;47struct {48u32 response : 8;49u32 sensor_id : 4;50u32 cmd_id : 4;51u32 sub_cmd : 6;52u32 rsvd2 : 10;53} response;54};55};5657struct sfh_platform_info {58union {59u32 pi;60struct {61u32 cust_id : 16;62u32 plat_id : 6;63u32 interface_id : 4;64u32 rsvd : 6;65} pinfo;66};67};6869struct sfh_firmware_info {70union {71u32 fw_ver;72struct {73u32 minor_rev : 8;74u32 major_rev : 8;75u32 minor_ver : 8;76u32 major_ver : 8;77} fver;78};79};8081struct sfh_sensor_list {82union {83u32 slist;84struct {85u32 sensors : 16;86u32 rsvd : 16;87} sl;88};89};9091struct sfh_sensor_prop {92union {93u32 sprop;94struct {95u32 elist : 16;96u32 feat : 16;97} sf;98};99};100101struct sfh_base_info {102union {103u32 sfh_base[24];104struct {105struct sfh_platform_info plat_info;106struct sfh_firmware_info fw_info;107struct sfh_sensor_list s_list;108u32 rsvd;109struct sfh_sensor_prop s_prop[16];110} sbase;111};112};113114struct sfh_common_data {115u64 timestamp;116u32 intr_cnt;117u32 featvalid : 16;118u32 rsvd : 13;119u32 sensor_state : 3;120};121122struct sfh_float32 {123u32 x;124u32 y;125u32 z;126};127128struct sfh_accel_data {129struct sfh_common_data commondata;130struct sfh_float32 acceldata;131u32 accelstatus;132};133134struct sfh_gyro_data {135struct sfh_common_data commondata;136struct sfh_float32 gyrodata;137u32 result;138};139140struct sfh_mag_data {141struct sfh_common_data commondata;142struct sfh_float32 magdata;143u32 accuracy;144};145146struct sfh_als_data {147struct sfh_common_data commondata;148u32 lux;149u32 light_color_temp;150u32 chromaticity_x;151u32 chromaticity_y;152};153154struct hpd_status {155union {156struct {157u32 distance : 16;158u32 probablity : 8;159u32 presence : 2;160u32 rsvd : 5;161u32 state : 1;162} shpd;163u32 val;164};165};166167struct sfh_op_mode {168union {169u32 val;170struct {171u32 mode : 3;172u32 lidstatus : 1;173u32 angle : 10;174u32 inbagstatedbg : 2;175u32 ontablestate : 2;176u32 inbagstate : 2;177u32 outbagstate : 2;178u32 inbagmlcstate : 1;179u32 powerstate : 2;180u32 data : 3;181u32 devicemode : 4;182} op_mode;183};184};185186void sfh_interface_init(struct amd_mp2_dev *mp2);187void sfh_deinit_emp2(void);188void amd_sfh1_1_set_desc_ops(struct amd_mp2_ops *mp2_ops);189int amd_sfh_float_to_int(u32 flt32_val);190#endif191192193