Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /* drivers/media/platform/s5p-cec/s5p_cec.h
0003  *
0004  * Samsung S5P HDMI CEC driver
0005  *
0006  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
0007  */
0008 
0009 #ifndef _S5P_CEC_H_
0010 #define _S5P_CEC_H_ __FILE__
0011 
0012 #include <linux/clk.h>
0013 #include <linux/interrupt.h>
0014 #include <linux/kernel.h>
0015 #include <linux/mfd/syscon.h>
0016 #include <linux/module.h>
0017 #include <linux/of.h>
0018 #include <linux/platform_device.h>
0019 #include <linux/pm_runtime.h>
0020 #include <linux/timer.h>
0021 #include <linux/workqueue.h>
0022 #include <media/cec.h>
0023 
0024 #include "exynos_hdmi_cec.h"
0025 #include "regs-cec.h"
0026 #include "s5p_cec.h"
0027 
0028 #define CEC_NAME    "s5p-cec"
0029 
0030 #define CEC_STATUS_TX_RUNNING       (1 << 0)
0031 #define CEC_STATUS_TX_TRANSFERRING  (1 << 1)
0032 #define CEC_STATUS_TX_DONE      (1 << 2)
0033 #define CEC_STATUS_TX_ERROR     (1 << 3)
0034 #define CEC_STATUS_TX_NACK      (1 << 4)
0035 #define CEC_STATUS_TX_BYTES     (0xFF << 8)
0036 #define CEC_STATUS_RX_RUNNING       (1 << 16)
0037 #define CEC_STATUS_RX_RECEIVING     (1 << 17)
0038 #define CEC_STATUS_RX_DONE      (1 << 18)
0039 #define CEC_STATUS_RX_ERROR     (1 << 19)
0040 #define CEC_STATUS_RX_BCAST     (1 << 20)
0041 #define CEC_STATUS_RX_BYTES     (0xFF << 24)
0042 
0043 #define CEC_WORKER_TX_DONE      (1 << 0)
0044 #define CEC_WORKER_RX_MSG       (1 << 1)
0045 
0046 /* CEC Rx buffer size */
0047 #define CEC_RX_BUFF_SIZE        16
0048 /* CEC Tx buffer size */
0049 #define CEC_TX_BUFF_SIZE        16
0050 
0051 enum cec_state {
0052     STATE_IDLE,
0053     STATE_BUSY,
0054     STATE_DONE,
0055     STATE_NACK,
0056     STATE_ERROR
0057 };
0058 
0059 struct cec_notifier;
0060 
0061 struct s5p_cec_dev {
0062     struct cec_adapter  *adap;
0063     struct clk      *clk;
0064     struct device       *dev;
0065     struct mutex        lock;
0066     struct regmap           *pmu;
0067     struct cec_notifier *notifier;
0068     int         irq;
0069     void __iomem        *reg;
0070 
0071     enum cec_state      rx;
0072     enum cec_state      tx;
0073     struct cec_msg      msg;
0074 };
0075 
0076 #endif /* _S5P_CEC_H_ */