[PATCH 3/4] msm_serial: Make baud_code detection more dynamic
From: Bjorn Andersson <hidden>
Date: 2013-07-26 04:30:53
Also in:
linux-arm-msm, linux-serial, lkml
From: Bjorn Andersson <hidden>
Date: 2013-07-26 04:30:53
Also in:
linux-arm-msm, linux-serial, lkml
On Wed, Jul 24, 2013 at 10:37 AM, Stephen Boyd [off-list ref] wrote:
[snip]
+ unsigned int i, divisor;
+ const struct msm_baud_map *entry;
+ static const struct msm_baud_map table[] = {
+ { 1536, 0x00, 1 },
+ { 768, 0x11, 1 },
+ { 384, 0x22, 1 },
+ { 192, 0x33, 1 },
+ { 96, 0x44, 1 },
+ { 48, 0x55, 1 },
+ { 32, 0x66, 1 },
+ { 24, 0x77, 1 },
+ { 16, 0x88, 1 },
+ { 12, 0x99, 6 },
+ { 8, 0xaa, 6 },
+ { 6, 0xbb, 6 },
+ { 4, 0xcc, 6 },
+ { 3, 0xdd, 8 },
+ { 2, 0xee, 16 },
+ { 1, 0xff, 31 },
+ };
+
+ divisor = uart_get_divisor(port, baud);
+
+ for (i = 0, entry = table; i < ARRAY_SIZE(table); i++, entry++)
+ if (entry->divisor <= divisor)
+ break;
+
+ return entry; /* Default to smallest divider */Shouldn't matter, but you're not defaulting to the smallest divider. Your are defaulting to an undefined value, as `entry` will be off the array once i == ARRAY_SIZE(). Regards, Bjorn