diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2017-03-13 08:16:44 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2017-03-13 08:16:44 +0100 |
commit | a2e3bad25f6033e35e7a0f729cbd164d2d079c17 (patch) | |
tree | 672c3249ae6505d252011184072a04debd591964 /drivers | |
parent | 6134116686ea7ecd3e29db3ab40e4eac837680c3 (diff) | |
parent | e8fab18835a1ba23c5c71c35c76effcd9d4d7f56 (diff) | |
download | barebox-a2e3bad25f6033e35e7a0f729cbd164d2d079c17.tar.gz barebox-a2e3bad25f6033e35e7a0f729cbd164d2d079c17.tar.xz |
Merge branch 'for-next/rpi'
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/clocksource/bcm2835.c | 35 | ||||
-rw-r--r-- | drivers/mci/mci-bcm2835.c | 9 |
2 files changed, 31 insertions, 13 deletions
diff --git a/drivers/clocksource/bcm2835.c b/drivers/clocksource/bcm2835.c index b5831d5f10..9130a4b14f 100644 --- a/drivers/clocksource/bcm2835.c +++ b/drivers/clocksource/bcm2835.c @@ -44,24 +44,33 @@ static int bcm2835_cs_probe(struct device_d *dev) { struct resource *iores; static struct clk *stc_clk; - u32 rate; + u32 rate = 0; int ret; - stc_clk = clk_get(dev, NULL); - if (IS_ERR(stc_clk)) { - ret = PTR_ERR(stc_clk); - dev_err(dev, "clock not found: %d\n", ret); - return ret; - } + /* try to read rate from DT property first */ + if (IS_ENABLED(CONFIG_OFTREE)) + of_property_read_u32(dev->device_node, "clock-frequency", + &rate); + + /* if rate is still empty, try to get rate from clk */ + if (!rate) { + stc_clk = clk_get(dev, NULL); + if (IS_ERR(stc_clk)) { + ret = PTR_ERR(stc_clk); + dev_err(dev, "clock not found: %d\n", ret); + return ret; + } + + ret = clk_enable(stc_clk); + if (ret) { + dev_err(dev, "clock failed to enable: %d\n", ret); + clk_put(stc_clk); + return ret; + } - ret = clk_enable(stc_clk); - if (ret) { - dev_err(dev, "clock failed to enable: %d\n", ret); - clk_put(stc_clk); - return ret; + rate = clk_get_rate(stc_clk); } - rate = clk_get_rate(stc_clk); iores = dev_request_mem_resource(dev, 0); if (IS_ERR(iores)) return PTR_ERR(iores); diff --git a/drivers/mci/mci-bcm2835.c b/drivers/mci/mci-bcm2835.c index c7a8cf972a..daf771934a 100644 --- a/drivers/mci/mci-bcm2835.c +++ b/drivers/mci/mci-bcm2835.c @@ -543,9 +543,18 @@ static int bcm2835_mci_probe(struct device_d *hw_dev) return mci_register(&host->mci); } +static __maybe_unused struct of_device_id bcm2835_mci_compatible[] = { + { + .compatible = "brcm,bcm2835-sdhci", + }, { + /* sentinel */ + } +}; + static struct driver_d bcm2835_mci_driver = { .name = "bcm2835_mci", .probe = bcm2835_mci_probe, + .of_compatible = DRV_OF_COMPAT(bcm2835_mci_compatible), }; static int bcm2835_mci_add(void) |