1.1 --- a/pkg/devices/lib/cpm/src/jz4730.cc Thu Dec 31 18:09:12 2020 +0100
1.2 +++ b/pkg/devices/lib/cpm/src/jz4730.cc Sun Jan 03 17:28:05 2021 +0100
1.3 @@ -3,7 +3,7 @@
1.4 * provided by the jz4730. The power management functionality could be exposed
1.5 * using a separate driver.
1.6 *
1.7 - * Copyright (C) 2017, 2018 Paul Boddie <paul@boddie.org.uk>
1.8 + * Copyright (C) 2017, 2018, 2020 Paul Boddie <paul@boddie.org.uk>
1.9 *
1.10 * This program is free software; you can redistribute it and/or
1.11 * modify it under the terms of the GNU General Public License as
1.12 @@ -57,8 +57,27 @@
1.13
1.14 enum Clock_gate_bits : unsigned
1.15 {
1.16 - Clock_gate_lcd = 7, // LCD
1.17 - Clock_gate_timer = 3, // OST
1.18 + Clock_gate_uprt = 25,
1.19 + Clock_gate_udc = 24,
1.20 + Clock_gate_cim = 23,
1.21 + Clock_gate_kbc = 22,
1.22 + Clock_gate_emac = 21,
1.23 + Clock_gate_uart3 = 20,
1.24 + Clock_gate_aic_bitclk = 18,
1.25 + Clock_gate_scc = 14,
1.26 + Clock_gate_msc = 13,
1.27 + Clock_gate_ssi = 12,
1.28 + Clock_gate_pwm1 = 11,
1.29 + Clock_gate_pmw0 = 10,
1.30 + Clock_gate_aic_pclk = 9,
1.31 + Clock_gate_i2c = 8,
1.32 + Clock_gate_lcd = 7,
1.33 + Clock_gate_uhc = 6,
1.34 + Clock_gate_dmac = 5,
1.35 + Clock_gate_timer = 3,
1.36 + Clock_gate_uart2 = 2,
1.37 + Clock_gate_uart1 = 1,
1.38 + Clock_gate_uart0 = 0,
1.39 };
1.40
1.41 enum Lcd_divider_bits : unsigned
1.42 @@ -269,6 +288,22 @@
1.43
1.44
1.45
1.46 +// I2C clock control.
1.47 +
1.48 +void
1.49 +Cpm_jz4730_chip::start_i2c()
1.50 +{
1.51 + _regs[Clock_gate] = _regs[Clock_gate] & ~(1 << Clock_gate_i2c);
1.52 +}
1.53 +
1.54 +void
1.55 +Cpm_jz4730_chip::stop_i2c()
1.56 +{
1.57 + _regs[Clock_gate] = _regs[Clock_gate] | (1 << Clock_gate_i2c);
1.58 +}
1.59 +
1.60 +
1.61 +
1.62 // LCD clock control.
1.63
1.64 void
1.65 @@ -380,6 +415,18 @@
1.66 }
1.67
1.68 void
1.69 +jz4730_cpm_start_i2c(void *cpm)
1.70 +{
1.71 + static_cast<Cpm_jz4730_chip *>(cpm)->start_i2c();
1.72 +}
1.73 +
1.74 +void
1.75 +jz4730_cpm_stop_i2c(void *cpm)
1.76 +{
1.77 + static_cast<Cpm_jz4730_chip *>(cpm)->stop_i2c();
1.78 +}
1.79 +
1.80 +void
1.81 jz4730_cpm_start_lcd(void *cpm)
1.82 {
1.83 static_cast<Cpm_jz4730_chip *>(cpm)->start_lcd();