| From 97d0b221d400d3ad0e2406303a82cabc28bc1da2 Mon Sep 17 00:00:00 2001 |
| From: Russell King <rmk+kernel@armlinux.org.uk> |
| Date: Thu, 19 Dec 2019 23:24:47 +0000 |
| Subject: [PATCH] mod_devicetable: fix PHY module format |
| |
| commit d2ed49cf6c13e379c5819aa5ac20e1f9674ebc89 upstream. |
| |
| When a PHY is probed, if the top bit is set, we end up requesting a |
| module with the string "mdio:-10101110000000100101000101010001" - |
| the top bit is printed to a signed -1 value. This leads to the module |
| not being loaded. |
| |
| Fix the module format string and the macro generating the values for |
| it to ensure that we only print unsigned types and the top bit is |
| always 0/1. We correctly end up with |
| "mdio:10101110000000100101000101010001". |
| |
| Fixes: 8626d3b43280 ("phylib: Support phy module autoloading") |
| Reviewed-by: Andrew Lunn <andrew@lunn.ch> |
| Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> |
| Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h |
| index 448621c32e4d..770d9da3f300 100644 |
| --- a/include/linux/mod_devicetable.h |
| +++ b/include/linux/mod_devicetable.h |
| @@ -568,9 +568,9 @@ struct platform_device_id { |
| #define MDIO_NAME_SIZE 32 |
| #define MDIO_MODULE_PREFIX "mdio:" |
| |
| -#define MDIO_ID_FMT "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d" |
| +#define MDIO_ID_FMT "%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u" |
| #define MDIO_ID_ARGS(_id) \ |
| - (_id)>>31, ((_id)>>30) & 1, ((_id)>>29) & 1, ((_id)>>28) & 1, \ |
| + ((_id)>>31) & 1, ((_id)>>30) & 1, ((_id)>>29) & 1, ((_id)>>28) & 1, \ |
| ((_id)>>27) & 1, ((_id)>>26) & 1, ((_id)>>25) & 1, ((_id)>>24) & 1, \ |
| ((_id)>>23) & 1, ((_id)>>22) & 1, ((_id)>>21) & 1, ((_id)>>20) & 1, \ |
| ((_id)>>19) & 1, ((_id)>>18) & 1, ((_id)>>17) & 1, ((_id)>>16) & 1, \ |
| -- |
| 2.7.4 |
| |