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)
|
- 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 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
|
||||||
- Removed `digest::Digest` implementation from SHA (#2049)
|
- 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()
|
.lcd_user()
|
||||||
.modify(|_, w| w.lcd_dout().clear_bit());
|
.modify(|_, w| w.lcd_dout().clear_bit());
|
||||||
} else {
|
} else {
|
||||||
// Set transfer length.
|
// Use continous mode for DMA. FROM the S3 TRM:
|
||||||
self.lcd_cam.lcd_user().modify(|_, w| unsafe {
|
// > In a continuous output, LCD module keeps sending data till:
|
||||||
if len <= 8192 {
|
// > i. LCD_CAM_LCD_START is cleared;
|
||||||
// Data length in fixed mode. (13 bits)
|
// > ii. or LCD_CAM_LCD_RESET is set;
|
||||||
w.lcd_always_out_en()
|
// > iii. or all the data in GDMA is sent out.
|
||||||
.clear_bit()
|
self.lcd_cam
|
||||||
.lcd_dout_cyclelen()
|
.lcd_user()
|
||||||
.bits((len - 1) as _)
|
.modify(|_, w| w.lcd_always_out_en().set_bit().lcd_dout().set_bit());
|
||||||
} else {
|
|
||||||
// Enable continuous output.
|
|
||||||
w.lcd_always_out_en().set_bit()
|
|
||||||
}
|
|
||||||
.lcd_dout()
|
|
||||||
.set_bit()
|
|
||||||
});
|
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
self.tx_chain.fill_for_tx(false, ptr, len)?;
|
self.tx_chain.fill_for_tx(false, ptr, len)?;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user