This changes handles below. 1. Create btfm codec driver. 2. add support to enumerate char device. 3. create hardware endpoint abstract layers. 4. Register with ALSA driver CRs-Fixed: 3298745 Change-Id: Id75dad16de8414b3b6a24d265c8acb54eca4d5dc
59 lines
1.6 KiB
C
59 lines
1.6 KiB
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
/*
|
|
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
*/
|
|
|
|
#ifndef __LINUX_BTFM_CODEC_H
|
|
#define __LINUX_BTFM_CODEC_H
|
|
|
|
#include <linux/kernel.h>
|
|
#include <linux/bitops.h>
|
|
#include <linux/printk.h>
|
|
#include <linux/cdev.h>
|
|
#include "btfm_codec_hw_interface.h"
|
|
|
|
#define BTFMCODEC_DBG(fmt, arg...) pr_err("%s: " fmt "\n", __func__, ## arg)
|
|
#define BTFMCODEC_INFO(fmt, arg...) pr_err("%s: " fmt "\n", __func__, ## arg)
|
|
#define BTFMCODEC_ERR(fmt, arg...) pr_err("%s: " fmt "\n", __func__, ## arg)
|
|
#define BTFMCODEC_WARN(fmt, arg...) pr_warn("%s: " fmt "\n", __func__, ## arg)
|
|
|
|
#define DEVICE_NAME_MAX_LEN 64
|
|
|
|
enum btfmcodec_states {
|
|
/*Default state of btfm codec driver */
|
|
IDLE = 0,
|
|
/* When BT is active transport */
|
|
BT_Connected = 1,
|
|
/* Waiting for BT bearer indication after configuring HW ports */
|
|
BT_Connecting = 2,
|
|
/* When BTADV_AUDIO is active transport */
|
|
BTADV_AUDIO_Connected = 3,
|
|
/* Waiting for BTADV_AUDIO bearer switch indications */
|
|
BTADV_AUDIO_Connecting = 4
|
|
};
|
|
|
|
char *coverttostring(enum btfmcodec_states);
|
|
struct btfmcodec_state_machine {
|
|
enum btfmcodec_states prev_state;
|
|
enum btfmcodec_states current_state;
|
|
enum btfmcodec_states next_state;
|
|
};
|
|
|
|
struct btfmcodec_char_device {
|
|
struct cdev cdev;
|
|
refcount_t active_clients;
|
|
struct mutex lock;
|
|
int reuse_minor;
|
|
char dev_name[DEVICE_NAME_MAX_LEN];
|
|
};
|
|
|
|
struct btfmcodec_data {
|
|
struct device dev;
|
|
struct btfmcodec_state_machine states;
|
|
struct btfmcodec_char_device *btfmcodec_dev;
|
|
struct hwep_data *hwep_info;
|
|
};
|
|
|
|
struct btfmcodec_data *btfm_get_btfmcodec(void);
|
|
#endif /*__LINUX_BTFM_CODEC_H */
|