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