From fe6aa21e9eb88f49005863efd2003d0982920048 Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Mon, 3 Oct 2022 10:17:41 +0100 Subject: Remove YUV blitting functions and LCD modes None of this is needed now that mpegplayer is gone. Change-Id: I360366db8513e4d988021e8d7b7d8eb09930efb8 --- .../target/arm/philips/hdd6330/lcd-as-hdd6330.S | 140 --------------------- firmware/target/arm/philips/hdd6330/lcd-hdd6330.c | 98 --------------- 2 files changed, 238 deletions(-) delete mode 100644 firmware/target/arm/philips/hdd6330/lcd-as-hdd6330.S (limited to 'firmware/target/arm/philips/hdd6330') diff --git a/firmware/target/arm/philips/hdd6330/lcd-as-hdd6330.S b/firmware/target/arm/philips/hdd6330/lcd-as-hdd6330.S deleted file mode 100644 index c3a7992a2e..0000000000 --- a/firmware/target/arm/philips/hdd6330/lcd-as-hdd6330.S +++ /dev/null @@ -1,140 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id:$ - * - * Copyright (C) 2010 by Szymon Dziok - * - * Philips Gogear HDD6330 LCD assembly routine - * - * 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; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#include "config.h" -#include "cpu.h" - -/**************************************************************************** - void lcd_yuv_write_inner_loop(unsigned char const * const ysrc, - unsigned char const * const usrc, - unsigned char const * const vsrc, - int width); -*/ - .section .icode, "ax", %progbits - .align 2 - .global lcd_yuv_write_inner_loop - .type lcd_yuv_write_inner_loop, %function -lcd_yuv_write_inner_loop: - @ r0 = ysrc - @ r1 = usrc - @ r2 = vsrc - @ r3 = width - stmfd sp!, { r4-r11, lr } @ save regs - mov r4, #0x70000000 @ r4 = LCD2_BLOCK_CTRL - 0x20 - add r4, r4, #0x8a00 @ - add r5, r4, #0x100 @ r5 = LCD2_BLOCK_DATA -10: @ loop - - ldrb r7, [r1], #1 @ *usrc++ - ldrb r8, [r2], #1 @ *vsrc++ - - sub r7, r7, #128 @ Cb -= 128 - sub r8, r8, #128 @ Cr -= 128 - - add r10, r8, r8, asl #2 @ Cr*101 - add r10, r10, r8, asl #5 - add r10, r10, r8, asl #6 - - add r11, r8, r8, asl #1 @ Cr*51 + Cb*24 - add r11, r11, r11, asl #4 - add r11, r11, r7, asl #3 - add r11, r11, r7, asl #4 - - add r12, r7, #2 @ r12 = bu = (Cb*128 + 256) >> 9 - mov r12, r12, asr #2 - add r10, r10, #256 @ r10 = rv = (Cr*101 + 256) >> 9 - mov r10, r10, asr #9 - rsb r11, r11, #128 @ r11 = guv = (-r11 + 128) >> 8 - mov r11, r11, asr #8 - -@ pixel_1 - ldrb r7, [r0], #1 @ *ysrc++ - sub r7, r7, #16 @ Y = (Y' - 16) * 37 - add r8, r7, r7, asl #2 - add r7, r8, r7, asl #5 - - add r9, r10, r7, asr #8 @ R = (Y >> 8) + rv - add r8, r11, r7, asr #7 @ G = (Y >> 7) + guv - add r7, r12, r7, asr #8 @ B = (Y >> 8) + bu - - cmp r9, #31 @ clamp R - mvnhi r9, r9, asr #31 - andhi r9, r9, #31 - - cmp r8, #63 @ clamp G - mvnhi r8, r8, asr #31 - andhi r8, r8, #63 - - cmp r7, #31 @ clamp B - mvnhi r7, r7, asr #31 - andhi r7, r7, #31 - - orr r6, r7, r8, lsl #5 @ pack pixel - orr r6, r6, r9, lsl #11 - - mov r7, r6, lsl #8 @ swap bytes - and r7, r7, #0xff00 - add r6, r7, r6, lsr #8 - -@ pixel_2 - ldrb r7, [r0], #1 @ *ysrc++ - sub r7, r7, #16 @ Y = (Y' - 16) * 37 - add r8, r7, r7, asl #2 - add r7, r8, r7, asl #5 - - add r9, r10, r7, asr #8 @ R = (Y >> 8) + rv - add r8, r11, r7, asr #7 @ G = (Y >> 7) + guv - add r7, r12, r7, asr #8 @ B = (Y >> 8) + bu - - cmp r9, #31 @ clamp R - mvnhi r9, r9, asr #31 - andhi r9, r9, #31 - - cmp r8, #63 @ clamp G - mvnhi r8, r8, asr #31 - andhi r8, r8, #63 - - cmp r7, #31 @ clamp B - mvnhi r7, r7, asr #31 - andhi r7, r7, #31 - - orr r7, r7, r8, lsl #5 @ pack pixel - orr r7, r7, r9, lsl #11 - - orr r6, r6, r7, lsl #24 @ swap bytes and add pixels simultaneously - mov r7, r7, lsr #8 - orr r6, r6, r7, lsl #16 - -11: @ while (!(LCD2_BLOCK_CTRL & LCD2_BLOCK_TXOK)); - ldr r11, [r4, #0x20] @ - tst r11, #0x1000000 @ - beq 11b @ - - str r6, [r5] @ send two pixels - - subs r3, r3, #2 @ decrease width - bgt 10b @ loop - - ldmpc regs=r4-r11 @ restore regs - .ltorg @ dump constant pool - .size lcd_yuv_write_inner_loop, .-lcd_yuv_write_inner_loop diff --git a/firmware/target/arm/philips/hdd6330/lcd-hdd6330.c b/firmware/target/arm/philips/hdd6330/lcd-hdd6330.c index cdd3064bba..9d2fdc8519 100644 --- a/firmware/target/arm/philips/hdd6330/lcd-hdd6330.c +++ b/firmware/target/arm/philips/hdd6330/lcd-hdd6330.c @@ -37,9 +37,6 @@ /* whether the lcd is currently enabled or not */ static bool lcd_enabled; -/* Display status */ -static unsigned lcd_yuv_options SHAREDBSS_ATTR = 0; - /* Value used for flipping. Must be remembered when display is turned off. */ static unsigned short flip; @@ -147,101 +144,6 @@ void lcd_set_flip(bool yesno) lcd_send_data(0x08 | flip); } -void lcd_yuv_set_options(unsigned options) -{ - lcd_yuv_options = options; -} - -#define CSUB_X 2 -#define CSUB_Y 2 - -/* YUV- > RGB565 conversion - * |R| |1.000000 -0.000001 1.402000| |Y'| - * |G| = |1.000000 -0.334136 -0.714136| |Pb| - * |B| |1.000000 1.772000 0.000000| |Pr| - * Scaled, normalized, rounded and tweaked to yield RGB 565: - * |R| |74 0 101| |Y' - 16| >> 9 - * |G| = |74 -24 -51| |Cb - 128| >> 8 - * |B| |74 128 0| |Cr - 128| >> 9 -*/ - -extern void lcd_yuv_write_inner_loop(unsigned char const * const ysrc, - unsigned char const * const usrc, - unsigned char const * const vsrc, - int width); - -/* Performance function to blit a YUV bitmap directly to the LCD */ -void lcd_blit_yuv(unsigned char * const src[3], - int src_x, int src_y, int stride, - int x, int y, int width, int height) -{ - int h; - - width = (width + 1) & ~1; - - lcd_send_reg(LCD_REG_HORIZ_ADDR_START); - lcd_send_data(y); - - lcd_send_reg(LCD_REG_HORIZ_ADDR_END); - lcd_send_data(y + height - 1); - - lcd_send_reg(LCD_REG_VERT_ADDR_START); - lcd_send_data(x + x_offset); - - lcd_send_reg(LCD_REG_VERT_ADDR_END); - lcd_send_data(x + width - 1 + x_offset); - - lcd_send_reg(LCD_REG_WRITE_DATA_2_GRAM); - - const int stride_div_csub_x = stride/CSUB_X; - - h=0; - while (1) - { - /* upsampling, YUV->RGB conversion and reduction to RGB565 in one go */ - const unsigned char *ysrc = src[0] + stride * src_y + src_x; - - const int uvoffset = stride_div_csub_x * (src_y/CSUB_Y) + - (src_x/CSUB_X); - - const unsigned char *usrc = src[1] + uvoffset; - const unsigned char *vsrc = src[2] + uvoffset; - - int pixels_to_write; - - if (h==0) - { - while (!(LCD2_BLOCK_CTRL & LCD2_BLOCK_READY)); - LCD2_BLOCK_CONFIG = 0; - - if (height == 0) break; - - pixels_to_write = (width * height) * 2; - h = height; - - /* calculate how much we can do in one go */ - if (pixels_to_write > 0x10000) - { - h = (0x10000/2) / width; - pixels_to_write = (width * h) * 2; - } - - height -= h; - LCD2_BLOCK_CTRL = 0x10000080; - LCD2_BLOCK_CONFIG = 0xc0010000 | (pixels_to_write - 1); - LCD2_BLOCK_CTRL = 0x34000000; - } - - lcd_yuv_write_inner_loop(ysrc,usrc,vsrc,width); - - src_y++; - h--; - } - - while (!(LCD2_BLOCK_CTRL & LCD2_BLOCK_READY)); - LCD2_BLOCK_CONFIG = 0; -} - /* Update the display. This must be called after all other LCD functions that change the display. */ void lcd_update(void) -- cgit v1.2.3