Difference between revisions of "Codec Services"
Jump to navigation
Jump to search
Line 23: | Line 23: | ||
spi_select_reg(3, 0x67); | spi_select_reg(3, 0x67); | ||
spi_offset_mask(3, 0x25, 0x10, 0x3C); | spi_offset_mask(3, 0x25, 0x10, 0x3C); | ||
+ | |||
+ | Once the touchscreen is initialized, you can start polling touch data: | ||
+ | u8 raw_touchdata[0x40]; | ||
+ | spi_select_reg(3, 0x67); | ||
+ | spi_read_offset(3, 0x26); //The return value of this is checked against "& 2" | ||
+ | spi_select_reg(3, 0xFB); | ||
+ | spi_read_offset_array(3, 1, raw_touchdata, 0x34); | ||
+ | |||
+ | This is the format of the touchdata report: | ||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Width | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0x00 | ||
+ | | 2*5 | ||
+ | | Five Touchscreen X Coordinates (big-endian MSB,LSB each. 12 bits number) | ||
+ | |- | ||
+ | | 0x0A | ||
+ | | 2*5 | ||
+ | | Five Touchscreen Y Coordinates (big-endian MSB,LSB each. 12 bits number) | ||
+ | |- | ||
+ | | 0x20 | ||
+ | | ?? | ||
+ | | ?? | ||
+ | |} | ||
+ | |||
+ | When the touchscreen is not touched, all the coordinates report 0xFFFF, and since touch coordinates have only 12 bits, you can check if the touchscreen is pressed by checking the 4th bit of the MSB. For example: pendown = !(raw_touchdata[0] & BIT(4)) | ||
=MIC Codec "cdc:MIC"= | =MIC Codec "cdc:MIC"= |
Revision as of 15:12, 6 April 2016
HID Codec "cdc:HID"
Command Header | Description |
---|---|
0x00010000 | GetTouchData |
0x00020000 | Initialize |
0x00030000 | Finalize |
Touchscreen
The touchscreen is the SPI device number 3, so it uses the 0x10142XXX SPI registers. It is initialized by issuing the following SPI commands:
spi_select_reg(3, 0x67); spi_offset_mask(3, 0x26, 0x80, 0x80); spi_select_reg(3, 0x67); spi_offset_mask(3, 0x24, 0, 0x80); spi_select_reg(3, 0x67); spi_offset_mask(3, 0x25, 0x10, 0x3C);
Once the touchscreen is initialized, you can start polling touch data:
u8 raw_touchdata[0x40]; spi_select_reg(3, 0x67); spi_read_offset(3, 0x26); //The return value of this is checked against "& 2" spi_select_reg(3, 0xFB); spi_read_offset_array(3, 1, raw_touchdata, 0x34);
This is the format of the touchdata report:
Offset | Width | Description |
---|---|---|
0x00 | 2*5 | Five Touchscreen X Coordinates (big-endian MSB,LSB each. 12 bits number) |
0x0A | 2*5 | Five Touchscreen Y Coordinates (big-endian MSB,LSB each. 12 bits number) |
0x20 | ?? | ?? |
When the touchscreen is not touched, all the coordinates report 0xFFFF, and since touch coordinates have only 12 bits, you can check if the touchscreen is pressed by checking the 4th bit of the MSB. For example: pendown = !(raw_touchdata[0] & BIT(4))
MIC Codec "cdc:MIC"
Command Header | Description |
---|
CSN Codec "cdc:CSN"
Command Header | Description |
---|
DSP Codec "cdc:DSP"
Command Header | Description |
---|
Legacy Codec "cdc:LGY"
Command Header | Description |
---|
CHK Codec "cdc:CHK"
Command Header | Description |
---|