brintos

brintos / linux-shallow public Read only

0
0
Text · 2.8 KiB · 2c211d2 Raw
172 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * AMD MP2 1.1 communication interfaces4 *5 * Copyright (c) 2022, Advanced Micro Devices, Inc.6 * All Rights Reserved.7 *8 * Author: Basavaraj Natikar <Basavaraj.Natikar@amd.com>9 */10 11#ifndef AMD_SFH_INTERFACE_H12#define AMD_SFH_INTERFACE_H13 14#include "../amd_sfh_common.h"15 16#define SENSOR_DATA_MEM_SIZE_DEFAULT		25617#define TOTAL_STATIC_MEM_DEFAULT		102418#define OFFSET_SFH_INFO_BASE_DEFAULT		019#define OFFSET_SENSOR_DATA_DEFAULT		(OFFSET_SFH_INFO_BASE_DEFAULT + \20							TOTAL_STATIC_MEM_DEFAULT)21enum sensor_index {22	ACCEL_IDX,23	GYRO_IDX,24	MAG_IDX,25	ALS_IDX = 4,26	HPD_IDX = 5,27	MAX_IDX = 15,28};29 30struct sfh_cmd_base {31	union {32		u32 ul;33		struct {34			u32 sensor_id		: 4;35			u32 cmd_id		: 4;36			u32 sub_cmd_id		: 8;37			u32 sub_cmd_value	: 12;38			u32 rsvd		: 3;39			u32 intr_disable	: 1;40		} cmd;41	};42};43 44struct sfh_cmd_response {45	union {46		u32 resp;47		struct {48			u32 response	: 8;49			u32 sensor_id	: 4;50			u32 cmd_id	: 4;51			u32 sub_cmd	: 6;52			u32 rsvd2	: 10;53		} response;54	};55};56 57struct sfh_platform_info {58	union {59		u32 pi;60		struct {61			u32 cust_id		: 16;62			u32 plat_id		: 6;63			u32 interface_id	: 4;64			u32 rsvd		: 6;65		} pinfo;66	};67};68 69struct sfh_firmware_info {70	union {71		u32 fw_ver;72		struct {73			u32 minor_rev : 8;74			u32 major_rev : 8;75			u32 minor_ver : 8;76			u32 major_ver : 8;77		} fver;78	};79};80 81struct sfh_sensor_list {82	union {83		u32 slist;84		struct {85			u32 sensors	: 16;86			u32 rsvd	: 16;87		} sl;88	};89};90 91struct sfh_sensor_prop {92	union {93		u32 sprop;94		struct {95			u32 elist	: 16;96			u32 feat	: 16;97		} sf;98	};99};100 101struct sfh_base_info {102	union {103		u32 sfh_base[24];104		struct {105			struct sfh_platform_info plat_info;106			struct sfh_firmware_info  fw_info;107			struct sfh_sensor_list s_list;108			u32 rsvd;109			struct sfh_sensor_prop s_prop[16];110		} sbase;111	};112};113 114struct sfh_common_data {115	u64 timestamp;116	u32 intr_cnt;117	u32 featvalid		: 16;118	u32 rsvd		: 13;119	u32 sensor_state	: 3;120};121 122struct sfh_float32 {123	u32 x;124	u32 y;125	u32 z;126};127 128struct sfh_accel_data {129	struct sfh_common_data commondata;130	struct sfh_float32 acceldata;131	u32 accelstatus;132};133 134struct sfh_gyro_data {135	struct sfh_common_data commondata;136	struct sfh_float32 gyrodata;137	u32 result;138};139 140struct sfh_mag_data {141	struct sfh_common_data commondata;142	struct sfh_float32 magdata;143	u32 accuracy;144};145 146struct sfh_als_data {147	struct sfh_common_data commondata;148	u32 lux;149	u32 light_color_temp;150	u32 chromaticity_x;151	u32 chromaticity_y;152};153 154struct hpd_status {155	union {156		struct {157			u32 distance			: 16;158			u32 probablity			: 8;159			u32 presence			: 2;160			u32 rsvd			: 5;161			u32 state			: 1;162		} shpd;163		u32 val;164	};165};166 167void sfh_interface_init(struct amd_mp2_dev *mp2);168void sfh_deinit_emp2(void);169void amd_sfh1_1_set_desc_ops(struct amd_mp2_ops *mp2_ops);170int amd_sfh_float_to_int(u32 flt32_val);171#endif172