aboutsummaryrefslogtreecommitdiff
path: root/src/soc/nvidia/tegra132/mipi_dsi.c
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2016-08-06 13:42:37 -0500
committerAaron Durbin <adurbin@chromium.org>2016-08-09 01:32:21 +0200
commit9ba069957b1591628ea4d5e2a9ff8553efa52c71 (patch)
tree0f370b43773242ce704158c676f964432230cb3b /src/soc/nvidia/tegra132/mipi_dsi.c
parent0c634159a35ff567fc4897df25dddddd181a1a8c (diff)
soc/nvidia/tegra132: remove tegra132 support
As no more mainboards are utilizing this SoC support code remove it. It can be resurrected if ever needed. BUG=chrome-os-partner:55932 Change-Id: Ic3caf6e6c9b62d012679b996abaa525c8bf679a9 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/16108 Tested-by: build bot (Jenkins) Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Diffstat (limited to 'src/soc/nvidia/tegra132/mipi_dsi.c')
-rw-r--r--src/soc/nvidia/tegra132/mipi_dsi.c426
1 files changed, 0 insertions, 426 deletions
diff --git a/src/soc/nvidia/tegra132/mipi_dsi.c b/src/soc/nvidia/tegra132/mipi_dsi.c
deleted file mode 100644
index d273a75419..0000000000
--- a/src/soc/nvidia/tegra132/mipi_dsi.c
+++ /dev/null
@@ -1,426 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright 2014 Google Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-/*
- * MIPI DSI Bus
- *
- * Copyright (C) 2012-2013, Samsung Electronics, Co., Ltd.
- * Andrzej Hajda <a.hajda@samsung.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-#include <console/console.h>
-#include <arch/io.h>
-#include <stdint.h>
-#include <lib.h>
-#include <stdlib.h>
-#include <delay.h>
-#include <string.h>
-#include <soc/addressmap.h>
-#include <soc/clock.h>
-#include <device/device.h>
-#include <soc/nvidia/tegra/types.h>
-#include <soc/display.h>
-#include <soc/mipi_dsi.h>
-#include <soc/mipi_display.h>
-#include <soc/tegra_dsi.h>
-
-struct mipi_dsi_device mipi_dsi_device_data[NUM_DSI] = {
- {
- .master = NULL,
- .slave = &mipi_dsi_device_data[DSI_B],
- },
- {
- .master = &mipi_dsi_device_data[DSI_A],
- .slave = NULL,
- },
-};
-
-static struct mipi_dsi_device *
-mipi_dsi_device_alloc(struct mipi_dsi_host *host)
-{
- static int index = 0;
- struct mipi_dsi_device *dsi;
-
- if (index >= NUM_DSI)
- return (void *)-EPTR;
-
- dsi = &mipi_dsi_device_data[index++];
- dsi->host = host;
- return dsi;
-}
-
-static struct mipi_dsi_device *
-of_mipi_dsi_device_add(struct mipi_dsi_host *host)
-{
- struct mipi_dsi_device *dsi;
- u32 reg = 0;
-
- dsi = mipi_dsi_device_alloc(host);
- if (IS_ERR_PTR(dsi)) {
- printk(BIOS_ERR, "failed to allocate DSI device\n");
- return dsi;
- }
-
- dsi->channel = reg;
- host->dev = (void *)dsi;
-
- return dsi;
-}
-
-int mipi_dsi_host_register(struct mipi_dsi_host *host)
-{
- of_mipi_dsi_device_add(host);
- return 0;
-}
-
-/**
- * mipi_dsi_attach - attach a DSI device to its DSI host
- * @param dsi: DSI peripheral
- */
-int mipi_dsi_attach(struct mipi_dsi_device *dsi)
-{
- const struct mipi_dsi_host_ops *ops = dsi->host->ops;
-
- if (!ops || !ops->attach)
- return -ENOSYS;
-
- return ops->attach(dsi->host, dsi);
-}
-
-/**
- * mipi_dsi_detach - detach a DSI device from its DSI host
- * @param dsi: DSI peripheral
- */
-int mipi_dsi_detach(struct mipi_dsi_device *dsi)
-{
- const struct mipi_dsi_host_ops *ops = dsi->host->ops;
-
- if (!ops || !ops->detach)
- return -ENOSYS;
-
- return ops->detach(dsi->host, dsi);
-}
-
-/**
- * mipi_dsi_enslave() - use a MIPI DSI peripheral as slave for dual-channel
- * operation
- * @param master: master DSI peripheral device
- * @param slave: slave DSI peripheral device
- *
- * @return 0 on success or a negative error code on failure.
- */
-int mipi_dsi_enslave(struct mipi_dsi_device *master,
- struct mipi_dsi_device *slave)
-{
- int err = 0;
-
- slave->master = master;
- master->slave = slave;
-
- if (master->ops && master->ops->enslave)
- err = master->ops->enslave(master, slave);
-
- return err;
-}
-
-/**
- * mipi_dsi_liberate() - stop using a MIPI DSI peripheral as slave for dual-
- * channel operation
- * @param master: master DSI peripheral device
- * @param slave: slave DSI peripheral device
- *
- * @return 0 on success or a negative error code on failure.
- */
-int mipi_dsi_liberate(struct mipi_dsi_device *master,
- struct mipi_dsi_device *slave)
-{
- int err = 0;
-
- if (master->ops && master->ops->liberate)
- err = master->ops->liberate(master, slave);
-
- master->slave = NULL;
- slave->master = NULL;
-
- return err;
-}
-
-/**
- * mipi_dsi_dcs_write() - send DCS write command
- * @param dsi: DSI peripheral device
- * @param cmd: DCS command
- * @param data: buffer containing the command payload
- * @param len: command payload length
- *
- * This function will automatically choose the right data type depending on
- * the command payload length.
- *
- * @return The number of bytes successfully transmitted or a negative error code on failure.
- */
-ssize_t mipi_dsi_dcs_write(struct mipi_dsi_device *dsi, u8 cmd,
- const void *data, size_t len)
-{
- struct mipi_dsi_msg msg;
- ssize_t err;
- size_t size;
-
- u8 buffer[MAX_DSI_HOST_FIFO_DEPTH + 4];
- u8 *tx = buffer;
-
- if (len > MAX_DSI_HOST_FIFO_DEPTH) {
- printk(BIOS_ERR, "%s: Error: too large payload length: %zu\n",
- __func__, len);
-
- return -EINVAL;
- }
-
- if (len > 0) {
- unsigned int offset = 0;
-
- /*
- * DCS long write packets contain the word count in the header
- * bytes 1 and 2 and have a payload containing the DCS command
- * byte folowed by word count minus one bytes.
- *
- * DCS short write packets encode the DCS command and up to
- * one parameter in header bytes 1 and 2.
- */
- if (len > 1)
- size = 3 + len;
- else
- size = 1 + len;
-
- /* write word count to header for DCS long write packets */
- if (len > 1) {
- tx[offset++] = ((1 + len) >> 0) & 0xff;
- tx[offset++] = ((1 + len) >> 8) & 0xff;
- }
-
- /* write the DCS command byte followed by the payload */
- tx[offset++] = cmd;
- memcpy(tx + offset, data, len);
- } else {
- tx = &cmd;
- size = 1;
- }
-
- memset(&msg, 0, sizeof(msg));
- msg.flags = MIPI_DSI_MSG_USE_LPM;
- msg.channel = dsi->channel;
- msg.tx_len = size;
- msg.tx_buf = tx;
-
- switch (len) {
- case 0:
- msg.type = MIPI_DSI_DCS_SHORT_WRITE;
- break;
- case 1:
- msg.type = MIPI_DSI_DCS_SHORT_WRITE_PARAM;
- break;
- default:
- msg.type = MIPI_DSI_DCS_LONG_WRITE;
- break;
- }
-
- err = dsi->host->ops->transfer(dsi->host, &msg);
-
- return err;
-}
-
-/**
- * mipi_dsi_dcs_exit_sleep_mode() - enable all blocks inside the display
- * module
- * @param dsi: DSI peripheral device
- *
- * @return 0 on success or a negative error code on failure.
- */
-int mipi_dsi_dcs_exit_sleep_mode(struct mipi_dsi_device *dsi)
-{
- ssize_t err;
-
- err = mipi_dsi_dcs_write(dsi, MIPI_DCS_EXIT_SLEEP_MODE, NULL, 0);
- if (err < 0)
- return err;
-
- return 0;
-}
-
-/**
- * mipi_dsi_dcs_set_display_on() - start displaying the image data on the
- * display device
- * @param dsi: DSI peripheral device
- *
- * @return 0 on success or a negative error code on failure
- */
-int mipi_dsi_dcs_set_display_on(struct mipi_dsi_device *dsi)
-{
- ssize_t err;
-
- err = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_DISPLAY_ON, NULL, 0);
- if (err < 0)
- return err;
-
- return 0;
-}
-
-/**
- * mipi_dsi_dcs_set_column_address() - define the column extent of the frame
- * memory accessed by the host processor
- * @param dsi: DSI peripheral device
- * @param start: first column of frame memory
- * @param end: last column of frame memory
- *
- * @return 0 on success or a negative error code on failure.
- */
-int mipi_dsi_dcs_set_column_address(struct mipi_dsi_device *dsi, u16 start,
- u16 end)
-{
- u8 payload[4] = { start >> 8, start & 0xff, end >> 8, end & 0xff };
- ssize_t err;
-
- err = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_COLUMN_ADDRESS, payload,
- sizeof(payload));
- if (err < 0)
- return err;
-
- return 0;
-}
-
-/**
- * mipi_dsi_dcs_set_page_address() - define the page extent of the frame
- * memory accessed by the host processor
- * @param dsi: DSI peripheral device
- * @param start: first page of frame memory
- * @param end: last page of frame memory
- *
- * @return: 0 on success or a negative error code on failure.
- */
-int mipi_dsi_dcs_set_page_address(struct mipi_dsi_device *dsi, u16 start,
- u16 end)
-{
- u8 payload[4] = { start >> 8, start & 0xff, end >> 8, end & 0xff };
- ssize_t err;
-
- err = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_PAGE_ADDRESS, payload,
- sizeof(payload));
- if (err < 0)
- return err;
-
- return 0;
-}
-
-/**
- * mipi_dsi_dcs_set_tear_on() - turn on the display module's Tearing Effect
- * output signal on the TE signal line.
- * @param dsi: DSI peripheral device
- * @param mode: the Tearing Effect Output Line mode
- *
- * @return 0 on success or a negative error code on failure
- */
-int mipi_dsi_dcs_set_tear_on(struct mipi_dsi_device *dsi,
- enum mipi_dsi_dcs_tear_mode mode)
-{
- u8 value = mode;
- ssize_t err;
-
- err = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_TEAR_ON, &value,
- sizeof(value));
- if (err < 0)
- return err;
-
- return 0;
-}
-
-/**
- * @brief mipi_dsi_dcs_set_pixel_format() - sets the pixel format for the RGB image
- * data used by the interface
- * @param dsi: DSI peripheral device
- * @param format: pixel format
- *
- * @return 0 on success or a negative error code on failure.
- */
-int mipi_dsi_dcs_set_pixel_format(struct mipi_dsi_device *dsi, u8 format)
-{
- ssize_t err;
-
- err = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_PIXEL_FORMAT, &format,
- sizeof(format));
- if (err < 0)
- return err;
-
- return 0;
-}
-
-/**
- * mipi_dsi_dcs_set_address_mode() - sets the data order for forward transfers
- * from the host to the peripheral
- * @param dsi: DSI peripheral device
- * @param reverse_page_address: reverses the page addressing to bottom->top
- * @param reverse_col_address: reverses the column addressing to right->left
- * @param reverse_page_col_address: reverses the page/column addressing order
- * @param refresh_from_bottom: refresh the display bottom to top
- * @param reverse_rgb: send pixel data bgr instead of rgb
- * @param latch_right_to_left: latch the incoming display data right to left
- * @param flip_horizontal: flip the image horizontally, left to right
- * @param flip_vertical: flip the image vertically, top to bottom
- *
- * @return 0 on success or a negative error code on failure.
- */
-int mipi_dsi_dcs_set_address_mode(struct mipi_dsi_device *dsi,
- bool reverse_page_address,
- bool reverse_col_address,
- bool reverse_page_col_address,
- bool refresh_from_bottom,
- bool reverse_rgb,
- bool latch_right_to_left,
- bool flip_horizontal,
- bool flip_vertical)
-{
- ssize_t err;
- u8 data;
-
- data = ((flip_vertical ? 1 : 0) << 0) |
- ((flip_horizontal ? 1 : 0) << 1) |
- ((latch_right_to_left ? 1 : 0) << 2) |
- ((reverse_rgb ? 1 : 0) << 3) |
- ((refresh_from_bottom ? 1 : 0) << 4) |
- ((reverse_page_col_address ? 1 : 0) << 5) |
- ((reverse_col_address ? 1 : 0) << 6) |
- ((reverse_page_address ? 1 : 0) << 7);
-
- err = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_ADDRESS_MODE, &data, 1);
- if (err < 0)
- return err;
-
- return 0;
-}