1.1 --- a/pkg/landfall-examples/hw_info/jz4780.c Thu Feb 01 22:41:30 2024 +0100
1.2 +++ b/pkg/landfall-examples/hw_info/jz4780.c Thu Feb 01 22:42:56 2024 +0100
1.3 @@ -39,6 +39,7 @@
1.4 #include <l4/devices/spi-gpio.h>
1.5 #include <l4/devices/spi-hybrid.h>
1.6 #include <l4/devices/spi-jz4780.h>
1.7 +#include <l4/devices/tcu-jz4780.h>
1.8 #include "common.h"
1.9
1.10
1.11 @@ -462,6 +463,125 @@
1.12
1.13
1.14
1.15 +/* TCU adapter functions. */
1.16 +
1.17 +void *tcu_init(l4_addr_t start, l4_addr_t end)
1.18 +{
1.19 + return jz4780_tcu_init(start, end);
1.20 +}
1.21 +
1.22 +void *tcu_get_channel(void *tcu, uint8_t channel, l4_cap_idx_t irq)
1.23 +{
1.24 + return jz4780_tcu_get_channel(tcu, channel, irq);
1.25 +}
1.26 +
1.27 +void tcu_disable(void *tcu_channel)
1.28 +{
1.29 + jz4780_tcu_disable(tcu_channel);
1.30 +}
1.31 +
1.32 +void tcu_enable(void *tcu_channel)
1.33 +{
1.34 + jz4780_tcu_enable(tcu_channel);
1.35 +}
1.36 +
1.37 +int tcu_is_enabled(void *tcu_channel)
1.38 +{
1.39 + return jz4780_tcu_is_enabled(tcu_channel);
1.40 +}
1.41 +
1.42 +uint8_t tcu_get_clock(void *tcu_channel)
1.43 +{
1.44 + return jz4780_tcu_get_clock(tcu_channel);
1.45 +}
1.46 +
1.47 +void tcu_set_clock(void *tcu_channel, uint8_t clock)
1.48 +{
1.49 + jz4780_tcu_set_clock(tcu_channel, clock);
1.50 +}
1.51 +
1.52 +uint32_t tcu_get_prescale(void *tcu_channel)
1.53 +{
1.54 + return jz4780_tcu_get_prescale(tcu_channel);
1.55 +}
1.56 +
1.57 +void tcu_set_prescale(void *tcu_channel, uint32_t prescale)
1.58 +{
1.59 + jz4780_tcu_set_prescale(tcu_channel, prescale);
1.60 +}
1.61 +
1.62 +uint32_t tcu_get_counter(void *tcu_channel)
1.63 +{
1.64 + return jz4780_tcu_get_counter(tcu_channel);
1.65 +}
1.66 +
1.67 +void tcu_set_counter(void *tcu_channel, uint32_t value)
1.68 +{
1.69 + jz4780_tcu_set_counter(tcu_channel, value);
1.70 +}
1.71 +
1.72 +uint8_t tcu_get_count_mode(void *tcu_channel)
1.73 +{
1.74 + return jz4780_tcu_get_count_mode(tcu_channel);
1.75 +}
1.76 +
1.77 +void tcu_set_count_mode(void *tcu_channel, uint8_t mode)
1.78 +{
1.79 + jz4780_tcu_set_count_mode(tcu_channel, mode);
1.80 +}
1.81 +
1.82 +uint32_t tcu_get_full_data_value(void *tcu_channel)
1.83 +{
1.84 + return jz4780_tcu_get_full_data_value(tcu_channel);
1.85 +}
1.86 +
1.87 +void tcu_set_full_data_value(void *tcu_channel, uint32_t value)
1.88 +{
1.89 + jz4780_tcu_set_full_data_value(tcu_channel, value);
1.90 +}
1.91 +
1.92 +uint32_t tcu_get_half_data_value(void *tcu_channel)
1.93 +{
1.94 + return jz4780_tcu_get_half_data_value(tcu_channel);
1.95 +}
1.96 +
1.97 +void tcu_set_half_data_value(void *tcu_channel, uint32_t value)
1.98 +{
1.99 + jz4780_tcu_set_half_data_value(tcu_channel, value);
1.100 +}
1.101 +
1.102 +int tcu_get_full_data_mask(void *tcu_channel)
1.103 +{
1.104 + return jz4780_tcu_get_full_data_mask(tcu_channel);
1.105 +}
1.106 +
1.107 +void tcu_set_full_data_mask(void *tcu_channel, int masked)
1.108 +{
1.109 + jz4780_tcu_set_full_data_mask(tcu_channel, masked);
1.110 +}
1.111 +
1.112 +int tcu_get_half_data_mask(void *tcu_channel)
1.113 +{
1.114 + return jz4780_tcu_get_half_data_mask(tcu_channel);
1.115 +}
1.116 +
1.117 +void tcu_set_half_data_mask(void *tcu_channel, int masked)
1.118 +{
1.119 + jz4780_tcu_set_half_data_mask(tcu_channel, masked);
1.120 +}
1.121 +
1.122 +int tcu_have_interrupt(void *tcu_channel)
1.123 +{
1.124 + return jz4780_tcu_have_interrupt(tcu_channel);
1.125 +}
1.126 +
1.127 +int tcu_wait_for_irq(void *tcu_channel, uint32_t timeout)
1.128 +{
1.129 + return jz4780_tcu_wait_for_irq(tcu_channel, timeout);
1.130 +}
1.131 +
1.132 +
1.133 +
1.134 /* Memory regions. */
1.135
1.136 const char *io_memory_regions[] = {
1.137 @@ -472,6 +592,7 @@
1.138 [I2C] = "jz4780-i2c",
1.139 [RTC] = "jz4780-rtc",
1.140 [SSI] = "jz4780-ssi",
1.141 + [TCU] = "jz4780-tcu",
1.142 };
1.143
1.144
1.145 @@ -583,3 +704,13 @@
1.146 void *spi_channels[] = {NULL, NULL};
1.147
1.148 const unsigned int num_spi_channels = 2;
1.149 +
1.150 +
1.151 +
1.152 +/* TCU definitions. */
1.153 +
1.154 +void *tcu_channels[] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
1.155 +
1.156 +const unsigned int num_tcu_channels = 8;
1.157 +
1.158 +l4_cap_idx_t tcu_irq = L4_INVALID_CAP;