genesys: Move gamma address reset to scanner interface on gl843

merge-requests/340/head
Povilas Kanapickas 2020-02-16 10:41:24 +02:00
rodzic 9eb13d5a10
commit dcfa45c5cd
2 zmienionych plików z 8 dodań i 14 usunięć

Wyświetl plik

@ -54,15 +54,6 @@
namespace genesys {
namespace gl843 {
// Set address for writing data
static void gl843_set_buffer_address(Genesys_Device* dev, uint32_t addr)
{
DBG_HELPER_ARGS(dbg, "setting address to 0x%05x", addr & 0xffff);
dev->interface->write_register(0x5b, ((addr >> 8) & 0xff));
dev->interface->write_register(0x5c, (addr & 0xff));
}
/**
* compute the step multiplier used
*/
@ -700,9 +691,6 @@ static void gl843_send_slope_table(Genesys_Device* dev, int table_nr,
// XXX STEF XXX USB 1.1 ? sanei_genesys_write_0x8c (dev, 0x0f, 0x14);
dev->interface->write_gamma(0x28, 0x40000 + 0x8000 * table_nr, table.data(), steps * 2,
ScannerInterface::FLAG_SWAP_REGISTERS);
// FIXME: remove this when updating tests
gl843_set_buffer_address(dev, 0);
}
static void gl843_set_ad_fe(Genesys_Device* dev)

Wyświetl plik

@ -386,8 +386,7 @@ void ScannerInterfaceUsb::write_gamma(std::uint8_t type, std::uint32_t addr, std
std::size_t size, Flags flags)
{
DBG_HELPER_ARGS(dbg, "type: 0x%02x, addr: 0x%08x, size: 0x%08zx", type, addr, size);
if (dev_->model->asic_type != AsicType::GL646 &&
dev_->model->asic_type != AsicType::GL841 &&
if (dev_->model->asic_type != AsicType::GL841 &&
dev_->model->asic_type != AsicType::GL843)
{
throw SaneException("Unsupported transfer mode");
@ -401,6 +400,13 @@ void ScannerInterfaceUsb::write_gamma(std::uint8_t type, std::uint32_t addr, std
write_register(0x5b, ((addr >> 12) & 0xff));
}
bulk_write_data(type, data, size);
if (dev_->model->asic_type == AsicType::GL843) {
// it looks like we need to reset the address so that subsequent buffer operations work.
// Most likely the MTRTBL register is to blame.
write_register(0x5b, 0);
write_register(0x5c, 0);
}
}
void ScannerInterfaceUsb::write_ahb(std::uint32_t addr, std::uint32_t size, std::uint8_t* data)