Landfall

pkg/devices/lcd/include/lcd-jz4740-device.h

142:a9f3e40e79ee
17 months ago Paul Boddie Incorporated API changes made to the L4Re distribution since Subversion r83. l4re-git-distribution
     1 /*     2  * LCD device support for the JZ4740 and related SoCs.     3  *     4  * Copyright (C) 2018, 2023 Paul Boddie <paul@boddie.org.uk>     5  *     6  * This program is free software; you can redistribute it and/or     7  * modify it under the terms of the GNU General Public License as     8  * published by the Free Software Foundation; either version 2 of     9  * the License, or (at your option) any later version.    10  *    11  * This program is distributed in the hope that it will be useful,    12  * but WITHOUT ANY WARRANTY; without even the implied warranty of    13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    14  * GNU General Public License for more details.    15  *    16  * You should have received a copy of the GNU General Public License    17  * along with this program; if not, write to the Free Software    18  * Foundation, Inc., 51 Franklin Street, Fifth Floor,    19  * Boston, MA  02110-1301, USA    20  */    21     22 #pragma once    23     24 #include <l4/devices/lcd.h>    25     26 #include "lcd-device.h"    27     28 #include <l4/re/dma_space>    29 #include <l4/re/c/video/view.h>    30 #include <l4/sys/types.h>    31     32 /* C++ language interface. */    33     34 #ifdef __cplusplus    35     36 /* Support for specific JZ4740-based devices. */    37     38 class Lcd_jz4740_device : public Lcd_device    39 {    40   /* DMA descriptor virtual and physical addresses. */    41     42   l4_addr_t desc_vaddr;    43   L4Re::Dma_space::Dma_addr desc_paddr;    44     45 protected:    46   /* Device-specific memory allocation. */    47     48   int _setup_memory();    49     50 public:    51   /* Inherit constructor. */    52     53   Lcd_jz4740_device(Lcd_chip *chip, L4::Cap<Display_device_interface> display)    54   : Lcd_device(chip, display)    55   {    56     _setup_memory();    57   }    58     59   /* Device operations. */    60     61   void disable();    62   void enable();    63     64   l4_size_t get_framebuffer_size()    65   {    66     return static_cast<Lcd_jz4740_chip *>(_chip)->get_screen_size();    67   }    68     69   void get_view_info(l4re_video_view_info_t *view_info);    70     71   /* Common device instance. */    72     73   static Lcd_jz4740_device *device;    74 };    75     76 #endif