mirror of
https://github.com/esp-rs/esp-hal.git
synced 2025-09-30 05:40:39 +00:00
lcd_cam: fix wrong buffer length used if 16bit and len<=8192 (#2085)
* lcd_cam: fix wrong buffer length used if 16bit and len<=8192 * changelog
This commit is contained in:
parent
4d9ea52eae
commit
a2af2ac65e
@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- SHA driver can now be safely used in multiple contexts concurrently (#2049)
|
||||
|
||||
- Fixed an issue with DMA transfers potentially not waking up the correct async task (#2065)
|
||||
- Fixed an issue with LCD_CAM i8080 where it would send double the clocks in 16bit mode (#2085)
|
||||
|
||||
### Removed
|
||||
- Removed `digest::Digest` implementation from SHA (#2049)
|
||||
|
@ -488,21 +488,14 @@ impl<'d, CH: DmaChannel, P, DM: Mode> I8080<'d, CH, P, DM> {
|
||||
.lcd_user()
|
||||
.modify(|_, w| w.lcd_dout().clear_bit());
|
||||
} else {
|
||||
// Set transfer length.
|
||||
self.lcd_cam.lcd_user().modify(|_, w| unsafe {
|
||||
if len <= 8192 {
|
||||
// Data length in fixed mode. (13 bits)
|
||||
w.lcd_always_out_en()
|
||||
.clear_bit()
|
||||
.lcd_dout_cyclelen()
|
||||
.bits((len - 1) as _)
|
||||
} else {
|
||||
// Enable continuous output.
|
||||
w.lcd_always_out_en().set_bit()
|
||||
}
|
||||
.lcd_dout()
|
||||
.set_bit()
|
||||
});
|
||||
// Use continous mode for DMA. FROM the S3 TRM:
|
||||
// > In a continuous output, LCD module keeps sending data till:
|
||||
// > i. LCD_CAM_LCD_START is cleared;
|
||||
// > ii. or LCD_CAM_LCD_RESET is set;
|
||||
// > iii. or all the data in GDMA is sent out.
|
||||
self.lcd_cam
|
||||
.lcd_user()
|
||||
.modify(|_, w| w.lcd_always_out_en().set_bit().lcd_dout().set_bit());
|
||||
|
||||
unsafe {
|
||||
self.tx_chain.fill_for_tx(false, ptr, len)?;
|
||||
|
Loading…
x
Reference in New Issue
Block a user