18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Copyright (c) 2020 Loongson Technology Co., Ltd.
48c2ecf20Sopenharmony_ci * Authors:
58c2ecf20Sopenharmony_ci *	sunhao <sunhao@loongson.cn>
68c2ecf20Sopenharmony_ci * This program is free software; you can redistribute  it and/or modify it
78c2ecf20Sopenharmony_ci * under  the terms of  the GNU General  Public License as published by the
88c2ecf20Sopenharmony_ci * Free Software Foundation;  either version 2 of the  License, or (at your
98c2ecf20Sopenharmony_ci * option) any later version.
108c2ecf20Sopenharmony_ci */
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#ifndef __LOONGSON_I2C_H__
138c2ecf20Sopenharmony_ci#define __LOONGSON_I2C_H__
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci#include <linux/i2c.h>
168c2ecf20Sopenharmony_ci#include <linux/i2c-algo-bit.h>
178c2ecf20Sopenharmony_ci#include <drm/drm_edid.h>
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci/* Modify this marco to config i2c bus speed, bus_freq = 500 / T */
208c2ecf20Sopenharmony_ci/* Eg: i2c_bus_freq=100k when T=5 */
218c2ecf20Sopenharmony_ci#define DC_I2C_TON 5
228c2ecf20Sopenharmony_ci#define DC_I2C_NAME "ls7a_dc_i2c"
238c2ecf20Sopenharmony_ci#define DC_I2C_BUS_MAX 2
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci/* Loongson 7A display controller proprietary GPIOs */
268c2ecf20Sopenharmony_ci#define LS7A_DC_GPIO_CFG_OFFSET (0x1660)
278c2ecf20Sopenharmony_ci#define LS7A_DC_GPIO_IN_OFFSET (0x1650)
288c2ecf20Sopenharmony_ci#define LS7A_DC_GPIO_OUT_OFFSET (0x1650)
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_cistruct loongson_drm_device;
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_cistruct loongson_i2c {
338c2ecf20Sopenharmony_ci	struct loongson_drm_device *ldev;
348c2ecf20Sopenharmony_ci	struct i2c_client *ddc_client;
358c2ecf20Sopenharmony_ci	struct i2c_adapter *adapter;
368c2ecf20Sopenharmony_ci	u32 data, clock;
378c2ecf20Sopenharmony_ci	bool use, init;
388c2ecf20Sopenharmony_ci	u32 i2c_id;
398c2ecf20Sopenharmony_ci};
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ciint loongson_i2c_init(struct loongson_drm_device *ldev);
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci#endif
44