[#4881] Error if one serial has hardware flow control and the other doesn't
Submitted By: Tom Parker
Open Date
2009-02-10 04:51:54 Close Date
2009-03-03 03:26:05
Priority:
Medium High Assignee:
Sonic Zhang
Status:
Closed Fixed In Release:
N/A
Found In Release:
snaps Release:
Category:
Drivers Board:
Custom
Processor:
BF537 Silicon Revision:
Is this bug repeatable?:
Yes Resolution:
Fixed
Uboot version or rev.:
2009.01-svn1658 Toolchain version or rev.:
2008r1
App binary format:
N/A
Summary: Error if one serial has hardware flow control and the other doesn't
Details:
I have a system where UART0 is configured with hardware flow control, but UART1 doesn't have it enabled. Attempting to access UART1 in this configuration results in the following error in dmesg:
<3>bfin-gpio: GPIO 0 is already reserved as Peripheral by bfin-uart !
<5>Stack from 0082bc7c:
<5> 0082bc88 00404dd6 00000003 00000000 0054051e 004079da 0082bcb4 00000000
<5> 00000003 00000000 0052686c 0113f2a0 005fa3f0 00000032 20515249 00003035
<5> 00427228 00526e50 0113f2e0 005fa3f0 00000032 0113f2e0 0054b748 0000ffff
<5> 22222222 22222222 004e1628 00427304 00000000 00000032 00000023 0054b748
<5> 00487a94 0054b7e8 0054b748 0000000b 00487fb8 0054b748 0054b748 00000001
<5> 0000000a 005fa3f0 009d4fe8 0101e3c0 0054b748 005fa3f0 0050b134 0054b748
<5>
<5>Call Trace:
<4>[<00485c16>] _uart_startup+0x56/0x178
<4>[<004865c8>] _uart_open+0x40/0x3e0
<4>[<0048661c>] _uart_open+0x94/0x3e0
<4>[<0047f1ce>] _init_dev+0x1fa/0x450
<4>[<004e1628>] ___mutex_unlock_slowpath+0x30/0xe8
<4>[<004815da>] _tty_open+0xf6/0x21c
<4>[<0043dab0>] ___path_lookup_intent_open+0x34/0x7c
<4>[<004375e4>] _chrdev_open+0x7c/0x134
<4>[<0043dc2c>] _open_namei+0x60/0x568
<4>[<00433fa2>] ___dentry_open+0x9e/0x188
<4>[<00437568>] _chrdev_open+0x0/0x134
<4>[<0043410c>] _nameidata_to_filp+0x30/0x3c
<4>[<00434152>] _do_filp_open+0x3a/0x44
<4>[<00408826>] _task_running_tick+0x102/0x278
<4>[<0043418e>] _do_sys_open+0x32/0xac
<4>[<0043ede4>] _sys_ioctl+0x28/0x50
<4>[<0043edbc>] _sys_ioctl+0x0/0x50
<4>[<00434224>] _sys_open+0x18/0x20
<4>[<0043420c>] _sys_open+0x0/0x20
<4>[<00418174>] _sys_setuid+0x0/0xc8
This is because the #ifdef's in bfin_serial_5xx.h are messed up. More specifically, they add/remove the uart_{rts,cts}_pin fields in bfin_serial_resources based on whether the particular port has rts/cts enabled, as opposed to when either port has it enabled.
The attached patches fix this against the 2008r1.5 tree and trunk
Follow-ups
--- Sonic Zhang 2009-02-10 05:20:00
Your patchs are either incomplete or wrong. Nowhere is CONFIG_SERIAL_BFIN_CTSRTS
defined.
--- Tom Parker 2009-02-10 05:24:43
In both trunk and the 2008r1.5 tree CONFIG_SERIAL_BFIN_CTSRTS
is defined earlier on in bfin_serial_5xx.h under the bit "#if
defined(CONFIG_BFIN_UART0_CTSRTS) || defined(CONFIG_BFIN_UART1_CTSRTS)"
--- Sonic Zhang 2009-02-10 05:43:41
Applied. Thanks.
--- Tom Parker 2009-03-03 06:05:50
Any plans on pushing this upstream? I see the core Linux kernel still appears to
have this bug...
--- Mike Frysinger 2009-03-03 13:51:11
please read the documentation
docs.blackfin.uclinux.org/doku.php?id=processes
docs.blackfin.uclinux.org/doku.php?id=linux-kernel:maintenace
Files
Changes
Commits
Dependencies
Duplicates
Associations
Tags
File Name File Type File Size Posted By
rtscts-trunk.patch text/x-diff 644 Tom Parker
rtscts-2008r1.5.patch text/x-diff 626 Tom Parker