1 +++++ Python Script to generate the IOdelay values +++++
3 IODELAY CONFIGURATION
4 =====================
5 When migrating to adapt to the IOdelay framework on DRA7xx SoCs,
7 * All the pinmuxing is performed from the bootloader
8 ** Allows to select the muxmode and pad direction
9 ** LEGACY_MODE padmux
11 * For some pads, along with mux mode, extra delay mode has to be configured
12 ** Allows to select one of the precoded delays from the ROM
13 ** VIRTUAL_MODE delay
15 * For some pads, additional registers have to be written with delays
16 ** Allows to manually set input/output delays per pad
17 ** MANUAL_MODE delay
20 DESCRIPTION
21 ===========
22 This script is used for generating the padmux and IO delay data for the
23 existing use cases based on group selection of delay modes.
25 For each pad, depending on the muxmode that is being used, there can be
26 multiple choices of choosing the delay - LEGACY, VIRTUAL_MODE or MANUAL_MODE
27 For LEGACY_MODE, nothing special has to be done.
28 Depending on the way the pad is being used, a specific delay mode has to be
29 chosen out of the multiple possibilities.
31 This script uses the register dump of the PAD registers from a running kernel.
32 From this, it derives the muxmode and pad directions used in the system.
33 Now the only thing that the script needs to add is the delay information.
35 Using PCT(Pad Configuration Tool) XML files as reference, the script finds
36 out all the possible options for VIRTUAL and MANUAL mode delays.
37 Depending on the way the hardware is used, user has to choose a specific mode.
39 User has to only select the delay mode to be used by a PAD group so that the
40 script selects them whenever in conflict. Optionally, the script can run
41 interactively to build up this data via menu based selection.
44 FILES
45 =====
46 iodelay-autogen.py - Python script
47 guidelines.txt - Describes when a specific delay mode is to be used
48 XMLFiles/*.xml - XML data from Pad Config Tool
49 Contains available delay modes and values
51 selected-modes.txt - User selected delay modes to be used by script
52 ctrl-core.dump - Register dump of all the PAD registers
55 EXAMPLES
56 ========
57 #0 For getting the register dump of the PAD registers:-
58 - Run this command on target "omapconf dump 0x4a003400 0x4a00380c"
59 and save the output to a file called ctrl-core.dump
60 - Please refer to the usage and help message for more info.
61 $> ./iodelay-autogen.py --help
63 #1 For generating the IOdelay values from the old kernel interactively:-
64 - Run the script interactively with -i option (default).
65 - Select the delay mode for the PAD group in conflict. Refer to the
66 guidelines.txt for description about that delay mode.
67 - For the peripherals in doubt, you can skip the entire PAD group
68 - Selection of each PAD group and the selected mode is printed at end.
69 - e.g. to generate the pad/delay data first time, run
70 $> ./iodelay-autogen.py -i 1
71 $> ./iodelay-autogen.py
73 #2 For generating the IOdelay values for a specific module only:-
74 - Use the module filter to specify the desired module.
75 The script would only generate output wrt the module specified.
76 - e.g. to generate the pad/delay data only for VIN3A interface, run
77 $> ./iodelay-autogen.py -m VIN3A
79 #3 For generating the IOdelay values for kernel format:-
80 - Use the format option -f to specify the output format.
81 - e.g. for generating pad/delay data for MMC1 in DTS format, run
82 $> ./iodelay-autogen.py -m MMC1 -f linux
84 TODO
85 ====
87 SUPPORT AND BUGS
88 ================
89 - Some PAD registers are hidden in the XML, so warnings for them are expected
90 - I2C1 PADs do not have mux mode names, so errors for them are expected
92 For any queries and support on this script, please write to
93 "Nikhil Devshatwar" <nikhil.nd@ti.com>