Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions esp-hal/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed

- 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

Expand Down
23 changes: 8 additions & 15 deletions esp-hal/src/lcd_cam/lcd/i8080.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)?;
Expand Down