| /* |
| * Copyright (C) 2014 Freescale Semiconductor, Inc. All Rights Reserved. |
| */ |
| |
| /* |
| * The code contained herein is licensed under the GNU General Public |
| * License. You may obtain a copy of the GNU General Public License |
| * Version 2 or later at the following locations: |
| * |
| * http://www.opensource.org/licenses/gpl-license.html |
| * http://www.gnu.org/copyleft/gpl.html |
| */ |
| #ifndef __CRTC__ |
| #define __CRTC__ |
| |
| enum crtc { |
| CRTC_IPU_DI0, |
| CRTC_IPU_DI1, |
| CRTC_IPU1_DI0, |
| CRTC_IPU1_DI1, |
| CRTC_IPU2_DI0, |
| CRTC_IPU2_DI1, |
| CRTC_LCDIF, |
| CRTC_LCDIF1, |
| CRTC_LCDIF2, |
| CRTC_MAX, |
| }; |
| |
| struct ipu_di_crtc_map { |
| enum crtc crtc; |
| int ipu_id; |
| int ipu_di; |
| }; |
| |
| static const struct ipu_di_crtc_map ipu_di_crtc_maps[] = { |
| {CRTC_IPU1_DI0, 0 , 0}, {CRTC_IPU1_DI1, 0 , 1}, |
| {CRTC_IPU2_DI0, 1 , 0}, {CRTC_IPU2_DI1, 1 , 1}, |
| }; |
| |
| static inline int ipu_di_to_crtc(struct device *dev, int ipu_id, |
| int ipu_di, enum crtc *crtc) |
| { |
| int i = 0; |
| |
| for (; i < ARRAY_SIZE(ipu_di_crtc_maps); i++) |
| if (ipu_di_crtc_maps[i].ipu_id == ipu_id && |
| ipu_di_crtc_maps[i].ipu_di == ipu_di) { |
| *crtc = ipu_di_crtc_maps[i].crtc; |
| return 0; |
| } |
| |
| dev_err(dev, "failed to get valid ipu di crtc " |
| "ipu_id %d, ipu_di %d\n", ipu_id, ipu_di); |
| return -EINVAL; |
| } |
| |
| #endif |