1147fd3acSPhilipp Tomsich /* 2147fd3acSPhilipp Tomsich * Copyright (c) 2017 Theobroma Systems Design und Consulting GmbH 3147fd3acSPhilipp Tomsich * 4147fd3acSPhilipp Tomsich * SPDX-License-Identifier: GPL-2.0+ 5147fd3acSPhilipp Tomsich */ 6147fd3acSPhilipp Tomsich 7147fd3acSPhilipp Tomsich #ifndef __RK_HDMI_H__ 8147fd3acSPhilipp Tomsich #define __RK_HDMI_H__ 9147fd3acSPhilipp Tomsich 10147fd3acSPhilipp Tomsich struct rkhdmi_driverdata { 11147fd3acSPhilipp Tomsich /* configuration */ 12147fd3acSPhilipp Tomsich u8 i2c_clk_high; 13147fd3acSPhilipp Tomsich u8 i2c_clk_low; 14147fd3acSPhilipp Tomsich const char * const *regulator_names; 15147fd3acSPhilipp Tomsich u32 regulator_names_cnt; 16147fd3acSPhilipp Tomsich /* setters/getters */ 17147fd3acSPhilipp Tomsich int (*set_input_vop)(struct udevice *dev); 18147fd3acSPhilipp Tomsich int (*clk_config)(struct udevice *dev); 19147fd3acSPhilipp Tomsich }; 20147fd3acSPhilipp Tomsich 21147fd3acSPhilipp Tomsich struct rk_hdmi_priv { 22147fd3acSPhilipp Tomsich struct dw_hdmi hdmi; 23147fd3acSPhilipp Tomsich void *grf; 24147fd3acSPhilipp Tomsich }; 25147fd3acSPhilipp Tomsich 26*56c7ba34SPhilipp Tomsich /** 27*56c7ba34SPhilipp Tomsich * rk_hdmi_read_edid() - read the attached HDMI/DVI monitor's EDID 28*56c7ba34SPhilipp Tomsich * 29*56c7ba34SPhilipp Tomsich * N.B.: The buffer should be large enough to hold 2 EDID blocks, as 30*56c7ba34SPhilipp Tomsich * this function calls dw_hdmi_read_edid, which ignores buf_size 31*56c7ba34SPhilipp Tomsich * argument and assumes that there's always enough space for 2 32*56c7ba34SPhilipp Tomsich * EDID blocks. 33*56c7ba34SPhilipp Tomsich * 34*56c7ba34SPhilipp Tomsich * @dev: device 35*56c7ba34SPhilipp Tomsich * @buf: output buffer for the EDID 36*56c7ba34SPhilipp Tomsich * @buf_size: number of bytes in the buffer 37*56c7ba34SPhilipp Tomsich * @return number of bytes read if OK, -ve if something went wrong 38*56c7ba34SPhilipp Tomsich */ 39147fd3acSPhilipp Tomsich int rk_hdmi_read_edid(struct udevice *dev, u8 *buf, int buf_size); 40*56c7ba34SPhilipp Tomsich 41*56c7ba34SPhilipp Tomsich /** 42*56c7ba34SPhilipp Tomsich * rk_hdmi_probe_regulators() - probe (autoset + enable) regulators 43*56c7ba34SPhilipp Tomsich * 44*56c7ba34SPhilipp Tomsich * Probes a list of regulators by performing autoset and enable 45*56c7ba34SPhilipp Tomsich * operations on them. The list of regulators is an array of string 46*56c7ba34SPhilipp Tomsich * pointers and any individual regulator-probe may fail without 47*56c7ba34SPhilipp Tomsich * counting as an error. 48*56c7ba34SPhilipp Tomsich * 49*56c7ba34SPhilipp Tomsich * @dev: device 50*56c7ba34SPhilipp Tomsich * @names: array of string-pointers to regulator names to probe 51*56c7ba34SPhilipp Tomsich * @cnt: number of elements in the 'names' array 52*56c7ba34SPhilipp Tomsich */ 53147fd3acSPhilipp Tomsich void rk_hdmi_probe_regulators(struct udevice *dev, 54147fd3acSPhilipp Tomsich const char * const *names, int cnt); 55*56c7ba34SPhilipp Tomsich /** 56*56c7ba34SPhilipp Tomsich * rk_hdmi_ofdata_to_platdata() - common ofdata_to_platdata implementation 57*56c7ba34SPhilipp Tomsich * 58*56c7ba34SPhilipp Tomsich * @dev: device 59*56c7ba34SPhilipp Tomsich * @return 0 if OK, -ve if something went wrong 60*56c7ba34SPhilipp Tomsich */ 61147fd3acSPhilipp Tomsich int rk_hdmi_ofdata_to_platdata(struct udevice *dev); 62*56c7ba34SPhilipp Tomsich 63*56c7ba34SPhilipp Tomsich /** 64*56c7ba34SPhilipp Tomsich * rk_hdmi_probe() - common probe implementation 65*56c7ba34SPhilipp Tomsich * 66*56c7ba34SPhilipp Tomsich * Performs the following, common initialisation steps: 67*56c7ba34SPhilipp Tomsich * 1. checks for HPD (i.e. a HDMI monitor being attached) 68*56c7ba34SPhilipp Tomsich * 2. initialises the Designware HDMI core 69*56c7ba34SPhilipp Tomsich * 3. initialises the Designware HDMI PHY 70*56c7ba34SPhilipp Tomsich * 71*56c7ba34SPhilipp Tomsich * @dev: device 72*56c7ba34SPhilipp Tomsich * @return 0 if OK, -ve if something went wrong 73*56c7ba34SPhilipp Tomsich */ 74147fd3acSPhilipp Tomsich int rk_hdmi_probe(struct udevice *dev); 75147fd3acSPhilipp Tomsich 76147fd3acSPhilipp Tomsich #endif 77