1*801ab9e9SSimon Glass /* 2*801ab9e9SSimon Glass * Copyright (C) 2015 Google, Inc 3*801ab9e9SSimon Glass * Written by Simon Glass <sjg@chromium.org> 4*801ab9e9SSimon Glass * 5*801ab9e9SSimon Glass * SPDX-License-Identifier: GPL-2.0+ 6*801ab9e9SSimon Glass */ 7*801ab9e9SSimon Glass 8*801ab9e9SSimon Glass #ifndef __VIDEO_BRIDGE 9*801ab9e9SSimon Glass #define __VIDEO_BRIDGE 10*801ab9e9SSimon Glass 11*801ab9e9SSimon Glass #include <asm/gpio.h> 12*801ab9e9SSimon Glass 13*801ab9e9SSimon Glass /** 14*801ab9e9SSimon Glass * struct video_bridge_priv - uclass information for video bridges 15*801ab9e9SSimon Glass * 16*801ab9e9SSimon Glass * @sleep: GPIO to assert to power down the bridge 17*801ab9e9SSimon Glass * @reset: GPIO to assert to reset the bridge 18*801ab9e9SSimon Glass * @hotplug: Optional GPIO to check if bridge is connected 19*801ab9e9SSimon Glass */ 20*801ab9e9SSimon Glass struct video_bridge_priv { 21*801ab9e9SSimon Glass struct gpio_desc sleep; 22*801ab9e9SSimon Glass struct gpio_desc reset; 23*801ab9e9SSimon Glass struct gpio_desc hotplug; 24*801ab9e9SSimon Glass }; 25*801ab9e9SSimon Glass 26*801ab9e9SSimon Glass /** 27*801ab9e9SSimon Glass * Operations for video bridges 28*801ab9e9SSimon Glass */ 29*801ab9e9SSimon Glass struct video_bridge_ops { 30*801ab9e9SSimon Glass /** 31*801ab9e9SSimon Glass * attach() - attach a video bridge 32*801ab9e9SSimon Glass * 33*801ab9e9SSimon Glass * @return 0 if OK, -ve on error 34*801ab9e9SSimon Glass */ 35*801ab9e9SSimon Glass int (*attach)(struct udevice *dev); 36*801ab9e9SSimon Glass 37*801ab9e9SSimon Glass /** 38*801ab9e9SSimon Glass * check_attached() - check if a bridge is correctly attached 39*801ab9e9SSimon Glass * 40*801ab9e9SSimon Glass * This method is optional - if not provided then the hotplug GPIO 41*801ab9e9SSimon Glass * will be checked instead. 42*801ab9e9SSimon Glass * 43*801ab9e9SSimon Glass * @dev: Device to check 44*801ab9e9SSimon Glass * @return 0 if attached, -EENOTCONN if not, or other -ve error 45*801ab9e9SSimon Glass */ 46*801ab9e9SSimon Glass int (*check_attached)(struct udevice *dev); 47*801ab9e9SSimon Glass 48*801ab9e9SSimon Glass /** 49*801ab9e9SSimon Glass * set_backlight() - Set the backlight brightness 50*801ab9e9SSimon Glass * 51*801ab9e9SSimon Glass * @dev: device to adjust 52*801ab9e9SSimon Glass * @percent: brightness percentage (0=off, 100=full brightness) 53*801ab9e9SSimon Glass * @return 0 if OK, -ve on error 54*801ab9e9SSimon Glass */ 55*801ab9e9SSimon Glass int (*set_backlight)(struct udevice *dev, int percent); 56*801ab9e9SSimon Glass }; 57*801ab9e9SSimon Glass 58*801ab9e9SSimon Glass #define video_bridge_get_ops(dev) \ 59*801ab9e9SSimon Glass ((struct video_bridge_ops *)(dev)->driver->ops) 60*801ab9e9SSimon Glass 61*801ab9e9SSimon Glass /** 62*801ab9e9SSimon Glass * video_bridge_attach() - attach a video bridge 63*801ab9e9SSimon Glass * 64*801ab9e9SSimon Glass * @return 0 if OK, -ve on error 65*801ab9e9SSimon Glass */ 66*801ab9e9SSimon Glass int video_bridge_attach(struct udevice *dev); 67*801ab9e9SSimon Glass 68*801ab9e9SSimon Glass /** 69*801ab9e9SSimon Glass * video_bridge_set_backlight() - Set the backlight brightness 70*801ab9e9SSimon Glass * 71*801ab9e9SSimon Glass * @percent: brightness percentage (0=off, 100=full brightness) 72*801ab9e9SSimon Glass * @return 0 if OK, -ve on error 73*801ab9e9SSimon Glass */ 74*801ab9e9SSimon Glass int video_bridge_set_backlight(struct udevice *dev, int percent); 75*801ab9e9SSimon Glass 76*801ab9e9SSimon Glass /** 77*801ab9e9SSimon Glass * video_bridge_set_active() - take the bridge in/out of reset/powerdown 78*801ab9e9SSimon Glass * 79*801ab9e9SSimon Glass * @dev: Device to adjust 80*801ab9e9SSimon Glass * @active: true to power up and reset, false to power down 81*801ab9e9SSimon Glass */ 82*801ab9e9SSimon Glass int video_bridge_set_active(struct udevice *dev, bool active); 83*801ab9e9SSimon Glass 84*801ab9e9SSimon Glass /** 85*801ab9e9SSimon Glass * check_attached() - check if a bridge is correctly attached 86*801ab9e9SSimon Glass * 87*801ab9e9SSimon Glass * @dev: Device to check 88*801ab9e9SSimon Glass * @return 0 if attached, -EENOTCONN if not, or other -ve error 89*801ab9e9SSimon Glass */ 90*801ab9e9SSimon Glass int video_bridge_check_attached(struct udevice *dev); 91*801ab9e9SSimon Glass 92*801ab9e9SSimon Glass #endif 93