diff options
| -rwxr-xr-x | firmware/drivers/lcd.S | 13 | ||||
| -rw-r--r-- | firmware/export/lcd.h | 2 |
2 files changed, 12 insertions, 3 deletions
diff --git a/firmware/drivers/lcd.S b/firmware/drivers/lcd.S index c082637..1d301e2 100755 --- a/firmware/drivers/lcd.S +++ b/firmware/drivers/lcd.S @@ -333,11 +333,20 @@ lcd_write_command_ex: and.l %d1,(0xb4,%a1) move.w %d0,0xf0000000 /* Write to LCD */ - move.l (8,%sp),%d0 /* Data */ - not.l %d1 /* Set A0 = 1 */ or.l %d1,(0xb4,%a1) + + move.l (8,%sp),%d0 /* Data */ + cmp.l #0xffffffff,%d0 /* -1? */ + beq.b .last move.w %d0,0xf0000000 /* Write to LCD */ + + move.l (12,%sp),%d0 /* Data */ + cmp.l #0xffffffff,%d0 /* -1? */ + beq.b .last + move.w %d0,0xf0000000 /* Write to LCD */ + +.last: rts .align 2 diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h index 6809aaf..6d485c2 100644 --- a/firmware/export/lcd.h +++ b/firmware/export/lcd.h @@ -44,7 +44,7 @@ extern void lcd_scroll_speed( int speed ); extern void lcd_scroll_delay( int ms ); extern void lcd_set_contrast(int val); extern void lcd_write_command( int byte ); -extern void lcd_write_command_ex( int cmd, unsigned char data ); +extern void lcd_write_command_ex( int cmd, int data1, int data2); extern void lcd_write_data( const unsigned char* p_bytes, int count ); extern int lcd_default_contrast(void); |