This is the David Smart RA8875 Library with mods for working with FRDM-K64F
Diff: RA8875.cpp
- Revision:
- 175:7be3a1fb7fc2
- Parent:
- 166:53fd4a876dac
- Child:
- 176:4ab96d33a8ec
diff -r f92c0f1f6db4 -r 7be3a1fb7fc2 RA8875.cpp --- a/RA8875.cpp Sat Mar 02 12:43:03 2019 +0000 +++ b/RA8875.cpp Fri Mar 15 01:39:39 2019 +0000 @@ -311,73 +311,73 @@ Reset(); // Set PLL based on display size from buy-display.com sample code if (width == 800) { - WriteCommand(0x88, 0x0C); // PLLC1 - Phase Lock Loop registers + WriteCommand(RA8875_PLLC1, 0x0C); // PLLC1 - Phase Lock Loop registers } else { - WriteCommand(0x88, 0x0B); // PLLC1 - Phase Lock Loop registers + WriteCommand(RA8875_PLLC1, 0x0B); // PLLC1 - Phase Lock Loop registers } wait_ms(1); - WriteCommand(0x89, 0x02); + WriteCommand(RA8875_PLLC2, 0x02); wait_ms(1); // System Config Register (SYSR) screenbpp = color_bpp; if (color_bpp == 16) { - WriteCommand(0x10, 0x0C); // 16-bpp (65K colors) color depth, 8-bit interface + WriteCommand(RA8875_SYSR, 0x0C); // 16-bpp (65K colors) color depth, 8-bit interface } else { // color_bpp == 8 - WriteCommand(0x10, 0x00); // 8-bpp (256 colors) + WriteCommand(RA8875_SYSR, 0x00); // 8-bpp (256 colors) } // Set Pixel Clock Setting Register (PCSR) based on display size from buy-display.com sample code if (width == 800) { - WriteCommand(0x04, 0x81); // PDAT on PCLK falling edge, PCLK = 4 x System Clock + WriteCommand(RA8875_PCSR, 0x81); // PDAT on PCLK falling edge, PCLK = 4 x System Clock wait_ms(1); // Horizontal Settings screenwidth = width; - WriteCommand(0x14, width/8 - 1); //HDWR//Horizontal Display Width Setting Bit[6:0] - WriteCommand(0x15, 0x00); //HNDFCR//Horizontal Non-Display Period fine tune Bit[3:0] - WriteCommand(0x16, 0x03); //HNDR//Horizontal Non-Display Period Bit[4:0] - WriteCommand(0x17, 0x03); //HSTR//HSYNC Start Position[4:0] - WriteCommand(0x18, 0x0B); //HPWR//HSYNC Polarity ,The period width of HSYNC. + WriteCommand(RA8875_HDWR, width/8 - 1); //HDWR//Horizontal Display Width Setting Bit[6:0] + WriteCommand(RA8875_HNDFTR, 0x00); //HNDFCR//Horizontal Non-Display Period fine tune Bit[3:0] + WriteCommand(RA8875_HNDR, 0x03); //HNDR//Horizontal Non-Display Period Bit[4:0] + WriteCommand(RA8875_HSTR, 0x03); //HSTR//HSYNC Start Position[4:0] + WriteCommand(RA8875_HPWR, 0x0B); //HPWR//HSYNC Polarity ,The period width of HSYNC. // Vertical Settings screenheight = height; - WriteCommand(0x19, (height-1)&0xFF); //VDHR0 //Vertical Display Height Bit [7:0] - WriteCommand(0x1a, (height-1)>>8); //VDHR1 //Vertical Display Height Bit [8] - WriteCommand(0x1b, 0x20); //VNDR0 //Vertical Non-Display Period Bit [7:0] - WriteCommand(0x1c, 0x00); //VNDR1 //Vertical Non-Display Period Bit [8] - WriteCommand(0x1d, 0x16); //VSTR0 //VSYNC Start Position[7:0] - WriteCommand(0x1e, 0x00); //VSTR1 //VSYNC Start Position[8] - WriteCommand(0x1f, 0x01); //VPWR //VSYNC Polarity ,VSYNC Pulse Width[6:0] + WriteCommand(RA8875_VDHR0, (height-1)&0xFF); //VDHR0 //Vertical Display Height Bit [7:0] + WriteCommand(RA8875_VDHR1, (height-1)>>8); //VDHR1 //Vertical Display Height Bit [8] + WriteCommand(RA8875_VNDR0, 0x20); //VNDR0 //Vertical Non-Display Period Bit [7:0] + WriteCommand(RA8875_VNDR1, 0x00); //VNDR1 //Vertical Non-Display Period Bit [8] + WriteCommand(RA8875_VSTR0, 0x16); //VSTR0 //VSYNC Start Position[7:0] + WriteCommand(RA8875_VSTR1, 0x00); //VSTR1 //VSYNC Start Position[8] + WriteCommand(RA8875_VPWR, 0x01); //VPWR //VSYNC Polarity ,VSYNC Pulse Width[6:0] } else { - WriteCommand(0x04, 0x82); // PDAT on PCLK falling edge, PCLK = 4 x System Clock + WriteCommand(RA8875_PCSR, 0x82); // PDAT on PCLK falling edge, PCLK = 4 x System Clock wait_ms(1); // Horizontal Settings screenwidth = width; - WriteCommand(0x14, width/8 - 1); //HDWR//Horizontal Display Width Setting Bit[6:0] - WriteCommand(0x15, 0x02); //HNDFCR//Horizontal Non-Display Period fine tune Bit[3:0] - WriteCommand(0x16, 0x03); //HNDR//Horizontal Non-Display Period Bit[4:0] - WriteCommand(0x17, 0x01); //HSTR//HSYNC Start Position[4:0] - WriteCommand(0x18, 0x03); //HPWR//HSYNC Polarity ,The period width of HSYNC. + WriteCommand(RA8875_HDWR, width/8 - 1); //HDWR//Horizontal Display Width Setting Bit[6:0] + WriteCommand(RA8875_HNDFTR, 0x02); //HNDFCR//Horizontal Non-Display Period fine tune Bit[3:0] + WriteCommand(RA8875_HNDR, 0x03); //HNDR//Horizontal Non-Display Period Bit[4:0] + WriteCommand(RA8875_HSTR, 0x01); //HSTR//HSYNC Start Position[4:0] + WriteCommand(RA8875_HPWR, 0x03); //HPWR//HSYNC Polarity ,The period width of HSYNC. // Vertical Settings screenheight = height; - WriteCommand(0x19, (height-1)&0xFF); //VDHR0 //Vertical Display Height Bit [7:0] - WriteCommand(0x1a, (height-1)>>8); //VDHR1 //Vertical Display Height Bit [8] - WriteCommand(0x1b, 0x0F); //VNDR0 //Vertical Non-Display Period Bit [7:0] - WriteCommand(0x1c, 0x00); //VNDR1 //Vertical Non-Display Period Bit [8] - WriteCommand(0x1d, 0x0e); //VSTR0 //VSYNC Start Position[7:0] - WriteCommand(0x1e, 0x06); //VSTR1 //VSYNC Start Position[8] - WriteCommand(0x1f, 0x01); //VPWR //VSYNC Polarity ,VSYNC Pulse Width[6:0] + WriteCommand(RA8875_VDHR0, (height-1)&0xFF); //VDHR0 //Vertical Display Height Bit [7:0] + WriteCommand(RA8875_VDHR1, (height-1)>>8); //VDHR1 //Vertical Display Height Bit [8] + WriteCommand(RA8875_VNDR0, 0x0F); //VNDR0 //Vertical Non-Display Period Bit [7:0] + WriteCommand(RA8875_VNDR1, 0x00); //VNDR1 //Vertical Non-Display Period Bit [8] + WriteCommand(RA8875_VSTR0, 0x0e); //VSTR0 //VSYNC Start Position[7:0] + WriteCommand(RA8875_VSTR1, 0x06); //VSTR1 //VSYNC Start Position[8] + WriteCommand(RA8875_VPWR, 0x01); //VPWR //VSYNC Polarity ,VSYNC Pulse Width[6:0] } portraitmode = false; if (width >= 800 && height >= 480 && color_bpp > 8) { - WriteCommand(0x20, 0x00); // DPCR - 1-layer mode when the resolution is too high + WriteCommand(RA8875_DPCR, 0x00); // DPCR - 1-layer mode when the resolution is too high } else { - WriteCommand(0x20, 0x80); // DPCR - 2-layer mode + WriteCommand(RA8875_DPCR, 0x80); // DPCR - 2-layer mode } // Set display image to Blue on Black as default @@ -415,10 +415,10 @@ res = 1; // de-assert reset } #endif - ret = WriteCommand(0x01, 0x01); // Apply Display Off, Reset + ret = WriteCommand(RA8875_PWRR, 0x01); // Apply Display Off, Reset wait_ms(2); // no idea if I need to wait, or how long if (ret == noerror) { - ret = WriteCommand(0x01, 0x00); // Display off, Remove reset + ret = WriteCommand(RA8875_PWRR, 0x00); // Display off, Remove reset wait_ms(2); // no idea if I need to wait, or how long } return ret; @@ -452,7 +452,7 @@ } else if (layer > 1) { layer = 0; } - return WriteCommand(0x41, mwcr1 | layer); + return WriteCommand(RA8875_MWCR1, mwcr1 | layer); } @@ -467,7 +467,7 @@ unsigned char ltpr0 = ReadCommand(0x52) & ~0x7; // retain all but the display layer mode if (mode <= (LayerMode_T)6) { - WriteCommand(0x52, ltpr0 | (mode & 0x7)); + WriteCommand(RA8875_LTPR0, ltpr0 | (mode & 0x7)); return noerror; } else { return bad_parameter; @@ -481,7 +481,7 @@ layer1 = 8; if (layer2 > 8) layer2 = 8; - WriteCommand(0x53, ((layer2 & 0xF) << 4) | (layer1 & 0xF)); + WriteCommand(RA8875_LTPR1, ((layer2 & 0xF) << 4) | (layer1 & 0xF)); return noerror; } @@ -514,17 +514,17 @@ value |= (longDetect) ? 0x40 : 0x00; value |= (sampleTime & 0x03) << 4; value |= (scanFrequency & 0x07); - WriteCommand(0xC0, value); // KSCR1 - Enable Key Scan (and ignore possibility of an error) + WriteCommand(RA8875_KSCR1, value); // KSCR1 - Enable Key Scan (and ignore possibility of an error) value = 0; value |= (wakeupEnable) ? 0x80 : 0x00; value |= (longTimeAdjustment & 0x03) << 2; - WriteCommand(0xC1, value); // KSCR2 - (and ignore possibility of an error) + WriteCommand(RA8875_KSCR2, value); // KSCR2 - (and ignore possibility of an error) value = ReadCommand(0xF0); // (and ignore possibility of an error) value &= ~0x10; value |= (interruptEnable) ? 0x10 : 0x00; - return WriteCommand(0xF0, value); // INT + return WriteCommand(RA8875_INTC1, value); // INT } @@ -615,7 +615,7 @@ printf(" count: %02X\r\n", count); printf(" key: %02X\r\n", key); #endif - WriteCommand(0xF1, 0x10); // Clear KS status + WriteCommand(RA8875_INTC2, 0x10); // Clear KS status return key; } @@ -1006,8 +1006,8 @@ INFO("SetTextCursor(%d, %d)", x, y); cursor_x = x; // set these values for non-internal fonts cursor_y = y; - WriteCommandW(0x2A, x); - WriteCommandW(0x2C, y); + WriteCommandW(RA8875_FCURXL, x); + WriteCommandW(RA8875_FCURYL, y); return noerror; } @@ -1058,9 +1058,9 @@ mwcr0 |= 0x40; // visible if (blink) mwcr0 |= 0x20; // blink - WriteCommand(0x40, mwcr0); // configure the cursor - WriteCommand(0x41, mwcr1); // close the graphics cursor - WriteCommand(0x44, 0x1f); // The cursor flashing cycle + WriteCommand(RA8875_MWCR0, mwcr0); // configure the cursor + WriteCommand(RA8875_MWCR1, mwcr1); // close the graphics cursor + WriteCommand(RA8875_BTCR, 0x1f); // The cursor flashing cycle switch (cursor) { case IBEAM: horz = 0x01; @@ -1078,8 +1078,8 @@ default: break; } - WriteCommand(0x4e, horz); // The cursor size horz - WriteCommand(0x4f, vert); // The cursor size vert + WriteCommand(RA8875_CURHS, horz); // The cursor size horz + WriteCommand(RA8875_CURVS, vert); // The cursor size vert return noerror; } @@ -1087,7 +1087,7 @@ RetCode_t RA8875::SetTextFont(RA8875::font_t font) { if (/*font >= RA8875::ISO8859_1 && */ font <= RA8875::ISO8859_4) { - WriteCommand(0x21, (unsigned int)(font)); + WriteCommand(RA8875_FNCR0, (unsigned int)(font)); return noerror; } else { return bad_parameter; @@ -1127,8 +1127,8 @@ return bad_parameter; } INFO("Orientation: %d, %d", angle, portraitmode); - WriteCommand(0x22, fncr1Val); - return WriteCommand(0x20, dpcrVal); + WriteCommand(RA8875_FNCR1, fncr1Val); + return WriteCommand(RA8875_DPCR, dpcrVal); } @@ -1148,7 +1148,7 @@ fncr1Val |= 0x40; fncr1Val |= ((hScale - 1) << 2); fncr1Val |= ((vScale - 1) << 0); - return WriteCommand(0x22, fncr1Val); + return WriteCommand(RA8875_FNCR1, fncr1Val); } else { return bad_parameter; } @@ -1167,7 +1167,7 @@ reg &= 0xF0; // keep the high nibble as is. reg |= ((hScale - 1) << 2); reg |= ((vScale - 1) << 0); - WriteCommand(0x22, reg); + WriteCommand(RA8875_FNCR1, reg); return noerror; } else { return bad_parameter; @@ -1243,21 +1243,21 @@ mwcr0 = ReadCommand(0x40); if ((mwcr0 & 0x80) == 0x00) { - WriteCommand(0x40, 0x80 | mwcr0); // Put in Text mode if not already + WriteCommand(RA8875_MWCR0, 0x80 | mwcr0); // Put in Text mode if not already } if (c == '\r') { loc_t x; x = ReadCommand(0x30) | (ReadCommand(0x31) << 8); // Left edge of active window - WriteCommandW(0x2A, x); + WriteCommandW(RA8875_FCURXL, x); } else if (c == '\n') { loc_t y; y = ReadCommand(0x2C) | (ReadCommand(0x2D) << 8); // current y location y += fontheight(); if (y >= height()) // @TODO after bottom of active window, then scroll window? y = 0; - WriteCommandW(0x2C, y); + WriteCommandW(RA8875_FCURYL, y); } else { - WriteCommand(0x02); // RA8875 Internal Fonts + WriteCommand(RA8875_MRWC); // RA8875 Internal Fonts _select(true); WriteData(c); _WaitWhileBusy(0x80); @@ -1270,8 +1270,8 @@ RetCode_t RA8875::_StartGraphicsStream(void) { - WriteCommand(0x40,0x00); // Graphics write mode - WriteCommand(0x02); // Prepare for streaming data + WriteCommand(RA8875_MWCR0,0x00); // Graphics write mode + WriteCommand(RA8875_MRWC); // Prepare for streaming data return noerror; } @@ -1299,7 +1299,7 @@ void RA8875::puts(const char * string) { if (font == NULL) { - WriteCommand(0x40,0x80); // Put in Text mode if internal font + WriteCommand(RA8875_MWCR0,0x80); // Put in Text mode if internal font } if (*string != '\0') { while (*string) { // @TODO calling individual _putc is slower... optimizations? @@ -1311,8 +1311,8 @@ RetCode_t RA8875::SetGraphicsCursor(loc_t x, loc_t y) { - WriteCommandW(0x46, x); - WriteCommandW(0x48, y); + WriteCommandW(RA8875_CURH0, x); + WriteCommandW(RA8875_CURV0, y); return noerror; } @@ -1332,8 +1332,8 @@ RetCode_t RA8875::SetGraphicsCursorRead(loc_t x, loc_t y) { - WriteCommandW(0x4A, x); - WriteCommandW(0x4C, y); + WriteCommandW(RA8875_RCURH0, x); + WriteCommandW(RA8875_RCURV0, y); return noerror; } @@ -1354,10 +1354,10 @@ windowrect.p2.x = x + width - 1; windowrect.p2.y = y + height - 1; GraphicsDisplay::window(x,y, width,height); - WriteCommandW(0x30, x); - WriteCommandW(0x32, y); - WriteCommandW(0x34, (x+width-1)); - WriteCommandW(0x36, (y+height-1)); + WriteCommandW(RA8875_HSAW0, x); + WriteCommandW(RA8875_VSAW0, y); + WriteCommandW(RA8875_HEAW0, (x+width-1)); + WriteCommandW(RA8875_VEAW0, (y+height-1)); //SetTextCursor(x,y); //SetGraphicsCursor(x,y); return noerror; @@ -1395,7 +1395,7 @@ RetCode_t RA8875::clsw(RA8875::Region_t region) { PERFORMANCE_RESET; - WriteCommand(0x8E, (region == ACTIVEWINDOW) ? 0xC0 : 0x80); + WriteCommand(RA8875_MCLR, (region == ACTIVEWINDOW) ? 0xC0 : 0x80); if (!_WaitWhileReg(0x8E, 0x80)) { REGISTERPERFORMANCE(PRF_CLS); return external_abort; @@ -1515,9 +1515,9 @@ color_t pixel; PERFORMANCE_RESET; - WriteCommand(0x40,0x00); // Graphics write mode + WriteCommand(RA8875_MWCR0,0x00); // Graphics write mode SetGraphicsCursorRead(x, y); - WriteCommand(0x02); + WriteCommand(RA8875_MRWC); _select(true); _spiwrite(0x40); // Cmd: read data _spiwrite(0x00); // dummy read @@ -1539,9 +1539,9 @@ RetCode_t ret = noerror; PERFORMANCE_RESET; - ret = WriteCommand(0x40,0x00); // Graphics write mode + ret = WriteCommand(RA8875_MWCR0,0x00); // Graphics write mode ret = SetGraphicsCursorRead(x, y); - ret = WriteCommand(0x02); + ret = WriteCommand(RA8875_MRWC); _select(true); _spiwrite(0x40); // Cmd: read data _spiwrite(0x00); // dummy read @@ -1587,13 +1587,13 @@ if (x1 == x2 && y1 == y2) { pixel(x1, y1); } else { - WriteCommandW(0x91, x1); - WriteCommandW(0x93, y1); - WriteCommandW(0x95, x2); - WriteCommandW(0x97, y2); + WriteCommandW(RA8875_DLHSR0, x1); + WriteCommandW(RA8875_DLVSR0, y1); + WriteCommandW(RA8875_DLHER0, x2); + WriteCommandW(RA8875_DLVER0, y2); unsigned char drawCmd = 0x00; // Line - WriteCommand(0x90, drawCmd); - WriteCommand(0x90, 0x80 + drawCmd); // Start drawing. + WriteCommand(RA8875_DCR, drawCmd); + WriteCommand(RA8875_DCR, 0x80 + drawCmd); // Start drawing. if (!_WaitWhileReg(0x90, 0x80)) { REGISTERPERFORMANCE(PRF_DRAWLINE); return external_abort; @@ -1672,15 +1672,15 @@ } else if (y1 == y2) { line(x1, y1, x2, y2); } else { - WriteCommandW(0x91, x1); - WriteCommandW(0x93, y1); - WriteCommandW(0x95, x2); - WriteCommandW(0x97, y2); + WriteCommandW(RA8875_DLHSR0, x1); + WriteCommandW(RA8875_DLVSR0, y1); + WriteCommandW(RA8875_DLHER0, x2); + WriteCommandW(RA8875_DLVER0, y2); unsigned char drawCmd = 0x10; // Rectangle if (fillit == FILL) drawCmd |= 0x20; - WriteCommand(0x90, drawCmd); - ret = WriteCommand(0x90, 0x80 + drawCmd); // Start drawing. + WriteCommand(RA8875_DCR, drawCmd); + ret = WriteCommand(RA8875_DCR, 0x80 + drawCmd); // Start drawing. if (!_WaitWhileReg(0x90, 0x80)) { REGISTERPERFORMANCE(PRF_DRAWRECTANGLE); return external_abort; @@ -1739,20 +1739,20 @@ } else if (y1 == y2) { line(x1, y1, x2, y2); } else { - WriteCommandW(0x91, x1); - WriteCommandW(0x93, y1); - WriteCommandW(0x95, x2); - WriteCommandW(0x97, y2); - WriteCommandW(0xA1, radius1); - WriteCommandW(0xA3, radius2); + WriteCommandW(RA8875_DLHSR0, x1); + WriteCommandW(RA8875_DLVSR0, y1); + WriteCommandW(RA8875_DLHER0, x2); + WriteCommandW(RA8875_DLVER0, y2); + WriteCommandW(RA8875_ELLA0, radius1); + WriteCommandW(RA8875_ELLB0, radius2); // Should not need this... - WriteCommandW(0xA5, 0); - WriteCommandW(0xA7, 0); + WriteCommandW(RA8875_DEHR0, 0); + WriteCommandW(RA8875_DEVR0, 0); unsigned char drawCmd = 0x20; // Rounded Rectangle if (fillit == FILL) drawCmd |= 0x40; - WriteCommand(0xA0, drawCmd); - WriteCommand(0xA0, 0x80 + drawCmd); // Start drawing. + WriteCommand(RA8875_ELLIPSE, drawCmd); + WriteCommand(RA8875_ELLIPSE, 0x80 + drawCmd); // Start drawing. if (!_WaitWhileReg(0xA0, 0x80)) { REGISTERPERFORMANCE(PRF_DRAWROUNDEDRECTANGLE); return external_abort; @@ -1801,17 +1801,17 @@ if (x1 == x2 && y1 == y2 && x1 == x3 && y1 == y3) { pixel(x1, y1); } else { - WriteCommandW(0x91, x1); - WriteCommandW(0x93, y1); - WriteCommandW(0x95, x2); - WriteCommandW(0x97, y2); - WriteCommandW(0xA9, x3); - WriteCommandW(0xAB, y3); + WriteCommandW(RA8875_DLHSR0, x1); + WriteCommandW(RA8875_DLVSR0, y1); + WriteCommandW(RA8875_DLHER0, x2); + WriteCommandW(RA8875_DLVER0, y2); + WriteCommandW(RA8875_DTPH0, x3); + WriteCommandW(RA8875_DTPV0, y3); unsigned char drawCmd = 0x01; // Triangle if (fillit == FILL) drawCmd |= 0x20; - WriteCommand(0x90, drawCmd); - WriteCommand(0x90, 0x80 + drawCmd); // Start drawing. + WriteCommand(RA8875_DCR, drawCmd); + WriteCommand(RA8875_DCR, 0x80 + drawCmd); // Start drawing. if (!_WaitWhileReg(0x90, 0x80)) { REGISTERPERFORMANCE(PRF_DRAWTRIANGLE); return external_abort; @@ -1871,14 +1871,14 @@ } else if (radius == 1) { pixel(x,y); } else { - WriteCommandW(0x99, x); - WriteCommandW(0x9B, y); - WriteCommand(0x9d, radius & 0xFF); + WriteCommandW(RA8875_DCHR0, x); + WriteCommandW(RA8875_DCVR0, y); + WriteCommand(RA8875_DCRR, radius & 0xFF); unsigned char drawCmd = 0x00; // Circle if (fillit == FILL) drawCmd |= 0x20; - WriteCommand(0x90, drawCmd); - WriteCommand(0x90, 0x40 + drawCmd); // Start drawing. + WriteCommand(RA8875_DCR, drawCmd); + WriteCommand(RA8875_DCR, 0x40 + drawCmd); // Start drawing. if (!_WaitWhileReg(0x90, 0x40)) { REGISTERPERFORMANCE(PRF_DRAWCIRCLE); return external_abort; @@ -1914,15 +1914,15 @@ } else if (radius1 == 1 && radius2 == 1) { pixel(x, y); } else { - WriteCommandW(0xA5, x); - WriteCommandW(0xA7, y); - WriteCommandW(0xA1, radius1); - WriteCommandW(0xA3, radius2); + WriteCommandW(RA8875_DEHR0, x); + WriteCommandW(RA8875_DEVR0, y); + WriteCommandW(RA8875_ELLA0, radius1); + WriteCommandW(RA8875_ELLB0, radius2); unsigned char drawCmd = 0x00; // Ellipse if (fillit == FILL) drawCmd |= 0x40; - WriteCommand(0xA0, drawCmd); - WriteCommand(0xA0, 0x80 + drawCmd); // Start drawing. + WriteCommand(RA8875_ELLIPSE, drawCmd); + WriteCommand(RA8875_ELLIPSE, 0x80 + drawCmd); // Start drawing. if (!_WaitWhileReg(0xA0, 0x80)) { REGISTERPERFORMANCE(PRF_DRAWELLIPSE); return external_abort; @@ -1975,15 +1975,15 @@ srcPoint.y &= 0x1FF; dstPoint.x &= 0x3FF; dstPoint.y &= 0x1FF; - WriteCommandW(0x54, srcPoint.x); - WriteCommandW(0x56, ((dim_t)(srcLayer & 1) << 15) | srcPoint.y); - WriteCommandW(0x58, dstPoint.x); - WriteCommandW(0x5A, ((dim_t)(dstLayer & 1) << 15) | dstPoint.y); - WriteCommandW(0x5C, bte_width); - WriteCommandW(0x5E, bte_height); - WriteCommand(0x51, ((bte_rop_code & 0x0F) << 4) | (bte_op_code & 0x0F)); + WriteCommandW(RA8875_HSBE0, srcPoint.x); + WriteCommandW(RA8875_VSBE0, ((dim_t)(srcLayer & 1) << 15) | srcPoint.y); + WriteCommandW(RA8875_HDBE0, dstPoint.x); + WriteCommandW(RA8875_VDBE0, ((dim_t)(dstLayer & 1) << 15) | dstPoint.y); + WriteCommandW(RA8875_BEWR0, bte_width); + WriteCommandW(RA8875_BEHR0, bte_height); + WriteCommand(RA8875_BECR1, ((bte_rop_code & 0x0F) << 4) | (bte_op_code & 0x0F)); cmd = ((srcDataSelect & 1) << 6) | ((dstDataSelect & 1) << 5); - WriteCommand(0x50, 0x80 | cmd); // enable the BTE + WriteCommand(RA8875_BECR0, 0x80 | cmd); // enable the BTE if (!_WaitWhileBusy(0x40)) { REGISTERPERFORMANCE(PRF_BLOCKMOVE); return external_abort; @@ -1995,7 +1995,7 @@ RetCode_t RA8875::Power(bool on) { - WriteCommand(0x01, (on) ? 0x80 : 0x00); + WriteCommand(RA8875_PWRR, (on) ? 0x80 : 0x00); return noerror; } @@ -2005,17 +2005,17 @@ static bool is_enabled = false; if (brightness == 0) { - WriteCommand(0x8a); // Disable the PWM + WriteCommand(RA8875_P1CR); // Disable the PWM WriteData(0x00); is_enabled = false; } else if (!is_enabled) { - WriteCommand(0x8a); // Enable the PWM + WriteCommand(RA8875_P1CR); // Enable the PWM WriteData(0x80); - WriteCommand(0x8a); // Not sure why this is needed, but following the pattern + WriteCommand(RA8875_P1CR); // Not sure why this is needed, but following the pattern WriteData(0x81); // open PWM (SYS_CLK / 2 as best I can tell) is_enabled = true; } - WriteCommand(0x8b, brightness); // Brightness parameter 0xff-0x00 + WriteCommand(RA8875_P1DCR, brightness); // Brightness parameter 0xff-0x00 return noerror; }