brcmfmac: Transform compatible string for FW loading
The driver relies on the compatible string from DT to determine which FW configuration file it should load. The DTS spec allows for '/' as part of the compatible string. We change this to '-' so that we will still be able to load the config file, even when the compatible has a '/'. This fixes explicitly the firmware loading for "solidrun,cubox-i/q". Signed-off-by: Matthias Brugger <mbrugger@suse.com> Reviewed-by: Hans deGoede <hdegoede@redhat.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Link: https://lore.kernel.org/r/20200701112201.6449-1-matthias.bgg@kernel.org
This commit is contained in:
parent
2fa8085fc6
commit
29e354ebee
|
@ -17,7 +17,6 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
|
||||||
{
|
{
|
||||||
struct brcmfmac_sdio_pd *sdio = &settings->bus.sdio;
|
struct brcmfmac_sdio_pd *sdio = &settings->bus.sdio;
|
||||||
struct device_node *root, *np = dev->of_node;
|
struct device_node *root, *np = dev->of_node;
|
||||||
struct property *prop;
|
|
||||||
int irq;
|
int irq;
|
||||||
u32 irqf;
|
u32 irqf;
|
||||||
u32 val;
|
u32 val;
|
||||||
|
@ -25,8 +24,22 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
|
||||||
/* Set board-type to the first string of the machine compatible prop */
|
/* Set board-type to the first string of the machine compatible prop */
|
||||||
root = of_find_node_by_path("/");
|
root = of_find_node_by_path("/");
|
||||||
if (root) {
|
if (root) {
|
||||||
prop = of_find_property(root, "compatible", NULL);
|
int i, len;
|
||||||
settings->board_type = of_prop_next_string(prop, NULL);
|
char *board_type;
|
||||||
|
const char *tmp;
|
||||||
|
|
||||||
|
of_property_read_string_index(root, "compatible", 0, &tmp);
|
||||||
|
|
||||||
|
/* get rid of '/' in the compatible string to be able to find the FW */
|
||||||
|
len = strlen(tmp) + 1;
|
||||||
|
board_type = devm_kzalloc(dev, len, GFP_KERNEL);
|
||||||
|
strscpy(board_type, tmp, len);
|
||||||
|
for (i = 0; i < board_type[i]; i++) {
|
||||||
|
if (board_type[i] == '/')
|
||||||
|
board_type[i] = '-';
|
||||||
|
}
|
||||||
|
settings->board_type = board_type;
|
||||||
|
|
||||||
of_node_put(root);
|
of_node_put(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue