kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Move gamma address reset to scanner interface on gl843
rodzic
9eb13d5a10
commit
dcfa45c5cd
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Ładowanie…
Reference in New Issue