Amlogic driver updates for v4.17
- socinfo: add more IDs for newer SoC detection - firmware: update init to use module_platform_driver_probe - soc: mix. VPU power controller fixes -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEe4dGDhaSf6n1v/EMWTcYmtP7xmUFAlqwThMACgkQWTcYmtP7 xmVekA//eggAtImxhKuH54lkypYjB9b/M4U+ZVq1JohKehy+3I3oynKHptuX22/V qAcC9om2kksPANdGh6V1l4xxCBQ/bBOzOoGneuM1v6TuTpPCOEqy9MVyKKhkqt9c ubN7DNd5N18APTtGDCwnbRv2PseWc0F0D0Bn3QerLuH9vlrQ8QISBZz8FUbOHzi7 ibHrX+MoWlShSFn5/9htELg9YlN0eqjl2GSLDW2AeifDVZ0RqhHAIrLUxucQxuNI tQdWEv9KL86k5nLdvKnqf5PZfWzWp0KZPKk+wA4EoFbgWE89S/v+jvih9l/Pnhl4 gMDUPQTv9JQKT+o85XCyRnB5+MVovO0i/KWE4qwJQsufQILVNnPdAAEpZzZzdfRf VpV2nMtoBFPTwhus4vgp9I0rkxXgTY3TuqOrNkVzyYySp7SW3Ic34380RJ/V2lQ8 C3DLQErz2x8B8BKtWbNZNKXIlb5KimSgM/MU5lnSBFZvJj7fCkGT9I2HM6FLIgh7 3OglzmNsdZhOkMI5E8Y3Q2r3UcXM2zLPQgMi9fDjL1z8TiXvO06NcRlLFLA7KI+O +NkgBCPuVAEuyfZQsD9HlwmbaMF4GMKY3VVAgn4R/8h/uyzmfI3nwBybmeJTvWST TRBkJ0Cw4LqxUPhJe51WpX2J5twn3sbuW32yMybxMsMlCbj5hv0= =5/NR -----END PGP SIGNATURE----- Merge tag 'amlogic-drivers' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic into next/drivers Pull "Amlogic driver updates for v4.17" from Kevin Hilman: - socinfo: add more IDs for newer SoC detection - firmware: update init to use module_platform_driver_probe - soc: mix. VPU power controller fixes * tag 'amlogic-drivers' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic: amlogic: meson-gx-socinfo: Update soc ids firmware: meson-sm: rework meson_sm_init to use module_platform_driver_probe meson-gx-socinfo: make local function meson_gx_socinfo_init static meson-mx-socinfo: Make local function meson_mx_socinfo_init() static soc: amlogic: meson-gx-pwrc-vpu: fix error on shutdown when domain is powered off soc: amlogic: meson-gx-pwrc-vpu: don't print error message on probe deferral
This commit is contained in:
commit
3262b82d0c
|
@ -17,8 +17,10 @@
|
|||
#include <linux/arm-smccc.h>
|
||||
#include <linux/bug.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/printk.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/sizes.h>
|
||||
|
@ -217,21 +219,11 @@ static const struct of_device_id meson_sm_ids[] = {
|
|||
{ /* sentinel */ },
|
||||
};
|
||||
|
||||
int __init meson_sm_init(void)
|
||||
static int __init meson_sm_probe(struct platform_device *pdev)
|
||||
{
|
||||
const struct meson_sm_chip *chip;
|
||||
const struct of_device_id *matched_np;
|
||||
struct device_node *np;
|
||||
|
||||
np = of_find_matching_node_and_match(NULL, meson_sm_ids, &matched_np);
|
||||
if (!np)
|
||||
return -ENODEV;
|
||||
|
||||
chip = matched_np->data;
|
||||
if (!chip) {
|
||||
pr_err("unable to setup secure-monitor data\n");
|
||||
goto out;
|
||||
}
|
||||
chip = of_match_device(meson_sm_ids, &pdev->dev)->data;
|
||||
|
||||
if (chip->cmd_shmem_in_base) {
|
||||
fw.sm_shmem_in_base = meson_sm_map_shmem(chip->cmd_shmem_in_base,
|
||||
|
@ -257,4 +249,11 @@ out_in_base:
|
|||
out:
|
||||
return -EINVAL;
|
||||
}
|
||||
device_initcall(meson_sm_init);
|
||||
|
||||
static struct platform_driver meson_sm_driver = {
|
||||
.driver = {
|
||||
.name = "meson-sm",
|
||||
.of_match_table = of_match_ptr(meson_sm_ids),
|
||||
},
|
||||
};
|
||||
module_platform_driver_probe(meson_sm_driver, meson_sm_probe);
|
||||
|
|
|
@ -184,7 +184,8 @@ static int meson_gx_pwrc_vpu_probe(struct platform_device *pdev)
|
|||
|
||||
rstc = devm_reset_control_array_get(&pdev->dev, false, false);
|
||||
if (IS_ERR(rstc)) {
|
||||
dev_err(&pdev->dev, "failed to get reset lines\n");
|
||||
if (PTR_ERR(rstc) != -EPROBE_DEFER)
|
||||
dev_err(&pdev->dev, "failed to get reset lines\n");
|
||||
return PTR_ERR(rstc);
|
||||
}
|
||||
|
||||
|
@ -224,7 +225,11 @@ static int meson_gx_pwrc_vpu_probe(struct platform_device *pdev)
|
|||
|
||||
static void meson_gx_pwrc_vpu_shutdown(struct platform_device *pdev)
|
||||
{
|
||||
meson_gx_pwrc_vpu_power_off(&vpu_hdmi_pd.genpd);
|
||||
bool powered_off;
|
||||
|
||||
powered_off = meson_gx_pwrc_vpu_get_power(&vpu_hdmi_pd);
|
||||
if (!powered_off)
|
||||
meson_gx_pwrc_vpu_power_off(&vpu_hdmi_pd.genpd);
|
||||
}
|
||||
|
||||
static const struct of_device_id meson_gx_pwrc_vpu_match_table[] = {
|
||||
|
|
|
@ -33,6 +33,10 @@ static const struct meson_gx_soc_id {
|
|||
{ "GXL", 0x21 },
|
||||
{ "GXM", 0x22 },
|
||||
{ "TXL", 0x23 },
|
||||
{ "TXLX", 0x24 },
|
||||
{ "AXG", 0x25 },
|
||||
{ "GXLX", 0x26 },
|
||||
{ "TXHD", 0x27 },
|
||||
};
|
||||
|
||||
static const struct meson_gx_package_id {
|
||||
|
@ -41,12 +45,18 @@ static const struct meson_gx_package_id {
|
|||
unsigned int pack_id;
|
||||
} soc_packages[] = {
|
||||
{ "S905", 0x1f, 0 },
|
||||
{ "S905H", 0x1f, 0x13 },
|
||||
{ "S905M", 0x1f, 0x20 },
|
||||
{ "S905D", 0x21, 0 },
|
||||
{ "S905X", 0x21, 0x80 },
|
||||
{ "S905W", 0x21, 0xa0 },
|
||||
{ "S905L", 0x21, 0xc0 },
|
||||
{ "S905M2", 0x21, 0xe0 },
|
||||
{ "S912", 0x22, 0 },
|
||||
{ "962X", 0x24, 0x10 },
|
||||
{ "962E", 0x24, 0x20 },
|
||||
{ "A113X", 0x25, 0x37 },
|
||||
{ "A113D", 0x25, 0x22 },
|
||||
};
|
||||
|
||||
static inline unsigned int socinfo_to_major(u32 socinfo)
|
||||
|
@ -97,7 +107,7 @@ static const char *socinfo_to_soc_id(u32 socinfo)
|
|||
return "Unknown";
|
||||
}
|
||||
|
||||
int __init meson_gx_socinfo_init(void)
|
||||
static int __init meson_gx_socinfo_init(void)
|
||||
{
|
||||
struct soc_device_attribute *soc_dev_attr;
|
||||
struct soc_device *soc_dev;
|
||||
|
|
|
@ -104,7 +104,7 @@ static const struct of_device_id meson_mx_socinfo_analog_top_ids[] = {
|
|||
{ /* sentinel */ }
|
||||
};
|
||||
|
||||
int __init meson_mx_socinfo_init(void)
|
||||
static int __init meson_mx_socinfo_init(void)
|
||||
{
|
||||
struct soc_device_attribute *soc_dev_attr;
|
||||
struct soc_device *soc_dev;
|
||||
|
|
Loading…
Reference in New Issue