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 genesys {
namespace gl843 { 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 * 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); // 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, dev->interface->write_gamma(0x28, 0x40000 + 0x8000 * table_nr, table.data(), steps * 2,
ScannerInterface::FLAG_SWAP_REGISTERS); 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) 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) std::size_t size, Flags flags)
{ {
DBG_HELPER_ARGS(dbg, "type: 0x%02x, addr: 0x%08x, size: 0x%08zx", type, addr, size); DBG_HELPER_ARGS(dbg, "type: 0x%02x, addr: 0x%08x, size: 0x%08zx", type, addr, size);
if (dev_->model->asic_type != AsicType::GL646 && if (dev_->model->asic_type != AsicType::GL841 &&
dev_->model->asic_type != AsicType::GL841 &&
dev_->model->asic_type != AsicType::GL843) dev_->model->asic_type != AsicType::GL843)
{ {
throw SaneException("Unsupported transfer mode"); 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)); write_register(0x5b, ((addr >> 12) & 0xff));
} }
bulk_write_data(type, data, size); 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) void ScannerInterfaceUsb::write_ahb(std::uint32_t addr, std::uint32_t size, std::uint8_t* data)