summaryrefslogtreecommitdiffstats
path: root/utils/hwstub/stub
AgeCommit message (Collapse)AuthorFilesLines
2021-03-25usb: implement macro for initializing USB stringsJames Buren2-22/+11
This uses the new unicode string literal feature that is available now to greatly simplify the initialization of these special string types. This makes them much more readable at a quick glance. Change-Id: Iad8b49aa763486608e3bb7e83fb8abfb48ce0a7b
2020-09-17jz4760: Heavily rework USB driver to add working DMA supportSolomon Peachy1-0/+5
* DMA Bulk IN (ie our TX) results in sequential transfers 33-68% faster. * DMA Bulk OUT (ie RX) is mostly stripped out due to complete brokenness. * Interrupt and control endpoints remain PIO-driven. Other improvements: 1) Use consistent endpoint references (no magic numbers) 2) Greatly enhanced logging 3) DMA support can be compiled out completely 4) Setting lockswitch will disable all DMA operations at runtime 5) Much more robust error checking and recovery Change-Id: I57b82e655e55ced0dfe289e379b0b61d8fe443b4
2018-09-07MIPS: fix memset()Marcin Bukat1-112/+3
swr/swl instructions used for word aligning were wrong. This made memset() terribly broken. I can't imagine how it went uncaught for soooo long. Spotted by Solomon Peachy. I run unit tests for alignments 0,1,2,3 size 1, 2, 3, 4, 5, 63, 64, 65, 127, 128, 129; and fill pattern 0x00 and other (since 0 is special case in this implementation). Change-Id: I513a10734335fe97734c10ab5a6c3e3fb3f4687a
2017-09-15ATJ hwstub: Add cache coherencyMarcin Bukat1-0/+7
All the hard work was done by pamaury. I simply added proper defines. Change-Id: Ib374eea7cd20f35518ad8a68d771c57c54ae01ca
2017-01-24hwstub: rewrite exception catchingAmaury Pouly10-3269/+125
Since we can catch exceptions like data aborts on read/write, it takes very little to also catch exceptions in calls. When extending this with the catching of illegal instructions, the call instruction now becomes much more robust and also for address and instruction probing. Since we can catch several types of exception, rename set_data_abort_jmp to set_exception_jmp. At the same time, simplify the logic in read/write request handlers. Also fix a bug in ARM jump code: it was using stmia r1, {..., pc} as if pc would get current pc + 8 but this is actually implementation defined on older ARMs (typically pc + 12) and deprecated on newer ARMs, so rewrite the code avoid that. The set_exception_jmp() function now also reports the exception type. Change-Id: Icd0dd52d2456b361b27c4776be09c3d13528ed93
2017-01-24hwstub/jz460b: implement exception recoveryAmaury Pouly4-1/+106
Now that we now that jz4760b implements EBASE, we can use it to rebase exceptions to use a k1seg address, that maps to the physical address of the TCSM0. It requires to enable HAB1 to have this translation. This most the most inefficient way to access tighly coupled memory ever, but it works. Change-Id: I894ca929c9835696102eb2fef44b06e6eaf96d44
2017-01-24hwstub/jz4760b: build packtools automatically if neeededAmaury Pouly1-0/+7
Change-Id: I543e405bf75868d0f7509a35e08fe31ed253e0e6
2017-01-24hwstub: add verbose mode to makeAmaury Pouly1-1/+3
Use make V=1 to print all commands Change-Id: I28bd4151178413f10ddab292f1d582a9d019f5ea
2017-01-24hwstub: add support for coprocessor operationsAmaury Pouly1-12/+176
At the moment the stub only implement them for MIPS. Change-Id: Ica835a0e9c70fa5675c3d655eae986e812a47de8
2017-01-24hwstub: add the possibility to flush caches before execAmaury Pouly4-1/+45
This is needed on the jz4760b because if some data is loaded to DRAM, then it is cached and a disaster lurks if dcaches/icache are not flushed. Targets that needs this must define CONFIG_FLUSH_CACHES in target-config.h and implement target_flush_caches(). Currently MIPS has some generic code for mips32r1 that requires to define {D,I}CACHE_SIZE and {D,I}CACHE_LINE_SIZE in target-config.h Change-Id: I5a3fc085de9445d8c8a2eb61ae4e2dc9bb6b4e8e
2017-01-24hwstub: add jz4760b stubAmaury Pouly11-0/+13307
The stub is quite versatile: it can be loaded using bootrom or another other means (like factory boot on Fiio X1). It relocates itself to TCSM0 and provides basic functionality (it does not recover from failed read/writes at the moment). Change-Id: Ib646a4b43fba9358d6f93f0f73a5c2e9bcd775a7
2016-11-10ATJ hwstub make irq based usb driver workMarcin Bukat1-112/+195
0e2b490 introduced rework of usb driver which was broken. It was reverted in f2da975 to restore hwstub functionality on ATJ. This commit reenables usb rework AND fixes remining issues. The problem was with 0 length OUT thransfers. Additionally a few cleanups were made. Change-Id: I529ea9ad6540509e9287ca7e1cd2b44369b03cbb
2016-11-08Revert "hwstub: rework usb driver for atj213x"Marcin Bukat1-142/+104
This reverts commit 0e2b4908d012dbd45a58002774f32b64ea8f83e3. Although I swear it was tested it apparently broke hwstub on atj. I will need to investigate more whats going on. Revert for now. Change-Id: I2ff3adf8c72bb0e53be7d81b975382adfb700eab
2016-04-08hwstub: rewrite and expand libraryAmaury Pouly2-3/+3
Rewrite the hwstub library in C++, with a clean and modular design. The library was designed from the ground up to be aware of multithreading issues and to handle memory allocation nicely with shared pointers. Compared to the original library, it brings the following major features: - support for JZ boot devices, it is very easy to add support for others - support for network transparent operations (through sockets): both tcp and unix domains are support Change-Id: I75899cb9c7aa938c17ede2bb3f468e7a55d625b4
2016-03-14hwstub: fix warning: no newline at end of file with newer gccMarcin Bukat2-2/+4
Change-Id: Icb4233fb9b2b0d5b6f8c4a35dff300f38c8d3025
2016-03-14hwstub: rework usb driver for atj213xMarcin Bukat1-104/+142
Change-Id: I7b175103e567ae4375ff94e74ed1a06215f640c3
2015-09-29hwstub: make it possible to override toolchainAmaury Pouly4-16/+20
Default toolchain can be overriden using PREFIX, for example: PREFIX=arm-none-eabi- make Change-Id: I06f5ad0ad492b9f648ccba853a851918644f0500
2015-01-13hwstub: implement read/write data abort recoveryAmaury Pouly11-39/+304
Change-Id: I1625873b6864584c40984723d82548ad242ee08e
2014-11-28hwstub/atj213x: add clock setup to crt0.SMarcin Bukat1-1/+29
Change-Id: I3b6e1b8ee1fa76396f7abe7df69af26e9599cfe9 Reviewed-on: http://gerrit.rockbox.org/1055 Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com> Tested: Marcin Bukat <marcin.bukat@gmail.com>
2014-11-18hwstub/qeditor: add support for atomic read/writesMarcin Bukat6-3/+200
The current code assumed that READ/WRITE would produce atomic read/writes for 8/16/32-bit words, which in turned put assumption on the memcpy function. Since some memcpy implementation do not always guarantee such strong assumption, introduce two new operation READ/WRITE_ATOMIC which provide the necessary tools to do correct read and write to register in a single memory access. Change-Id: I37451bd5057bb0dcaf5a800d8aef8791c792a090
2014-11-05hwstub: Add atj213x supportbootloader_zenxfi3_v1Marcin Bukat13-7/+4658
Change-Id: Ic32200f9ab2c6977e503307a9cbe43a1328d0341
2014-09-11hwstub: small fixup in rk27xx usb driverMarcin Bukat1-1/+1
Change-Id: Ibf3b91af11041834ce650f663b213bac0113f721
2014-09-08hwstub: implement jump/call in stubAmaury Pouly1-6/+25
Change-Id: I876fa012c5ae1509e57f5816a8ed31dc69d62ca0
2014-09-07hwstub: fix missing \nAmaury Pouly1-3/+3
Change-Id: I077a38d8a8905b7ad686d0d00b2a8a48bd206ade
2014-09-07hwstub: fix horrible bugAmaury Pouly1-2/+1
Change-Id: I8042f692045a23dbb545d840e5169ce4b99fe5d2
2014-09-07hwstub: don't put revision in the protocol, it's specific to the implementationAmaury Pouly1-0/+2
Change-Id: I1311a22da41fe977f1613f1e313a864baa03027c
2014-09-07hwstub: remove protocol to make it use its own interfaceAmaury Pouly1-65/+154
This way, hwstub can be implemented along with other usb features/interfaces. Change-Id: I7148cab845049cc0a8b8e740fa0d52d3a385eaed
2014-06-15Add RKW build target in rk27xx hwstubMarcin Bukat1-0/+3
Change-Id: I5ad44916bc1ac5e8a9384db2369f07b137a1a715
2014-06-15hwstub: fix usb driver for rk27xxMarcin Bukat1-28/+50
Change-Id: I299e76837715c320987177eaea8459f8f199cb96
2014-04-12hwstub: add proper PP supportAmaury Pouly4-19/+85
- drop support for PP500x: it's very different from other PP and although it would be possible to support them, I don't have one to test the code - make sure only the CPU is started - add PP descriptor to report chip ID and revision - add code in shell and lua to support pp (no register description yet) - compile for ARMv4 because PP502x is an ARM7TDMI Change-Id: I36c4e465dfc2cfdfe7433b2f65cc8f6f0720fe62
2014-04-12hwstub: fix error in config descriptor, cleanup some codeAmaury Pouly3-6/+1
Change-Id: I853340ed2c187a044726ca03ec52aed655707e27
2014-04-07Add hwstub support for portal player (manufacturer mode)Amaury Pouly6-0/+208
It is very similar to how e200tool from MrH works but uses the framework of hwstub which is makes it completely trivial since we already have the USB driver written. Change-Id: I61cdc245d3f828c2682bcd6ecfed5a1cc0094139
2014-02-10utils/hwstub: make stmp stub able to load in a MMU'ed environementAmaury Pouly1-6/+10
In might be useful to load hwstub in an environment with the MMU active, in which case care must be taken on the order in which things are done. Mostly, one should not disable the MMU before moving stuff around. The code assumes the linking address (0 currently) is identity mapped. Change-Id: I8d54ce9e8cadcde2e08990353ca7a46803731ca7
2014-02-10utils/hwstub: completely rework the protocol, drop unused featuresAmaury Pouly4-321/+124
The protocol has evolved a lot during the 2.x.y lifetime, bringing more features which later got unused. This commit removes all the unused stuff and simplifies everything: - drop the feature mask: everything is mandatory or stalled on error - remove the info request and put all static information in standard USB descriptors which are part of the configuration descriptor (and can be retrieved using the standard GetDescriptor request). - remove the USB interface, we had only one anyway - remove all endpoint descriptors - remove the exit/atexit stuff, it never worked as intended anyway - update the hwstub library and make it able to handle any device - update the tools (mostly renaming and removing of code) Change-Id: I1872bba7f4177fc3891180e8f944aab88f5bde31
2013-12-13hwstub/stmp: disable watchdogAmaury Pouly1-0/+11
Some targets like Sony NWZ use a watchdog, so we must disable it to prevent spurious reboot when we take over Change-Id: I138a8d7f9a1b089acb2d08d7f6c4a58e8b088b3a
2013-12-13hwstub/stmp: cleanupAmaury Pouly1-4/+1
Conditional no longer needed since ctr0.S is private to target, also setup stack just before jumping to C code only Change-Id: I74116239be9e87bbe53e8fa814c45f04f242f1c1
2013-12-06hwstub: Prepare for multi arch supportMarcin Bukat4-3/+5
Change-Id: Id38411ff95660e60ee23f99350b275b92b3e4578 Reviewed-on: http://gerrit.rockbox.org/690 Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2013-12-06hwstub: forgot the db command file for stmpAmaury Pouly1-0/+15
Change-Id: I08ca6be221d3633c5b6e5e4b023afca33713e428
2013-11-24hwstub rk27xx portMarcin Bukat12-5/+1929
Change-Id: I85ac57117911544b65ccd56eb16303e30be67cab
2013-11-18hwstub: use a more reasonable hclk frequencyAmaury Pouly1-1/+1
The old code would set CPU to 64MHz and HCLK to 9MHz but that's too low for many things like usb and gpmi. So change HCLK to ~32MHZ. Change-Id: I6459f25900e42603333cebccb7b0ed26c59640ad
2013-10-26hwstub: fix stmp3600Amaury Pouly1-3/+7
The microseconds register has a different address Change-Id: I29d2e7feea9eb34b0d539ee217babd092542b612
2013-10-26hwstub: produce sb1 image too (for STMP3600)Amaury Pouly1-4/+11
Change-Id: Ib7f38fba1e524ed7438cdc395441d801c5eabcaa
2013-10-22hwstub: don't touch mmu registers on non-STMP targets, they might not existAmaury Pouly1-0/+2
Change-Id: Ib18475fd90e0d29ab6d7214116f7a0041584d621
2013-10-09imxtools/sbtools: always probe report size for HID recovery modeAmaury Pouly1-1/+1
Some older versions of the ROM (TA3 for example), use a 64 byte report size instead of 1024, so hardcoding 1024 is just a bad idea. Change-Id: I720c4465cfe2f519bffa307175614bba58766dce
2013-09-10hwstub: add delay functions, and plain binary/sb file generationAmaury Pouly5-4/+37
Change-Id: Idbedb9277b355edcd93975ec5a268428c7b89633
2013-08-11hwstub: fix power off and reboot code on stmpAmaury Pouly1-3/+3
Change-Id: Ia717c5e6f78a2cecc6a0628e4c667ea39f32c44c
2013-08-11hwstub: allow the stub to relocate itselfAmaury Pouly3-1/+25
Change-Id: Iab60c6ec0e8eda19c76c84241f8367d53cb4f87b
2013-07-16hwstub: forgot fileAmaury Pouly1-0/+514
Change-Id: Ib79f4ef89c734d7ba2fcbf648aadc346576e1c17
2013-07-16hwstub: enhance exit protocol and implement on stmpAmaury Pouly2-2/+71
Rename STOP command to EXIT, introduce ATEXIT, this gives better control over the exit of the stub. Add stmp implementation. Change-Id: I45442c8b88b9330d12ef439417ca5ffa1520477a
2013-07-13hwstub: enhance protocol with more functionsAmaury Pouly1-0/+5
Change-Id: I7944249c2f7ea3e180e7b79ee8ae402d1d0742d3