| From: Russell King <rmk+kernel@armlinux.org.uk> |
| Date: Thu, 19 Dec 2019 23:24:47 +0000 |
| Subject: 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: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| include/linux/mod_devicetable.h | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/include/linux/mod_devicetable.h |
| +++ b/include/linux/mod_devicetable.h |
| @@ -497,9 +497,9 @@ struct platform_device_id { |
| |
| #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, \ |