[U-Boot] No single character output after update to latest u-boot on pandaboard

Hi,
I'm trying to compile the latest u-boot for my Pandaboard Rev A2. The SD card was originally loaded with a working version of 12.04 linaro-unbunt-developer image. Early printk is enabled in the original image.
I followed this guide (http://elinux.org/Panda_How_to_MLO_%26_u-boot) and here is what I did: 1. export ARCH=arm 2. export CROSS_COMPILE=arm-linux-gnueabi- 3. make omap4_panda_config 4.make 5. cp MLO u-boot.img /SDCARD/boot/
But when switching on my Panda, there is no output from the serial port. And the heartbeat LED is always off. (When every thing works, it is on when booting, and blinks after booting finished).
I don't have any former experience with u-boot. So please let me know if there is any more info I should provide.
Any help would be much appreciated! Thank you!

My company is designing a custom board that can be thought of as a derivative of the pandaboard. I believe we have Rev B1 with us in the office.
Considering that you are not getting any debug messages on your serial console, I suspect one of the following; * your cross-compiler might have issues * you haven't partitioned the SD card properly * your serial cable might be damaged.
Just short the TX and RX lines of your serial cable to test the last point. If you can see echo messages, then good, at least the cable is working.
Next worry about the partitions - to boot from SD card, the omap4 on the pandaboard expects it in a certain format. Try using pre-build binaries. For example;
http://www.omappedia.com/wiki/Android_Panda_Pre_Built http://omappedia.org/wiki/Ubuntu_Pre-built_Binaries_Guide
They have instructions on how to format your SD card. Assuming they work, then good! Last point is to check your cross-compiler. Just replace the existing MLO and u-boot.bin (or u-boot.img; it depends on what version you have) on the SD card with your compiled ones and you'll be in a good position to narrow down bugs.
All the best, Abraham V.
On Fri, Nov 22, 2013 at 11:41 AM, Chao Xu caesarxuchao@gmail.com wrote:
Hi,
I'm trying to compile the latest u-boot for my Pandaboard Rev A2. The SD card was originally loaded with a working version of 12.04 linaro-unbunt-developer image. Early printk is enabled in the original image.
I followed this guide (http://elinux.org/Panda_How_to_MLO_%26_u-boot) and here is what I did:
- export ARCH=arm
- export CROSS_COMPILE=arm-linux-gnueabi-
- make omap4_panda_config
4.make 5. cp MLO u-boot.img /SDCARD/boot/
But when switching on my Panda, there is no output from the serial port. And the heartbeat LED is always off. (When every thing works, it is on when booting, and blinks after booting finished).
I don't have any former experience with u-boot. So please let me know if there is any more info I should provide.
Any help would be much appreciated! Thank you!
-- Regards, Chao Xu _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

Hi Abraham,
Thank you very much for your detailed reply! But I think I can rule out the three possible problems you mentioned. 1. The cross compiler should be fine. Because I use it all the time to compile kernel for pandaboard and it has never been a problem 2. I'm doing exactly what you suggested, i.e. the SD card is partitioned by a pre-built image. 3. The serial cable is fine because the pre-built image was working properly with the serial cable. Only after I update the u-boot comes the no-output problem. Could you think of any other possible problem? I suspect maybe I need to modify other files (uEnv.txt, boot.scr) in the /boot partition? These files came along with the pre-built image. Thanks again.
On Fri, Nov 22, 2013 at 3:17 AM, Abraham V. abraham.varricatt@vvdntech.com wrote:
My company is designing a custom board that can be thought of as a derivative of the pandaboard. I believe we have Rev B1 with us in the office.
Considering that you are not getting any debug messages on your serial console, I suspect one of the following;
- your cross-compiler might have issues
- you haven't partitioned the SD card properly
- your serial cable might be damaged.
Just short the TX and RX lines of your serial cable to test the last point. If you can see echo messages, then good, at least the cable is working.
Next worry about the partitions - to boot from SD card, the omap4 on the pandaboard expects it in a certain format. Try using pre-build binaries. For example;
http://www.omappedia.com/wiki/Android_Panda_Pre_Built http://omappedia.org/wiki/Ubuntu_Pre-built_Binaries_Guide
They have instructions on how to format your SD card. Assuming they work, then good! Last point is to check your cross-compiler. Just replace the existing MLO and u-boot.bin (or u-boot.img; it depends on what version you have) on the SD card with your compiled ones and you'll be in a good position to narrow down bugs.
All the best, Abraham V.
On Fri, Nov 22, 2013 at 11:41 AM, Chao Xu caesarxuchao@gmail.com wrote:
Hi,
I'm trying to compile the latest u-boot for my Pandaboard Rev A2. The SD card was originally loaded with a working version of 12.04 linaro-unbunt-developer image. Early printk is enabled in the original image.
I followed this guide (http://elinux.org/Panda_How_to_MLO_%26_u-boot) and here is what I did:
- export ARCH=arm
- export CROSS_COMPILE=arm-linux-gnueabi-
- make omap4_panda_config
4.make 5. cp MLO u-boot.img /SDCARD/boot/
But when switching on my Panda, there is no output from the serial port. And the heartbeat LED is always off. (When every thing works, it is on when booting, and blinks after booting finished).
I don't have any former experience with u-boot. So please let me know if there is any more info I should provide.
Any help would be much appreciated! Thank you!
-- Regards, Chao Xu _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

Hello Chao,
That sounds odd. Can you try downloading the latest mainline uboot sources and compiling those for your board?
ftp://ftp.denx.de/pub/u-boot/
At least, for the pandaboard I have, the 2013.10 release works well, following your instructions. Only difference is that I'm using linaro's cross-compiler.
Puzzled, Abraham V.
On Fri, Nov 22, 2013 at 8:59 PM, Chao Xu caesarxuchao@gmail.com wrote:
Hi Abraham,
Thank you very much for your detailed reply! But I think I can rule out the three possible problems you mentioned.
- The cross compiler should be fine. Because I use it all the time to
compile kernel for pandaboard and it has never been a problem 2. I'm doing exactly what you suggested, i.e. the SD card is partitioned by a pre-built image. 3. The serial cable is fine because the pre-built image was working properly with the serial cable. Only after I update the u-boot comes the no-output problem. Could you think of any other possible problem? I suspect maybe I need to modify other files (uEnv.txt, boot.scr) in the /boot partition? These files came along with the pre-built image. Thanks again.
On Fri, Nov 22, 2013 at 3:17 AM, Abraham V. abraham.varricatt@vvdntech.com wrote:
My company is designing a custom board that can be thought of as a derivative of the pandaboard. I believe we have Rev B1 with us in the office.
Considering that you are not getting any debug messages on your serial console, I suspect one of the following;
- your cross-compiler might have issues
- you haven't partitioned the SD card properly
- your serial cable might be damaged.
Just short the TX and RX lines of your serial cable to test the last
point.
If you can see echo messages, then good, at least the cable is working.
Next worry about the partitions - to boot from SD card, the omap4 on the pandaboard expects it in a certain format. Try using pre-build binaries.
For
example;
http://www.omappedia.com/wiki/Android_Panda_Pre_Built http://omappedia.org/wiki/Ubuntu_Pre-built_Binaries_Guide
They have instructions on how to format your SD card. Assuming they work, then good! Last point is to check your cross-compiler. Just replace the existing MLO and u-boot.bin (or u-boot.img; it depends on what version
you
have) on the SD card with your compiled ones and you'll be in a good position to narrow down bugs.
All the best, Abraham V.
On Fri, Nov 22, 2013 at 11:41 AM, Chao Xu caesarxuchao@gmail.com
wrote:
Hi,
I'm trying to compile the latest u-boot for my Pandaboard Rev A2. The SD card was originally loaded with a working version of 12.04 linaro-unbunt-developer image. Early printk is enabled in the original image.
I followed this guide (http://elinux.org/Panda_How_to_MLO_%26_u-boot) and here is what I did:
- export ARCH=arm
- export CROSS_COMPILE=arm-linux-gnueabi-
- make omap4_panda_config
4.make 5. cp MLO u-boot.img /SDCARD/boot/
But when switching on my Panda, there is no output from the serial port. And the heartbeat LED is always off. (When every thing works, it is on when booting, and blinks after booting finished).
I don't have any former experience with u-boot. So please let me know if there is any more info I should provide.
Any help would be much appreciated! Thank you!
-- Regards, Chao Xu _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
-- Regards, Chao Xu

Hi Abraham,
I finally got it working by adding "#define CONFIG_SYS_ENABLE_PADS_ALL" in u-boot/include/configs/omap4_common.h! This is removed by default in v2013.10. Do you know why? Thank you!
On Sun, Nov 24, 2013 at 10:11 PM, Abraham V. abraham.varricatt@vvdntech.com wrote:
Hello Chao,
That sounds odd. Can you try downloading the latest mainline uboot sources and compiling those for your board?
ftp://ftp.denx.de/pub/u-boot/
At least, for the pandaboard I have, the 2013.10 release works well, following your instructions. Only difference is that I'm using linaro's cross-compiler.
Puzzled, Abraham V.
On Fri, Nov 22, 2013 at 8:59 PM, Chao Xu caesarxuchao@gmail.com wrote:
Hi Abraham,
Thank you very much for your detailed reply! But I think I can rule out the three possible problems you mentioned.
- The cross compiler should be fine. Because I use it all the time to
compile kernel for pandaboard and it has never been a problem 2. I'm doing exactly what you suggested, i.e. the SD card is partitioned by a pre-built image. 3. The serial cable is fine because the pre-built image was working properly with the serial cable. Only after I update the u-boot comes the no-output problem. Could you think of any other possible problem? I suspect maybe I need to modify other files (uEnv.txt, boot.scr) in the /boot partition? These files came along with the pre-built image. Thanks again.
On Fri, Nov 22, 2013 at 3:17 AM, Abraham V. abraham.varricatt@vvdntech.com wrote:
My company is designing a custom board that can be thought of as a derivative of the pandaboard. I believe we have Rev B1 with us in the office.
Considering that you are not getting any debug messages on your serial console, I suspect one of the following;
- your cross-compiler might have issues
- you haven't partitioned the SD card properly
- your serial cable might be damaged.
Just short the TX and RX lines of your serial cable to test the last point. If you can see echo messages, then good, at least the cable is working.
Next worry about the partitions - to boot from SD card, the omap4 on the pandaboard expects it in a certain format. Try using pre-build binaries. For example;
http://www.omappedia.com/wiki/Android_Panda_Pre_Built http://omappedia.org/wiki/Ubuntu_Pre-built_Binaries_Guide
They have instructions on how to format your SD card. Assuming they work, then good! Last point is to check your cross-compiler. Just replace the existing MLO and u-boot.bin (or u-boot.img; it depends on what version you have) on the SD card with your compiled ones and you'll be in a good position to narrow down bugs.
All the best, Abraham V.
On Fri, Nov 22, 2013 at 11:41 AM, Chao Xu caesarxuchao@gmail.com wrote:
Hi,
I'm trying to compile the latest u-boot for my Pandaboard Rev A2. The SD card was originally loaded with a working version of 12.04 linaro-unbunt-developer image. Early printk is enabled in the original image.
I followed this guide (http://elinux.org/Panda_How_to_MLO_%26_u-boot) and here is what I did:
- export ARCH=arm
- export CROSS_COMPILE=arm-linux-gnueabi-
- make omap4_panda_config
4.make 5. cp MLO u-boot.img /SDCARD/boot/
But when switching on my Panda, there is no output from the serial port. And the heartbeat LED is always off. (When every thing works, it is on when booting, and blinks after booting finished).
I don't have any former experience with u-boot. So please let me know if there is any more info I should provide.
Any help would be much appreciated! Thank you!
-- Regards, Chao Xu _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
-- Regards, Chao Xu

Hello Chao, (cc R.Sricharan from TI)
Quite frankly, I have no idea why your pandaboard fails to work if CONFIG_SYS_ENABLE_PADS_ALL isn't defined in the omap4_common.h file. From the logs this patch was committed on 13/June/2012 by R.Sricharan. He might have a better explanation so I'm adding him to this discussion. The git log message says this,
"ARM: OMAP4/5: Do not configure non essential pads, clocks, dplls.
Currently on OMAP4/5 platforms, many kernel drivers are dependent upon the bootloaders for mux, dpll and clock configurations. This should not be the case and bootloaders should set only the minimum required for the uboot functionality and kernel boot.
Note that this is going to break the kernel drivers. But this is the only way to get things fixed in the kernel.
Signed-off-by: R Sricharan r.sricharan@ti.com"
so I'm curious now. Chao - was your problem that uboot refused to start or were you seeing crashes in the linux kernel? If it's the former, then the kernel doesn't even come into the picture.
Also, if you could try a simple experiment? Instead of defining that in the common file, could you define it in the omap4_panda.h file and tell us if uboot comes up? ( I'm just hesitant to make changes to a common file if the issue is on only one board)
Puzzled, Abraham V.
On Tue, Nov 26, 2013 at 9:14 AM, Chao Xu caesarxuchao@gmail.com wrote:
Hi Abraham,
I finally got it working by adding "#define CONFIG_SYS_ENABLE_PADS_ALL" in u-boot/include/configs/omap4_common.h! This is removed by default in v2013.10. Do you know why? Thank you!
On Sun, Nov 24, 2013 at 10:11 PM, Abraham V. abraham.varricatt@vvdntech.com wrote:
Hello Chao,
That sounds odd. Can you try downloading the latest mainline uboot
sources
and compiling those for your board?
ftp://ftp.denx.de/pub/u-boot/
At least, for the pandaboard I have, the 2013.10 release works well, following your instructions. Only difference is that I'm using linaro's cross-compiler.
Puzzled, Abraham V.
On Fri, Nov 22, 2013 at 8:59 PM, Chao Xu caesarxuchao@gmail.com wrote:
Hi Abraham,
Thank you very much for your detailed reply! But I think I can rule out the three possible problems you mentioned.
- The cross compiler should be fine. Because I use it all the time to
compile kernel for pandaboard and it has never been a problem 2. I'm doing exactly what you suggested, i.e. the SD card is partitioned by a pre-built image. 3. The serial cable is fine because the pre-built image was working properly with the serial cable. Only after I update the u-boot comes the no-output problem. Could you think of any other possible problem? I suspect maybe I need to modify other files (uEnv.txt, boot.scr) in the /boot partition? These files came along with the pre-built image. Thanks again.
On Fri, Nov 22, 2013 at 3:17 AM, Abraham V. abraham.varricatt@vvdntech.com wrote:
My company is designing a custom board that can be thought of as a derivative of the pandaboard. I believe we have Rev B1 with us in the office.
Considering that you are not getting any debug messages on your serial console, I suspect one of the following;
- your cross-compiler might have issues
- you haven't partitioned the SD card properly
- your serial cable might be damaged.
Just short the TX and RX lines of your serial cable to test the last point. If you can see echo messages, then good, at least the cable is
working.
Next worry about the partitions - to boot from SD card, the omap4 on
the
pandaboard expects it in a certain format. Try using pre-build
binaries.
For example;
http://www.omappedia.com/wiki/Android_Panda_Pre_Built http://omappedia.org/wiki/Ubuntu_Pre-built_Binaries_Guide
They have instructions on how to format your SD card. Assuming they work, then good! Last point is to check your cross-compiler. Just replace
the
existing MLO and u-boot.bin (or u-boot.img; it depends on what version you have) on the SD card with your compiled ones and you'll be in a good position to narrow down bugs.
All the best, Abraham V.
On Fri, Nov 22, 2013 at 11:41 AM, Chao Xu caesarxuchao@gmail.com wrote:
Hi,
I'm trying to compile the latest u-boot for my Pandaboard Rev A2. The SD card was originally loaded with a working version of 12.04 linaro-unbunt-developer image. Early printk is enabled in the
original
image.
I followed this guide (http://elinux.org/Panda_How_to_MLO_%26_u-boot
)
and here is what I did:
- export ARCH=arm
- export CROSS_COMPILE=arm-linux-gnueabi-
- make omap4_panda_config
4.make 5. cp MLO u-boot.img /SDCARD/boot/
But when switching on my Panda, there is no output from the serial port. And the heartbeat LED is always off. (When every thing works,
it
is on when booting, and blinks after booting finished).
I don't have any former experience with u-boot. So please let me know if there is any more info I should provide.
Any help would be much appreciated! Thank you!
-- Regards, Chao Xu _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
-- Regards, Chao Xu
-- Regards, Chao Xu

Hi, On Tuesday 26 November 2013 09:55 AM, Abraham V. wrote:
Hello Chao, (cc R.Sricharan from TI)
Quite frankly, I have no idea why your pandaboard fails to work if CONFIG_SYS_ENABLE_PADS_ALL isn't defined in the omap4_common.h file. From the logs this patch was committed on 13/June/2012 by R.Sricharan. He might have a better explanation so I'm adding him to this discussion. The git log message says this,
If we enable CONFIG_SYS_ENABLE_PADS_ALL, pin mux for non essential pads for u-boot will be configured. Ideally this configuration should be taken care by kernel. This is the main reason to remove this config option. Due to this reason the following is added to ./doc/feature-removal-schedule.txt
"What: Remove CONFIG_SYS_ENABLE_PADS_ALL and CONFIG_SYS_CLOCKS_ENABLE_ALL When: Release v2013.07
Why: When set these options enable "all" of the pads and clocks found on OMAP4/5 platforms, so that the Linux Kernel does not have to. It has been agreed that this goes against the U-Boot design philosophy and since f3f98bb0 we have not enabled more than is used in U-Boot. The kernel has been updating drivers to enable rather than assume pads/clocks have been enabled already. Our expectation is that by v2013.07 a suitable kernel shall exist that does not need these options set for a reasonable I/O set to function.
Who: Tom Rini trini@ti.com and Sricharan R r.sricharan@ti.com"
Please let me know if I am not clear.
"ARM: OMAP4/5: Do not configure non essential pads, clocks, dplls.
Currently on OMAP4/5 platforms, many kernel drivers are dependent upon the bootloaders for mux, dpll and clock configurations. This should not be the case and bootloaders should set only the minimum required for the uboot functionality and kernel boot. Note that this is going to break the kernel drivers. But this is the only way to get things fixed in the kernel. Signed-off-by: R Sricharan <r.sricharan@ti.com>"
so I'm curious now. Chao - was your problem that uboot refused to start or were you seeing crashes in the linux kernel? If it's the former, then the kernel doesn't even come into the picture.
Yes even I am not clear at this point. Chao can you please clarify. Ideally the above config will not harm U-Boot to come up on your board.
Thanks and regards, Lokesh
Also, if you could try a simple experiment? Instead of defining that in the common file, could you define it in the omap4_panda.h file and tell us if uboot comes up? ( I'm just hesitant to make changes to a common file if the issue is on only one board)
Puzzled, Abraham V.
On Tue, Nov 26, 2013 at 9:14 AM, Chao Xu caesarxuchao@gmail.com wrote:
Hi Abraham,
I finally got it working by adding "#define CONFIG_SYS_ENABLE_PADS_ALL" in u-boot/include/configs/omap4_common.h! This is removed by default in v2013.10. Do you know why? Thank you!
On Sun, Nov 24, 2013 at 10:11 PM, Abraham V. abraham.varricatt@vvdntech.com wrote:
Hello Chao,
That sounds odd. Can you try downloading the latest mainline uboot
sources
and compiling those for your board?
ftp://ftp.denx.de/pub/u-boot/
At least, for the pandaboard I have, the 2013.10 release works well, following your instructions. Only difference is that I'm using linaro's cross-compiler.
Puzzled, Abraham V.
On Fri, Nov 22, 2013 at 8:59 PM, Chao Xu caesarxuchao@gmail.com wrote:
Hi Abraham,
Thank you very much for your detailed reply! But I think I can rule out the three possible problems you mentioned.
- The cross compiler should be fine. Because I use it all the time to
compile kernel for pandaboard and it has never been a problem 2. I'm doing exactly what you suggested, i.e. the SD card is partitioned by a pre-built image. 3. The serial cable is fine because the pre-built image was working properly with the serial cable. Only after I update the u-boot comes the no-output problem. Could you think of any other possible problem? I suspect maybe I need to modify other files (uEnv.txt, boot.scr) in the /boot partition? These files came along with the pre-built image. Thanks again.
On Fri, Nov 22, 2013 at 3:17 AM, Abraham V. abraham.varricatt@vvdntech.com wrote:
My company is designing a custom board that can be thought of as a derivative of the pandaboard. I believe we have Rev B1 with us in the office.
Considering that you are not getting any debug messages on your serial console, I suspect one of the following;
- your cross-compiler might have issues
- you haven't partitioned the SD card properly
- your serial cable might be damaged.
Just short the TX and RX lines of your serial cable to test the last point. If you can see echo messages, then good, at least the cable is
working.
Next worry about the partitions - to boot from SD card, the omap4 on
the
pandaboard expects it in a certain format. Try using pre-build
binaries.
For example;
http://www.omappedia.com/wiki/Android_Panda_Pre_Built http://omappedia.org/wiki/Ubuntu_Pre-built_Binaries_Guide
They have instructions on how to format your SD card. Assuming they work, then good! Last point is to check your cross-compiler. Just replace
the
existing MLO and u-boot.bin (or u-boot.img; it depends on what version you have) on the SD card with your compiled ones and you'll be in a good position to narrow down bugs.
All the best, Abraham V.
On Fri, Nov 22, 2013 at 11:41 AM, Chao Xu caesarxuchao@gmail.com wrote:
Hi,
I'm trying to compile the latest u-boot for my Pandaboard Rev A2. The SD card was originally loaded with a working version of 12.04 linaro-unbunt-developer image. Early printk is enabled in the
original
image.
I followed this guide (http://elinux.org/Panda_How_to_MLO_%26_u-boot
)
and here is what I did:
- export ARCH=arm
- export CROSS_COMPILE=arm-linux-gnueabi-
- make omap4_panda_config
4.make 5. cp MLO u-boot.img /SDCARD/boot/
But when switching on my Panda, there is no output from the serial port. And the heartbeat LED is always off. (When every thing works,
it
is on when booting, and blinks after booting finished).
I don't have any former experience with u-boot. So please let me know if there is any more info I should provide.
Any help would be much appreciated! Thank you!
-- Regards, Chao Xu _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
-- Regards, Chao Xu
-- Regards, Chao Xu
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

Thank you! Please see the inline reply.
On Mon, Nov 25, 2013 at 10:40 PM, Lokesh Vutla lokeshvutla@ti.com wrote:
Hi, On Tuesday 26 November 2013 09:55 AM, Abraham V. wrote:
Hello Chao, (cc R.Sricharan from TI)
Quite frankly, I have no idea why your pandaboard fails to work if CONFIG_SYS_ENABLE_PADS_ALL isn't defined in the omap4_common.h file. From the logs this patch was committed on 13/June/2012 by R.Sricharan. He might have a better explanation so I'm adding him to this discussion. The git log message says this,
If we enable CONFIG_SYS_ENABLE_PADS_ALL, pin mux for non essential pads for u-boot will be configured. Ideally this configuration should be taken care by kernel. This is the main reason to remove this config option. Due to this reason the following is added to ./doc/feature-removal-schedule.txt
"What: Remove CONFIG_SYS_ENABLE_PADS_ALL and CONFIG_SYS_CLOCKS_ENABLE_ALL When: Release v2013.07
Why: When set these options enable "all" of the pads and clocks found on OMAP4/5 platforms, so that the Linux Kernel does not have to. It has been agreed that this goes against the U-Boot design philosophy and since f3f98bb0 we have not enabled more than is used in U-Boot. The kernel has been updating drivers to enable rather than assume pads/clocks have been enabled already. Our expectation is that by v2013.07 a suitable kernel shall exist that does not need these options set for a reasonable I/O set to function.
Who: Tom Rini trini@ti.com and Sricharan R r.sricharan@ti.com"
Please let me know if I am not clear.
The explanation is crystal clear. So the setup of non-essential pins are left to the kernel. Then do I need to enable any linux kernel config options to instruct the kernel to take over? I just copied the old .config from my v3.7 kernel to build v3.12 kernel.
"ARM: OMAP4/5: Do not configure non essential pads, clocks, dplls.
Currently on OMAP4/5 platforms, many kernel drivers are dependent upon the bootloaders for mux, dpll and clock configurations. This should not be the case and bootloaders should set only the minimum required for the uboot functionality and kernel boot. Note that this is going to break the kernel drivers. But this is the only way to get things fixed in the kernel. Signed-off-by: R Sricharan <r.sricharan@ti.com>"
so I'm curious now. Chao - was your problem that uboot refused to start or were you seeing crashes in the linux kernel? If it's the former, then the kernel doesn't even come into the picture.
Yes even I am not clear at this point. Chao can you please clarify. Ideally the above config will not harm U-Boot to come up on your board.
I think it's the uboot refused to start. Because there was no single character from the serial port. I enabled the early_printk option in .config and added it to uEnv.txt. After I added the CONFIG_SYS_CLOCKS_ENABLE_ALL, the board can boot until "Starting Kernel". I then fixed some other issue of the kernel, like copy the .dtb to /media/boot, and then kernel booted just fine. I'm curious, too. Is there anything I can do to further debugging? Thank you both very much!
Thanks and regards, Lokesh
Also, if you could try a simple experiment? Instead of defining that in the common file, could you define it in the omap4_panda.h file and tell us if uboot comes up? ( I'm just hesitant to make changes to a common file if the issue is on only one board)
I will try to do it tmr.
Puzzled, Abraham V.
On Tue, Nov 26, 2013 at 9:14 AM, Chao Xu caesarxuchao@gmail.com wrote:
Hi Abraham,
I finally got it working by adding "#define CONFIG_SYS_ENABLE_PADS_ALL" in u-boot/include/configs/omap4_common.h! This is removed by default in v2013.10. Do you know why? Thank you!
On Sun, Nov 24, 2013 at 10:11 PM, Abraham V. abraham.varricatt@vvdntech.com wrote:
Hello Chao,
That sounds odd. Can you try downloading the latest mainline uboot
sources
and compiling those for your board?
ftp://ftp.denx.de/pub/u-boot/
At least, for the pandaboard I have, the 2013.10 release works well, following your instructions. Only difference is that I'm using linaro's cross-compiler.
Puzzled, Abraham V.
On Fri, Nov 22, 2013 at 8:59 PM, Chao Xu caesarxuchao@gmail.com wrote:
Hi Abraham,
Thank you very much for your detailed reply! But I think I can rule out the three possible problems you mentioned.
- The cross compiler should be fine. Because I use it all the time to
compile kernel for pandaboard and it has never been a problem 2. I'm doing exactly what you suggested, i.e. the SD card is partitioned by a pre-built image. 3. The serial cable is fine because the pre-built image was working properly with the serial cable. Only after I update the u-boot comes the no-output problem. Could you think of any other possible problem? I suspect maybe I need to modify other files (uEnv.txt, boot.scr) in the /boot partition? These files came along with the pre-built image. Thanks again.
On Fri, Nov 22, 2013 at 3:17 AM, Abraham V. abraham.varricatt@vvdntech.com wrote:
My company is designing a custom board that can be thought of as a derivative of the pandaboard. I believe we have Rev B1 with us in the office.
Considering that you are not getting any debug messages on your serial console, I suspect one of the following;
- your cross-compiler might have issues
- you haven't partitioned the SD card properly
- your serial cable might be damaged.
Just short the TX and RX lines of your serial cable to test the last point. If you can see echo messages, then good, at least the cable is
working.
Next worry about the partitions - to boot from SD card, the omap4 on
the
pandaboard expects it in a certain format. Try using pre-build
binaries.
For example;
http://www.omappedia.com/wiki/Android_Panda_Pre_Built http://omappedia.org/wiki/Ubuntu_Pre-built_Binaries_Guide
They have instructions on how to format your SD card. Assuming they work, then good! Last point is to check your cross-compiler. Just replace
the
existing MLO and u-boot.bin (or u-boot.img; it depends on what version you have) on the SD card with your compiled ones and you'll be in a good position to narrow down bugs.
All the best, Abraham V.
On Fri, Nov 22, 2013 at 11:41 AM, Chao Xu caesarxuchao@gmail.com wrote: > > Hi, > > I'm trying to compile the latest u-boot for my Pandaboard Rev A2. The > SD card was originally loaded with a working version of 12.04 > linaro-unbunt-developer image. Early printk is enabled in the
original
> image. > > I followed this guide (http://elinux.org/Panda_How_to_MLO_%26_u-boot
)
> and here is what I did: > 1. export ARCH=arm > 2. export CROSS_COMPILE=arm-linux-gnueabi- > 3. make omap4_panda_config > 4.make > 5. cp MLO u-boot.img /SDCARD/boot/ > > But when switching on my Panda, there is no output from the serial > port. And the heartbeat LED is always off. (When every thing works,
it
> is on when booting, and blinks after booting finished). > > I don't have any former experience with u-boot. So please let me know > if there is any more info I should provide. > > Any help would be much appreciated! Thank you! > > -- > Regards, > Chao Xu > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot
-- Regards, Chao Xu
-- Regards, Chao Xu
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

Hi Chao, On Tuesday 26 November 2013 10:32 AM, Chao Xu wrote:
Thank you! Please see the inline reply.
On Mon, Nov 25, 2013 at 10:40 PM, Lokesh Vutla lokeshvutla@ti.com wrote:
Hi, On Tuesday 26 November 2013 09:55 AM, Abraham V. wrote:
Hello Chao, (cc R.Sricharan from TI)
Quite frankly, I have no idea why your pandaboard fails to work if CONFIG_SYS_ENABLE_PADS_ALL isn't defined in the omap4_common.h file. From the logs this patch was committed on 13/June/2012 by R.Sricharan. He might have a better explanation so I'm adding him to this discussion. The git log message says this,
If we enable CONFIG_SYS_ENABLE_PADS_ALL, pin mux for non essential pads for u-boot will be configured. Ideally this configuration should be taken care by kernel. This is the main reason to remove this config option. Due to this reason the following is added to ./doc/feature-removal-schedule.txt
"What: Remove CONFIG_SYS_ENABLE_PADS_ALL and CONFIG_SYS_CLOCKS_ENABLE_ALL When: Release v2013.07
Why: When set these options enable "all" of the pads and clocks found on OMAP4/5 platforms, so that the Linux Kernel does not have to. It has been agreed that this goes against the U-Boot design philosophy and since f3f98bb0 we have not enabled more than is used in U-Boot. The kernel has been updating drivers to enable rather than assume pads/clocks have been enabled already. Our expectation is that by v2013.07 a suitable kernel shall exist that does not need these options set for a reasonable I/O set to function.
Who: Tom Rini trini@ti.com and Sricharan R r.sricharan@ti.com"
Please let me know if I am not clear.
The explanation is crystal clear. So the setup of non-essential pins are left to the kernel. Then do I need to enable any linux kernel config options to instruct the kernel to take over? I just copied the old .config from my v3.7 kernel to build v3.12 kernel.
No need to enable any config in kernel for this. Your dts should contain the required pin mux details. I am not sure what is in 3.7 kernel. May be its good to use omap2plus_defconfig.
"ARM: OMAP4/5: Do not configure non essential pads, clocks, dplls.
Currently on OMAP4/5 platforms, many kernel drivers are dependent upon the bootloaders for mux, dpll and clock configurations. This should not be the case and bootloaders should set only the minimum required for the uboot functionality and kernel boot. Note that this is going to break the kernel drivers. But this is the only way to get things fixed in the kernel. Signed-off-by: R Sricharan <r.sricharan@ti.com>"
so I'm curious now. Chao - was your problem that uboot refused to start or were you seeing crashes in the linux kernel? If it's the former, then the kernel doesn't even come into the picture.
Yes even I am not clear at this point. Chao can you please clarify. Ideally the above config will not harm U-Boot to come up on your board.
I think it's the uboot refused to start. Because there was no single character from the serial port. I enabled the early_printk option in .config and added it to uEnv.txt. After I added the CONFIG_SYS_CLOCKS_ENABLE_ALL, the board can boot until "Starting Kernel". I then fixed some other issue of the kernel, like copy the .dtb to /media/boot, and then kernel booted just fine. I'm curious, too. Is there anything I can do to further debugging? Thank you both very much!
I think I got the problem. I grabbed my panda and tried latest mainline. As you said U-Boot didn't come up for me either. I did a bisect and verified which patch is causing th issue. Below is the patch which breaks omap4.
"6789e84 i2c, omap24xx: convert driver to new mutlibus/mutliadapter framework" I think because of the linker code added in this patch for omap-common/u-boot-spl.lds
. = ALIGN(4); .u_boot_list : { KEEP(*(SORT(.u_boot_list*_i2c_*))); } >.sram
If I comment out this code, u-boot comes up as usual. Tom/Heiko, can you give a pointer why this is causing the issue. Please correct me if I am wrong.
Thanks and regards, Lokesh
Thanks and regards, Lokesh
Also, if you could try a simple experiment? Instead of defining that in the common file, could you define it in the omap4_panda.h file and tell us if uboot comes up? ( I'm just hesitant to make changes to a common file if the issue is on only one board)
I will try to do it tmr.
Puzzled, Abraham V.
On Tue, Nov 26, 2013 at 9:14 AM, Chao Xu caesarxuchao@gmail.com wrote:
Hi Abraham,
I finally got it working by adding "#define CONFIG_SYS_ENABLE_PADS_ALL" in u-boot/include/configs/omap4_common.h! This is removed by default in v2013.10. Do you know why? Thank you!
On Sun, Nov 24, 2013 at 10:11 PM, Abraham V. abraham.varricatt@vvdntech.com wrote:
Hello Chao,
That sounds odd. Can you try downloading the latest mainline uboot
sources
and compiling those for your board?
ftp://ftp.denx.de/pub/u-boot/
At least, for the pandaboard I have, the 2013.10 release works well, following your instructions. Only difference is that I'm using linaro's cross-compiler.
Puzzled, Abraham V.
On Fri, Nov 22, 2013 at 8:59 PM, Chao Xu caesarxuchao@gmail.com wrote:
Hi Abraham,
Thank you very much for your detailed reply! But I think I can rule out the three possible problems you mentioned.
- The cross compiler should be fine. Because I use it all the time to
compile kernel for pandaboard and it has never been a problem 2. I'm doing exactly what you suggested, i.e. the SD card is partitioned by a pre-built image. 3. The serial cable is fine because the pre-built image was working properly with the serial cable. Only after I update the u-boot comes the no-output problem. Could you think of any other possible problem? I suspect maybe I need to modify other files (uEnv.txt, boot.scr) in the /boot partition? These files came along with the pre-built image. Thanks again.
On Fri, Nov 22, 2013 at 3:17 AM, Abraham V. abraham.varricatt@vvdntech.com wrote: > My company is designing a custom board that can be thought of as a > derivative of the pandaboard. I believe we have Rev B1 with us in the > office. > > Considering that you are not getting any debug messages on your serial > console, I suspect one of the following; > * your cross-compiler might have issues > * you haven't partitioned the SD card properly > * your serial cable might be damaged. > > Just short the TX and RX lines of your serial cable to test the last > point. > If you can see echo messages, then good, at least the cable is
working.
> > Next worry about the partitions - to boot from SD card, the omap4 on
the
> pandaboard expects it in a certain format. Try using pre-build
binaries.
> For > example; > > http://www.omappedia.com/wiki/Android_Panda_Pre_Built > http://omappedia.org/wiki/Ubuntu_Pre-built_Binaries_Guide > > They have instructions on how to format your SD card. Assuming they > work, > then good! Last point is to check your cross-compiler. Just replace
the
> existing MLO and u-boot.bin (or u-boot.img; it depends on what version > you > have) on the SD card with your compiled ones and you'll be in a good > position to narrow down bugs. > > All the best, > Abraham V. > > > On Fri, Nov 22, 2013 at 11:41 AM, Chao Xu caesarxuchao@gmail.com > wrote: >> >> Hi, >> >> I'm trying to compile the latest u-boot for my Pandaboard Rev A2. The >> SD card was originally loaded with a working version of 12.04 >> linaro-unbunt-developer image. Early printk is enabled in the
original
>> image. >> >> I followed this guide (http://elinux.org/Panda_How_to_MLO_%26_u-boot
)
>> and here is what I did: >> 1. export ARCH=arm >> 2. export CROSS_COMPILE=arm-linux-gnueabi- >> 3. make omap4_panda_config >> 4.make >> 5. cp MLO u-boot.img /SDCARD/boot/ >> >> But when switching on my Panda, there is no output from the serial >> port. And the heartbeat LED is always off. (When every thing works,
it
>> is on when booting, and blinks after booting finished). >> >> I don't have any former experience with u-boot. So please let me know >> if there is any more info I should provide. >> >> Any help would be much appreciated! Thank you! >> >> -- >> Regards, >> Chao Xu >> _______________________________________________ >> U-Boot mailing list >> U-Boot@lists.denx.de >> http://lists.denx.de/mailman/listinfo/u-boot > >
-- Regards, Chao Xu
-- Regards, Chao Xu
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

I can confirm that the problem is present on the pandaboard Rev B1 version as well. When Lokesh mentioned the bisect, I checked out mainline and tried booting from an SD card - it didn't come up. :( removing the lines mentioned got it working again.
My usual boot device is USB and I use the omap4boot tool for it. Since that has its own SPL/MLO binary, the only thing I ended up testing was the main u-boot image. Which works just fine even without the above fix (not too surprising, since it has nothing to do with SPL).
Befuddled, Abraham V.
On Tue, Nov 26, 2013 at 12:22 PM, Lokesh Vutla lokeshvutla@ti.com wrote:
Hi Chao, On Tuesday 26 November 2013 10:32 AM, Chao Xu wrote:
Thank you! Please see the inline reply.
On Mon, Nov 25, 2013 at 10:40 PM, Lokesh Vutla lokeshvutla@ti.com
wrote:
Hi, On Tuesday 26 November 2013 09:55 AM, Abraham V. wrote:
Hello Chao, (cc R.Sricharan from TI)
Quite frankly, I have no idea why your pandaboard fails to work if CONFIG_SYS_ENABLE_PADS_ALL isn't defined in the omap4_common.h file.
From
the logs this patch was committed on 13/June/2012 by R.Sricharan. He
might
have a better explanation so I'm adding him to this discussion. The
git log
message says this,
If we enable CONFIG_SYS_ENABLE_PADS_ALL, pin mux for non essential pads
for u-boot
will be configured. Ideally this configuration should be taken care by
kernel. This is the main reason
to remove this config option. Due to this reason the following is added to
./doc/feature-removal-schedule.txt
"What: Remove CONFIG_SYS_ENABLE_PADS_ALL and
CONFIG_SYS_CLOCKS_ENABLE_ALL
When: Release v2013.07
Why: When set these options enable "all" of the pads and clocks found on OMAP4/5 platforms, so that the Linux Kernel does not have to. It has been agreed that this goes against the U-Boot design philosophy and since f3f98bb0 we have not enabled more than is used in U-Boot. The kernel has been updating drivers to enable rather than assume pads/clocks have been enabled already. Our expectation is that by v2013.07 a suitable kernel shall exist
that
does not need these options set for a reasonable I/O set to
function.
Who: Tom Rini trini@ti.com and Sricharan R r.sricharan@ti.com"
Please let me know if I am not clear.
The explanation is crystal clear. So the setup of non-essential pins are left to the kernel. Then do I need to enable any linux kernel config options to instruct the kernel to take over? I just copied the old .config from my v3.7 kernel to build v3.12 kernel.
No need to enable any config in kernel for this. Your dts should contain the required pin mux details. I am not sure what is in 3.7 kernel. May be its good to use omap2plus_defconfig.
"ARM: OMAP4/5: Do not configure non essential pads, clocks, dplls.
Currently on OMAP4/5 platforms, many kernel drivers are dependent upon the bootloaders for mux, dpll and clock configurations. This should not be the case and bootloaders should set only the minimum required for the uboot functionality and kernel boot. Note that this is going to break the kernel drivers. But this is the only way to get things fixed in the kernel. Signed-off-by: R Sricharan <r.sricharan@ti.com>"
so I'm curious now. Chao - was your problem that uboot refused to
start or
were you seeing crashes in the linux kernel? If it's the former, then
the
kernel doesn't even come into the picture.
Yes even I am not clear at this point. Chao can you please clarify. Ideally the above config will not harm U-Boot to come up on your board.
I think it's the uboot refused to start. Because there was no single character from the serial port. I enabled the early_printk option in .config and added it to uEnv.txt. After I added the CONFIG_SYS_CLOCKS_ENABLE_ALL, the board can boot until "Starting Kernel". I then fixed some other issue of the kernel, like copy the .dtb to /media/boot, and then kernel booted just fine. I'm curious, too. Is there anything I can do to further debugging? Thank you both very much!
I think I got the problem. I grabbed my panda and tried latest mainline. As you said U-Boot didn't come up for me either. I did a bisect and verified which patch is causing th issue. Below is the patch which breaks omap4.
"6789e84 i2c, omap24xx: convert driver to new mutlibus/mutliadapter framework" I think because of the linker code added in this patch for omap-common/u-boot-spl.lds
. = ALIGN(4); .u_boot_list : { KEEP(*(SORT(.u_boot_list*_i2c_*))); } >.sram
If I comment out this code, u-boot comes up as usual. Tom/Heiko, can you give a pointer why this is causing the issue. Please correct me if I am wrong.
Thanks and regards, Lokesh
Thanks and regards, Lokesh
Also, if you could try a simple experiment? Instead of defining that
in the
common file, could you define it in the omap4_panda.h file and tell us
if
uboot comes up? ( I'm just hesitant to make changes to a common file
if the
issue is on only one board)
I will try to do it tmr.
Puzzled, Abraham V.
On Tue, Nov 26, 2013 at 9:14 AM, Chao Xu caesarxuchao@gmail.com
wrote:
Hi Abraham,
I finally got it working by adding "#define CONFIG_SYS_ENABLE_PADS_ALL" in u-boot/include/configs/omap4_common.h! This is removed by default in v2013.10. Do you know why? Thank you!
On Sun, Nov 24, 2013 at 10:11 PM, Abraham V. abraham.varricatt@vvdntech.com wrote:
Hello Chao,
That sounds odd. Can you try downloading the latest mainline uboot
sources
and compiling those for your board?
ftp://ftp.denx.de/pub/u-boot/
At least, for the pandaboard I have, the 2013.10 release works well, following your instructions. Only difference is that I'm using
linaro's
cross-compiler.
Puzzled, Abraham V.
On Fri, Nov 22, 2013 at 8:59 PM, Chao Xu caesarxuchao@gmail.com
wrote:
> > Hi Abraham, > > Thank you very much for your detailed reply! But I think I can rule > out the three possible problems you mentioned. > 1. The cross compiler should be fine. Because I use it all the time
to
> compile kernel for pandaboard and it has never been a problem > 2. I'm doing exactly what you suggested, i.e. the SD card is > partitioned by a pre-built image. > 3. The serial cable is fine because the pre-built image was working > properly with the serial cable. Only after I update the u-boot comes > the no-output problem. > Could you think of any other possible problem? I suspect maybe I
need
> to modify other files (uEnv.txt, boot.scr) in the /boot partition? > These files came along with the pre-built image. Thanks again. > > On Fri, Nov 22, 2013 at 3:17 AM, Abraham V. > abraham.varricatt@vvdntech.com wrote: >> My company is designing a custom board that can be thought of as a >> derivative of the pandaboard. I believe we have Rev B1 with us in
the
>> office. >> >> Considering that you are not getting any debug messages on your
serial
>> console, I suspect one of the following; >> * your cross-compiler might have issues >> * you haven't partitioned the SD card properly >> * your serial cable might be damaged. >> >> Just short the TX and RX lines of your serial cable to test the
last
>> point. >> If you can see echo messages, then good, at least the cable is
working.
>> >> Next worry about the partitions - to boot from SD card, the omap4
on
the
>> pandaboard expects it in a certain format. Try using pre-build
binaries.
>> For >> example; >> >> http://www.omappedia.com/wiki/Android_Panda_Pre_Built >> http://omappedia.org/wiki/Ubuntu_Pre-built_Binaries_Guide >> >> They have instructions on how to format your SD card. Assuming they >> work, >> then good! Last point is to check your cross-compiler. Just replace
the
>> existing MLO and u-boot.bin (or u-boot.img; it depends on what
version
>> you >> have) on the SD card with your compiled ones and you'll be in a
good
>> position to narrow down bugs. >> >> All the best, >> Abraham V. >> >> >> On Fri, Nov 22, 2013 at 11:41 AM, Chao Xu caesarxuchao@gmail.com >> wrote: >>> >>> Hi, >>> >>> I'm trying to compile the latest u-boot for my Pandaboard Rev A2.
The
>>> SD card was originally loaded with a working version of 12.04 >>> linaro-unbunt-developer image. Early printk is enabled in the
original
>>> image. >>> >>> I followed this guide (
http://elinux.org/Panda_How_to_MLO_%26_u-boot
)
>>> and here is what I did: >>> 1. export ARCH=arm >>> 2. export CROSS_COMPILE=arm-linux-gnueabi- >>> 3. make omap4_panda_config >>> 4.make >>> 5. cp MLO u-boot.img /SDCARD/boot/ >>> >>> But when switching on my Panda, there is no output from the serial >>> port. And the heartbeat LED is always off. (When every thing
works,
it
>>> is on when booting, and blinks after booting finished). >>> >>> I don't have any former experience with u-boot. So please let me
know
>>> if there is any more info I should provide. >>> >>> Any help would be much appreciated! Thank you! >>> >>> -- >>> Regards, >>> Chao Xu >>> _______________________________________________ >>> U-Boot mailing list >>> U-Boot@lists.denx.de >>> http://lists.denx.de/mailman/listinfo/u-boot >> >> > > > > -- > Regards, > Chao Xu
-- Regards, Chao Xu
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

On Tue, Nov 26, 2013 at 12:22:19PM +0530, Lokesh Vutla wrote:
Hi Chao, On Tuesday 26 November 2013 10:32 AM, Chao Xu wrote:
Thank you! Please see the inline reply.
On Mon, Nov 25, 2013 at 10:40 PM, Lokesh Vutla lokeshvutla@ti.com wrote:
Hi, On Tuesday 26 November 2013 09:55 AM, Abraham V. wrote:
Hello Chao, (cc R.Sricharan from TI)
Quite frankly, I have no idea why your pandaboard fails to work if CONFIG_SYS_ENABLE_PADS_ALL isn't defined in the omap4_common.h file. From the logs this patch was committed on 13/June/2012 by R.Sricharan. He might have a better explanation so I'm adding him to this discussion. The git log message says this,
If we enable CONFIG_SYS_ENABLE_PADS_ALL, pin mux for non essential pads for u-boot will be configured. Ideally this configuration should be taken care by kernel. This is the main reason to remove this config option. Due to this reason the following is added to ./doc/feature-removal-schedule.txt
"What: Remove CONFIG_SYS_ENABLE_PADS_ALL and CONFIG_SYS_CLOCKS_ENABLE_ALL When: Release v2013.07
Why: When set these options enable "all" of the pads and clocks found on OMAP4/5 platforms, so that the Linux Kernel does not have to. It has been agreed that this goes against the U-Boot design philosophy and since f3f98bb0 we have not enabled more than is used in U-Boot. The kernel has been updating drivers to enable rather than assume pads/clocks have been enabled already. Our expectation is that by v2013.07 a suitable kernel shall exist that does not need these options set for a reasonable I/O set to function.
Who: Tom Rini trini@ti.com and Sricharan R r.sricharan@ti.com"
Please let me know if I am not clear.
The explanation is crystal clear. So the setup of non-essential pins are left to the kernel. Then do I need to enable any linux kernel config options to instruct the kernel to take over? I just copied the old .config from my v3.7 kernel to build v3.12 kernel.
No need to enable any config in kernel for this. Your dts should contain the required pin mux details. I am not sure what is in 3.7 kernel. May be its good to use omap2plus_defconfig.
"ARM: OMAP4/5: Do not configure non essential pads, clocks, dplls.
Currently on OMAP4/5 platforms, many kernel drivers are dependent upon the bootloaders for mux, dpll and clock configurations. This should not be the case and bootloaders should set only the minimum required for the uboot functionality and kernel boot. Note that this is going to break the kernel drivers. But this is the only way to get things fixed in the kernel. Signed-off-by: R Sricharan <r.sricharan@ti.com>"
so I'm curious now. Chao - was your problem that uboot refused to start or were you seeing crashes in the linux kernel? If it's the former, then the kernel doesn't even come into the picture.
Yes even I am not clear at this point. Chao can you please clarify. Ideally the above config will not harm U-Boot to come up on your board.
I think it's the uboot refused to start. Because there was no single character from the serial port. I enabled the early_printk option in .config and added it to uEnv.txt. After I added the CONFIG_SYS_CLOCKS_ENABLE_ALL, the board can boot until "Starting Kernel". I then fixed some other issue of the kernel, like copy the .dtb to /media/boot, and then kernel booted just fine. I'm curious, too. Is there anything I can do to further debugging? Thank you both very much!
I think I got the problem. I grabbed my panda and tried latest mainline. As you said U-Boot didn't come up for me either. I did a bisect and verified which patch is causing th issue. Below is the patch which breaks omap4.
"6789e84 i2c, omap24xx: convert driver to new mutlibus/mutliadapter framework" I think because of the linker code added in this patch for omap-common/u-boot-spl.lds
. = ALIGN(4); .u_boot_list : { KEEP(*(SORT(.u_boot_list*_i2c_*))); } >.sram
If I comment out this code, u-boot comes up as usual. Tom/Heiko, can you give a pointer why this is causing the issue. Please correct me if I am wrong.
Those lines keep the i2c adapter information in the binary (see the lists created in the driver now) so that omap3_beagle for example works. I think we need some further digging going on here.

Hi Tom, On Tuesday 26 November 2013 08:06 PM, Tom Rini wrote:
On Tue, Nov 26, 2013 at 12:22:19PM +0530, Lokesh Vutla wrote:
Hi Chao, On Tuesday 26 November 2013 10:32 AM, Chao Xu wrote:
Thank you! Please see the inline reply.
On Mon, Nov 25, 2013 at 10:40 PM, Lokesh Vutla lokeshvutla@ti.com wrote:
Hi, On Tuesday 26 November 2013 09:55 AM, Abraham V. wrote:
Hello Chao, (cc R.Sricharan from TI)
Quite frankly, I have no idea why your pandaboard fails to work if CONFIG_SYS_ENABLE_PADS_ALL isn't defined in the omap4_common.h file. From the logs this patch was committed on 13/June/2012 by R.Sricharan. He might have a better explanation so I'm adding him to this discussion. The git log message says this,
If we enable CONFIG_SYS_ENABLE_PADS_ALL, pin mux for non essential pads for u-boot will be configured. Ideally this configuration should be taken care by kernel. This is the main reason to remove this config option. Due to this reason the following is added to ./doc/feature-removal-schedule.txt
"What: Remove CONFIG_SYS_ENABLE_PADS_ALL and CONFIG_SYS_CLOCKS_ENABLE_ALL When: Release v2013.07
Why: When set these options enable "all" of the pads and clocks found on OMAP4/5 platforms, so that the Linux Kernel does not have to. It has been agreed that this goes against the U-Boot design philosophy and since f3f98bb0 we have not enabled more than is used in U-Boot. The kernel has been updating drivers to enable rather than assume pads/clocks have been enabled already. Our expectation is that by v2013.07 a suitable kernel shall exist that does not need these options set for a reasonable I/O set to function.
Who: Tom Rini trini@ti.com and Sricharan R r.sricharan@ti.com"
Please let me know if I am not clear.
The explanation is crystal clear. So the setup of non-essential pins are left to the kernel. Then do I need to enable any linux kernel config options to instruct the kernel to take over? I just copied the old .config from my v3.7 kernel to build v3.12 kernel.
No need to enable any config in kernel for this. Your dts should contain the required pin mux details. I am not sure what is in 3.7 kernel. May be its good to use omap2plus_defconfig.
"ARM: OMAP4/5: Do not configure non essential pads, clocks, dplls.
Currently on OMAP4/5 platforms, many kernel drivers are dependent upon the bootloaders for mux, dpll and clock configurations. This should not be the case and bootloaders should set only the minimum required for the uboot functionality and kernel boot. Note that this is going to break the kernel drivers. But this is the only way to get things fixed in the kernel. Signed-off-by: R Sricharan <r.sricharan@ti.com>"
so I'm curious now. Chao - was your problem that uboot refused to start or were you seeing crashes in the linux kernel? If it's the former, then the kernel doesn't even come into the picture.
Yes even I am not clear at this point. Chao can you please clarify. Ideally the above config will not harm U-Boot to come up on your board.
I think it's the uboot refused to start. Because there was no single character from the serial port. I enabled the early_printk option in .config and added it to uEnv.txt. After I added the CONFIG_SYS_CLOCKS_ENABLE_ALL, the board can boot until "Starting Kernel". I then fixed some other issue of the kernel, like copy the .dtb to /media/boot, and then kernel booted just fine. I'm curious, too. Is there anything I can do to further debugging? Thank you both very much!
I think I got the problem. I grabbed my panda and tried latest mainline. As you said U-Boot didn't come up for me either. I did a bisect and verified which patch is causing th issue. Below is the patch which breaks omap4.
"6789e84 i2c, omap24xx: convert driver to new mutlibus/mutliadapter framework" I think because of the linker code added in this patch for omap-common/u-boot-spl.lds
. = ALIGN(4); .u_boot_list : { KEEP(*(SORT(.u_boot_list*_i2c_*))); } >.sram
If I comment out this code, u-boot comes up as usual. Tom/Heiko, can you give a pointer why this is causing the issue. Please correct me if I am wrong.
Those lines keep the i2c adapter information in the binary (see the lists created in the driver now) so that omap3_beagle for example works. I think we need some further digging going on here.
After digging more into it, I observed few points Currently the Section memory map is like below. Section size start end .text 00005db0 40304350 4030a100 .rodata 000022a5 4030a100 4030c3a5 .data 000007f8 4030c3a8 4030cba0 .u_boot_list 000000a0 4030cba0 4030cc40
But as per TRM, SRAM memory map is given as below: start end Down loadable Image 40300000 4030C000 Public Stack 4030c000 4030d000
Looks like our data and u_boot_list sections are overlapping with Public stack. I compared the section map when I comment out the u_boot_list section in linker script. Below shows the description: Section size start end .text 000055e8 40304350 40309938 .rodata 00001e07 40309938 4030b73f .data 000007f8 4030b740 4030bf38
This doesn't overlap with our Public stack.
So I did the follwoing change and tried CONFIG_SPL_TEXT_BASE to 0x40300000 CONFIG_SPL_MAX_SIZE to (0x4030C000 - CONFIG_SPL_TEXT_BASE)
Then I am able to come to u-boot prompt. I compared the sections also, no overlapping happens.
But the problem here is this change will not work on HS devices..:( Any suggestions ?
Please correct me if I am wrong.
Thanks and regards, Lokesh

On Fri, Nov 29, 2013 at 01:48:12PM +0530, Lokesh Vutla wrote:
Hi Tom, On Tuesday 26 November 2013 08:06 PM, Tom Rini wrote:
On Tue, Nov 26, 2013 at 12:22:19PM +0530, Lokesh Vutla wrote:
Hi Chao, On Tuesday 26 November 2013 10:32 AM, Chao Xu wrote:
Thank you! Please see the inline reply.
On Mon, Nov 25, 2013 at 10:40 PM, Lokesh Vutla lokeshvutla@ti.com wrote:
Hi, On Tuesday 26 November 2013 09:55 AM, Abraham V. wrote:
Hello Chao, (cc R.Sricharan from TI)
Quite frankly, I have no idea why your pandaboard fails to work if CONFIG_SYS_ENABLE_PADS_ALL isn't defined in the omap4_common.h file. From the logs this patch was committed on 13/June/2012 by R.Sricharan. He might have a better explanation so I'm adding him to this discussion. The git log message says this,
If we enable CONFIG_SYS_ENABLE_PADS_ALL, pin mux for non essential pads for u-boot will be configured. Ideally this configuration should be taken care by kernel. This is the main reason to remove this config option. Due to this reason the following is added to ./doc/feature-removal-schedule.txt
"What: Remove CONFIG_SYS_ENABLE_PADS_ALL and CONFIG_SYS_CLOCKS_ENABLE_ALL When: Release v2013.07
Why: When set these options enable "all" of the pads and clocks found on OMAP4/5 platforms, so that the Linux Kernel does not have to. It has been agreed that this goes against the U-Boot design philosophy and since f3f98bb0 we have not enabled more than is used in U-Boot. The kernel has been updating drivers to enable rather than assume pads/clocks have been enabled already. Our expectation is that by v2013.07 a suitable kernel shall exist that does not need these options set for a reasonable I/O set to function.
Who: Tom Rini trini@ti.com and Sricharan R r.sricharan@ti.com"
Please let me know if I am not clear.
The explanation is crystal clear. So the setup of non-essential pins are left to the kernel. Then do I need to enable any linux kernel config options to instruct the kernel to take over? I just copied the old .config from my v3.7 kernel to build v3.12 kernel.
No need to enable any config in kernel for this. Your dts should contain the required pin mux details. I am not sure what is in 3.7 kernel. May be its good to use omap2plus_defconfig.
"ARM: OMAP4/5: Do not configure non essential pads, clocks, dplls.
Currently on OMAP4/5 platforms, many kernel drivers are dependent upon the bootloaders for mux, dpll and clock configurations. This should not be the case and bootloaders should set only the minimum required for the uboot functionality and kernel boot. Note that this is going to break the kernel drivers. But this is the only way to get things fixed in the kernel. Signed-off-by: R Sricharan <r.sricharan@ti.com>"
so I'm curious now. Chao - was your problem that uboot refused to start or were you seeing crashes in the linux kernel? If it's the former, then the kernel doesn't even come into the picture.
Yes even I am not clear at this point. Chao can you please clarify. Ideally the above config will not harm U-Boot to come up on your board.
I think it's the uboot refused to start. Because there was no single character from the serial port. I enabled the early_printk option in .config and added it to uEnv.txt. After I added the CONFIG_SYS_CLOCKS_ENABLE_ALL, the board can boot until "Starting Kernel". I then fixed some other issue of the kernel, like copy the .dtb to /media/boot, and then kernel booted just fine. I'm curious, too. Is there anything I can do to further debugging? Thank you both very much!
I think I got the problem. I grabbed my panda and tried latest mainline. As you said U-Boot didn't come up for me either. I did a bisect and verified which patch is causing th issue. Below is the patch which breaks omap4.
"6789e84 i2c, omap24xx: convert driver to new mutlibus/mutliadapter framework" I think because of the linker code added in this patch for omap-common/u-boot-spl.lds
. = ALIGN(4); .u_boot_list : { KEEP(*(SORT(.u_boot_list*_i2c_*))); } >.sram
If I comment out this code, u-boot comes up as usual. Tom/Heiko, can you give a pointer why this is causing the issue. Please correct me if I am wrong.
Those lines keep the i2c adapter information in the binary (see the lists created in the driver now) so that omap3_beagle for example works. I think we need some further digging going on here.
After digging more into it, I observed few points Currently the Section memory map is like below. Section size start end .text 00005db0 40304350 4030a100 .rodata 000022a5 4030a100 4030c3a5 .data 000007f8 4030c3a8 4030cba0 .u_boot_list 000000a0 4030cba0 4030cc40
But as per TRM, SRAM memory map is given as below: start end Down loadable Image 40300000 4030C000 Public Stack 4030c000 4030d000
Looks like our data and u_boot_list sections are overlapping with Public stack. I compared the section map when I comment out the u_boot_list section in linker script. Below shows the description: Section size start end .text 000055e8 40304350 40309938 .rodata 00001e07 40309938 4030b73f .data 000007f8 4030b740 4030bf38
This doesn't overlap with our Public stack.
So I did the follwoing change and tried CONFIG_SPL_TEXT_BASE to 0x40300000 CONFIG_SPL_MAX_SIZE to (0x4030C000 - CONFIG_SPL_TEXT_BASE)
Then I am able to come to u-boot prompt. I compared the sections also, no overlapping happens.
But the problem here is this change will not work on HS devices..:( Any suggestions ?
I think we're at the point where OMAP4 HS devices will need to be supported in a separate build from OMAP4 non-HS devices. There's ways forward for them still, I spent a bit hacking things out, but without removing functionality and I made it all fit again, mainly moving some strings to debug so we optimized them out, and ifndef'ing out some functions that we discarded, but had strings that we couldn't drop :(
So lets correct the MAX_SIZE and move TEXT_BASE down to the non-HS limit, and if people need OMAP4 HS devices working in mainline U-Boot we can start doing more re-factoring of files to work around the gcc strings issue.

On Wednesday 04 December 2013 02:07 AM, Tom Rini wrote:
On Fri, Nov 29, 2013 at 01:48:12PM +0530, Lokesh Vutla wrote:
Hi Tom, On Tuesday 26 November 2013 08:06 PM, Tom Rini wrote:
On Tue, Nov 26, 2013 at 12:22:19PM +0530, Lokesh Vutla wrote:
Hi Chao, On Tuesday 26 November 2013 10:32 AM, Chao Xu wrote:
Thank you! Please see the inline reply.
On Mon, Nov 25, 2013 at 10:40 PM, Lokesh Vutla lokeshvutla@ti.com wrote:
Hi, On Tuesday 26 November 2013 09:55 AM, Abraham V. wrote: > Hello Chao, > (cc R.Sricharan from TI) > > Quite frankly, I have no idea why your pandaboard fails to work if > CONFIG_SYS_ENABLE_PADS_ALL isn't defined in the omap4_common.h file. From > the logs this patch was committed on 13/June/2012 by R.Sricharan. He might > have a better explanation so I'm adding him to this discussion. The git log > message says this, If we enable CONFIG_SYS_ENABLE_PADS_ALL, pin mux for non essential pads for u-boot will be configured. Ideally this configuration should be taken care by kernel. This is the main reason to remove this config option. Due to this reason the following is added to ./doc/feature-removal-schedule.txt
"What: Remove CONFIG_SYS_ENABLE_PADS_ALL and CONFIG_SYS_CLOCKS_ENABLE_ALL When: Release v2013.07
Why: When set these options enable "all" of the pads and clocks found on OMAP4/5 platforms, so that the Linux Kernel does not have to. It has been agreed that this goes against the U-Boot design philosophy and since f3f98bb0 we have not enabled more than is used in U-Boot. The kernel has been updating drivers to enable rather than assume pads/clocks have been enabled already. Our expectation is that by v2013.07 a suitable kernel shall exist that does not need these options set for a reasonable I/O set to function.
Who: Tom Rini trini@ti.com and Sricharan R r.sricharan@ti.com"
Please let me know if I am not clear.
The explanation is crystal clear. So the setup of non-essential pins are left to the kernel. Then do I need to enable any linux kernel config options to instruct the kernel to take over? I just copied the old .config from my v3.7 kernel to build v3.12 kernel.
No need to enable any config in kernel for this. Your dts should contain the required pin mux details. I am not sure what is in 3.7 kernel. May be its good to use omap2plus_defconfig.
> > "ARM: OMAP4/5: Do not configure non essential pads, clocks, dplls. > > Currently on OMAP4/5 platforms, many kernel drivers are dependent > upon the bootloaders for mux, dpll and clock configurations. > This should not be the case and bootloaders should set only the > minimum required for the uboot functionality and kernel boot. > > Note that this is going to break the kernel drivers. But this > is the only way to get things fixed in the kernel. > > Signed-off-by: R Sricharan r.sricharan@ti.com" > > so I'm curious now. Chao - was your problem that uboot refused to start or > were you seeing crashes in the linux kernel? If it's the former, then the > kernel doesn't even come into the picture. Yes even I am not clear at this point. Chao can you please clarify. Ideally the above config will not harm U-Boot to come up on your board.
I think it's the uboot refused to start. Because there was no single character from the serial port. I enabled the early_printk option in .config and added it to uEnv.txt. After I added the CONFIG_SYS_CLOCKS_ENABLE_ALL, the board can boot until "Starting Kernel". I then fixed some other issue of the kernel, like copy the .dtb to /media/boot, and then kernel booted just fine. I'm curious, too. Is there anything I can do to further debugging? Thank you both very much!
I think I got the problem. I grabbed my panda and tried latest mainline. As you said U-Boot didn't come up for me either. I did a bisect and verified which patch is causing th issue. Below is the patch which breaks omap4.
"6789e84 i2c, omap24xx: convert driver to new mutlibus/mutliadapter framework" I think because of the linker code added in this patch for omap-common/u-boot-spl.lds
. = ALIGN(4); .u_boot_list : { KEEP(*(SORT(.u_boot_list*_i2c_*))); } >.sram
If I comment out this code, u-boot comes up as usual. Tom/Heiko, can you give a pointer why this is causing the issue. Please correct me if I am wrong.
Those lines keep the i2c adapter information in the binary (see the lists created in the driver now) so that omap3_beagle for example works. I think we need some further digging going on here.
After digging more into it, I observed few points Currently the Section memory map is like below. Section size start end .text 00005db0 40304350 4030a100 .rodata 000022a5 4030a100 4030c3a5 .data 000007f8 4030c3a8 4030cba0 .u_boot_list 000000a0 4030cba0 4030cc40
But as per TRM, SRAM memory map is given as below: start end Down loadable Image 40300000 4030C000 Public Stack 4030c000 4030d000
Looks like our data and u_boot_list sections are overlapping with Public stack. I compared the section map when I comment out the u_boot_list section in linker script. Below shows the description: Section size start end .text 000055e8 40304350 40309938 .rodata 00001e07 40309938 4030b73f .data 000007f8 4030b740 4030bf38
This doesn't overlap with our Public stack.
So I did the follwoing change and tried CONFIG_SPL_TEXT_BASE to 0x40300000 CONFIG_SPL_MAX_SIZE to (0x4030C000 - CONFIG_SPL_TEXT_BASE)
Then I am able to come to u-boot prompt. I compared the sections also, no overlapping happens.
But the problem here is this change will not work on HS devices..:( Any suggestions ?
I think we're at the point where OMAP4 HS devices will need to be supported in a separate build from OMAP4 non-HS devices. There's ways forward for them still, I spent a bit hacking things out, but without removing functionality and I made it all fit again, mainly moving some strings to debug so we optimized them out, and ifndef'ing out some functions that we discarded, but had strings that we couldn't drop :(
So lets correct the MAX_SIZE and move TEXT_BASE down to the non-HS limit, and if people need OMAP4 HS devices working in mainline U-Boot we can start doing more re-factoring of files to work around the gcc strings issue.
Thanks Tom, Will post a patch for correcting MAX_SIZE and move TEXT_BASE.
Regards, Lokesh
participants (4)
-
Abraham V.
-
Chao Xu
-
Lokesh Vutla
-
Tom Rini