2020-01-02 12:25:08 -05:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
|
|
/*
|
|
|
|
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __HH_MSGQ_H
|
|
|
|
#define __HH_MSGQ_H
|
|
|
|
|
|
|
|
#include <linux/types.h>
|
2020-04-07 16:00:32 -04:00
|
|
|
#include <linux/platform_device.h>
|
2020-01-02 12:25:08 -05:00
|
|
|
|
|
|
|
#include "hh_common.h"
|
|
|
|
|
|
|
|
enum hh_msgq_label {
|
|
|
|
HH_MSGQ_LABEL_RM,
|
2020-01-14 20:00:32 -05:00
|
|
|
HH_MSGQ_LABEL_MEMBUF,
|
2020-09-23 19:35:16 -04:00
|
|
|
HH_MSGQ_LABEL_DISPLAY,
|
2020-01-02 12:25:08 -05:00
|
|
|
HH_MSGQ_LABEL_MAX
|
|
|
|
};
|
|
|
|
|
|
|
|
#define HH_MSGQ_MAX_MSG_SIZE_BYTES 240
|
|
|
|
|
|
|
|
#define HH_MSGQ_DIRECTION_TX 0
|
|
|
|
#define HH_MSGQ_DIRECTION_RX 1
|
|
|
|
|
|
|
|
/* Possible flags to pass for Tx or Rx */
|
|
|
|
#define HH_MSGQ_TX_PUSH BIT(0)
|
|
|
|
#define HH_MSGQ_NONBLOCK BIT(32)
|
|
|
|
|
2020-04-06 18:52:25 -04:00
|
|
|
#if IS_ENABLED(CONFIG_HH_MSGQ)
|
2020-01-02 12:25:08 -05:00
|
|
|
void *hh_msgq_register(enum hh_msgq_label label);
|
|
|
|
int hh_msgq_unregister(void *msgq_client_desc);
|
|
|
|
int hh_msgq_send(void *msgq_client_desc,
|
|
|
|
void *buff, size_t size, unsigned long flags);
|
|
|
|
int hh_msgq_recv(void *msgq_client_desc,
|
2020-03-24 10:24:08 -04:00
|
|
|
void *buff, size_t buff_size,
|
|
|
|
size_t *recv_size, unsigned long flags);
|
2020-01-02 12:25:08 -05:00
|
|
|
|
|
|
|
int hh_msgq_populate_cap_info(enum hh_msgq_label label, u64 cap_id,
|
|
|
|
int direction, int irq);
|
2020-04-07 16:00:32 -04:00
|
|
|
int hh_msgq_probe(struct platform_device *pdev, enum hh_msgq_label label);
|
2020-04-06 18:52:25 -04:00
|
|
|
#else
|
|
|
|
static inline void *hh_msgq_register(enum hh_msgq_label label)
|
|
|
|
{
|
|
|
|
return ERR_PTR(-ENODEV);
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline int hh_msgq_unregister(void *msgq_client_desc)
|
|
|
|
{
|
|
|
|
return ERR_PTR(-ENODEV);
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline int hh_msgq_send(void *msgq_client_desc,
|
|
|
|
void *buff, size_t size, unsigned long flags)
|
|
|
|
{
|
|
|
|
return -EINVAL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline int hh_msgq_recv(void *msgq_client_desc,
|
|
|
|
void *buff, size_t buff_size,
|
|
|
|
size_t *recv_size, unsigned long flags)
|
|
|
|
{
|
|
|
|
return -EINVAL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline int hh_msgq_populate_cap_info(enum hh_msgq_label label,
|
|
|
|
u64 cap_id,
|
|
|
|
int direction,
|
|
|
|
int irq)
|
|
|
|
{
|
|
|
|
return -EINVAL;
|
|
|
|
}
|
2020-04-07 16:00:32 -04:00
|
|
|
|
|
|
|
static inline int hh_msgq_probe(struct platform_device *pdev,
|
|
|
|
enum hh_msgq_label label)
|
|
|
|
{
|
|
|
|
return -ENODEV;
|
|
|
|
}
|
2020-04-06 18:52:25 -04:00
|
|
|
#endif
|
2020-01-02 12:25:08 -05:00
|
|
|
#endif
|