Using driver_data for new sysreset driver binding. Signed-off-by: Kever Yang <kever.y...@rock-chips.com> ---
drivers/clk/rockchip/clk_rk3036.c | 15 +++++++++++++-- drivers/clk/rockchip/clk_rk3188.c | 16 ++++++++++++++-- drivers/clk/rockchip/clk_rk322x.c | 15 +++++++++++++-- drivers/clk/rockchip/clk_rk3288.c | 15 +++++++++++++-- drivers/clk/rockchip/clk_rk3328.c | 16 ++++++++++++++-- drivers/clk/rockchip/clk_rk3368.c | 15 +++++++++++++-- drivers/clk/rockchip/clk_rk3399.c | 15 +++++++++++++-- drivers/clk/rockchip/clk_rv1108.c | 15 +++++++++++++-- 8 files changed, 106 insertions(+), 16 deletions(-) diff --git a/drivers/clk/rockchip/clk_rk3036.c b/drivers/clk/rockchip/clk_rk3036.c index 83f4ae6..5d7556f 100644 --- a/drivers/clk/rockchip/clk_rk3036.c +++ b/drivers/clk/rockchip/clk_rk3036.c @@ -330,11 +330,22 @@ static int rk3036_clk_probe(struct udevice *dev) static int rk3036_clk_bind(struct udevice *dev) { int ret; + struct udevice *sys_child; + struct driver *sysreset_drv; + struct sysreset_reg *drv_data = malloc(sizeof(struct sysreset_reg)); + + sysreset_drv = lists_driver_lookup_name("rockchip_sysreset"); + drv_data->glb_srst_fst_value = offsetof(struct rk3036_cru, + cru_glb_srst_fst_value); + drv_data->glb_srst_snd_value = offsetof(struct rk3036_cru, + cru_glb_srst_snd_value); /* The reset driver does not have a device node, so bind it here */ - ret = device_bind_driver(gd->dm_root, "rk3036_sysreset", "reset", &dev); + ret = device_bind_with_driver_data(dev, sysreset_drv, + "rockchip_sysreset", drv_data, + ofnode_null(), &sys_child); if (ret) - debug("Warning: No RK3036 reset driver: ret=%d\n", ret); + debug("Warning: No sysreset driver: ret=%d\n", ret); return 0; } diff --git a/drivers/clk/rockchip/clk_rk3188.c b/drivers/clk/rockchip/clk_rk3188.c index 8c2c9bc..5740e33 100644 --- a/drivers/clk/rockchip/clk_rk3188.c +++ b/drivers/clk/rockchip/clk_rk3188.c @@ -573,11 +573,23 @@ static int rk3188_clk_probe(struct udevice *dev) static int rk3188_clk_bind(struct udevice *dev) { int ret; + struct udevice *sys_child; + struct driver *sysreset_drv; + struct sysreset_reg *drv_data = malloc(sizeof(struct sysreset_reg)); + + sysreset_drv = lists_driver_lookup_name("rockchip_sysreset"); + drv_data->glb_srst_fst_value = offsetof(struct rk3188_cru, + cru_glb_srst_fst_value); + drv_data->glb_srst_snd_value = offsetof(struct rk3188_cru, + cru_glb_srst_snd_value); /* The reset driver does not have a device node, so bind it here */ - ret = device_bind_driver(gd->dm_root, "rk3188_sysreset", "reset", &dev); + ret = device_bind_with_driver_data(dev, sysreset_drv, + "rockchip_sysreset", + drv_data, ofnode_null(), + &sys_child); if (ret) - debug("Warning: No rk3188 reset driver: ret=%d\n", ret); + debug("Warning: No sysreset driver: ret=%d\n", ret); return 0; } diff --git a/drivers/clk/rockchip/clk_rk322x.c b/drivers/clk/rockchip/clk_rk322x.c index e87267d..36750a2 100644 --- a/drivers/clk/rockchip/clk_rk322x.c +++ b/drivers/clk/rockchip/clk_rk322x.c @@ -385,11 +385,22 @@ static int rk322x_clk_probe(struct udevice *dev) static int rk322x_clk_bind(struct udevice *dev) { int ret; + struct udevice *sys_child; + struct driver *sysreset_drv; + struct sysreset_reg *drv_data = malloc(sizeof(struct sysreset_reg)); + + sysreset_drv = lists_driver_lookup_name("rockchip_sysreset"); + drv_data->glb_srst_fst_value = offsetof(struct rk322x_cru, + cru_glb_srst_fst_value); + drv_data->glb_srst_snd_value = offsetof(struct rk322x_cru, + cru_glb_srst_snd_value); /* The reset driver does not have a device node, so bind it here */ - ret = device_bind_driver(gd->dm_root, "rk322x_sysreset", "reset", &dev); + ret = device_bind_with_driver_data(dev, sysreset_drv, + "rockchip_sysreset", drv_data, + ofnode_null(), &sys_child); if (ret) - debug("Warning: No RK322x reset driver: ret=%d\n", ret); + debug("Warning: No sysreset driver: ret=%d\n", ret); return 0; } diff --git a/drivers/clk/rockchip/clk_rk3288.c b/drivers/clk/rockchip/clk_rk3288.c index a133810..330991b 100644 --- a/drivers/clk/rockchip/clk_rk3288.c +++ b/drivers/clk/rockchip/clk_rk3288.c @@ -859,11 +859,22 @@ static int rk3288_clk_probe(struct udevice *dev) static int rk3288_clk_bind(struct udevice *dev) { int ret; + struct udevice *sys_child; + struct driver *sysreset_drv; + struct sysreset_reg *drv_data = malloc(sizeof(struct sysreset_reg)); + + sysreset_drv = lists_driver_lookup_name("rockchip_sysreset"); + drv_data->glb_srst_fst_value = offsetof(struct rk3288_cru, + cru_glb_srst_fst_value); + drv_data->glb_srst_snd_value = offsetof(struct rk3288_cru, + cru_glb_srst_snd_value); /* The reset driver does not have a device node, so bind it here */ - ret = device_bind_driver(gd->dm_root, "rk3288_sysreset", "reset", &dev); + ret = device_bind_with_driver_data(dev, sysreset_drv, + "rockchip_sysreset", drv_data, + ofnode_null(), &sys_child); if (ret) - debug("Warning: No RK3288 reset driver: ret=%d\n", ret); + debug("Warning: No sysreset driver: ret=%d\n", ret); return 0; } diff --git a/drivers/clk/rockchip/clk_rk3328.c b/drivers/clk/rockchip/clk_rk3328.c index 540d910..75a45a8 100644 --- a/drivers/clk/rockchip/clk_rk3328.c +++ b/drivers/clk/rockchip/clk_rk3328.c @@ -14,6 +14,7 @@ #include <asm/arch/cru_rk3328.h> #include <asm/arch/hardware.h> #include <asm/io.h> +#include <dm/device-internal.h> #include <dm/lists.h> #include <dt-bindings/clock/rk3328-cru.h> @@ -597,11 +598,22 @@ static int rk3328_clk_ofdata_to_platdata(struct udevice *dev) static int rk3328_clk_bind(struct udevice *dev) { int ret; + struct udevice *sys_child; + struct driver *sysreset_drv; + struct sysreset_reg *drv_data = malloc(sizeof(struct sysreset_reg)); + + sysreset_drv = lists_driver_lookup_name("rockchip_sysreset"); + drv_data->glb_srst_fst_value = offsetof(struct rk3328_cru, + glb_srst_fst_value); + drv_data->glb_srst_snd_value = offsetof(struct rk3328_cru, + glb_srst_snd_value); /* The reset driver does not have a device node, so bind it here */ - ret = device_bind_driver(gd->dm_root, "rk3328_sysreset", "reset", &dev); + ret = device_bind_with_driver_data(dev, sysreset_drv, + "rockchip_sysreset", drv_data, + ofnode_null(), &sys_child); if (ret) - printf("Warning: No RK3328 reset driver: ret=%d\n", ret); + debug("Warning: No sysreset driver: ret=%d\n", ret); return ret; } diff --git a/drivers/clk/rockchip/clk_rk3368.c b/drivers/clk/rockchip/clk_rk3368.c index 3661769..46351ce 100644 --- a/drivers/clk/rockchip/clk_rk3368.c +++ b/drivers/clk/rockchip/clk_rk3368.c @@ -526,11 +526,22 @@ static int rk3368_clk_ofdata_to_platdata(struct udevice *dev) static int rk3368_clk_bind(struct udevice *dev) { int ret; + struct udevice *sys_child; + struct driver *sysreset_drv; + struct sysreset_reg *drv_data = malloc(sizeof(struct sysreset_reg)); + + sysreset_drv = lists_driver_lookup_name("rockchip_sysreset"); + drv_data->glb_srst_fst_value = offsetof(struct rk3368_cru, + glb_srst_fst_val); + drv_data->glb_srst_snd_value = offsetof(struct rk3368_cru, + glb_srst_snd_val); /* The reset driver does not have a device node, so bind it here */ - ret = device_bind_driver(gd->dm_root, "rk3368_sysreset", "reset", &dev); + ret = device_bind_with_driver_data(dev, sysreset_drv, + "rockchip_sysreset", drv_data, + ofnode_null(), &sys_child); if (ret) - pr_err("bind RK3368 reset driver failed: ret=%d\n", ret); + debug("Warning: No sysreset driver: ret=%d\n", ret); return ret; } diff --git a/drivers/clk/rockchip/clk_rk3399.c b/drivers/clk/rockchip/clk_rk3399.c index f45bba4..6e4a8bb 100644 --- a/drivers/clk/rockchip/clk_rk3399.c +++ b/drivers/clk/rockchip/clk_rk3399.c @@ -1032,11 +1032,22 @@ static int rk3399_clk_ofdata_to_platdata(struct udevice *dev) static int rk3399_clk_bind(struct udevice *dev) { int ret; + struct udevice *sys_child; + struct driver *sysreset_drv; + struct sysreset_reg *drv_data = malloc(sizeof(struct sysreset_reg)); + + sysreset_drv = lists_driver_lookup_name("rockchip_sysreset"); + drv_data->glb_srst_fst_value = offsetof(struct rk3399_cru, + glb_srst_fst_value); + drv_data->glb_srst_snd_value = offsetof(struct rk3399_cru, + glb_srst_snd_value); /* The reset driver does not have a device node, so bind it here */ - ret = device_bind_driver(gd->dm_root, "rk3399_sysreset", "reset", &dev); + ret = device_bind_with_driver_data(dev, sysreset_drv, + "rockchip_sysreset", drv_data, + ofnode_null(), &sys_child); if (ret) - printf("Warning: No RK3399 reset driver: ret=%d\n", ret); + debug("Warning: No sysreset driver: ret=%d\n", ret); return 0; } diff --git a/drivers/clk/rockchip/clk_rv1108.c b/drivers/clk/rockchip/clk_rv1108.c index 55741c3..9432d45 100644 --- a/drivers/clk/rockchip/clk_rv1108.c +++ b/drivers/clk/rockchip/clk_rv1108.c @@ -223,11 +223,22 @@ static int rv1108_clk_probe(struct udevice *dev) static int rv1108_clk_bind(struct udevice *dev) { int ret; + struct udevice *sys_child; + struct driver *sysreset_drv; + struct sysreset_reg *drv_data = malloc(sizeof(struct sysreset_reg)); + + sysreset_drv = lists_driver_lookup_name("rockchip_sysreset"); + drv_data->glb_srst_fst_value = offsetof(struct rv1108_cru, + glb_srst_fst_val); + drv_data->glb_srst_snd_value = offsetof(struct rv1108_cru, + glb_srst_snd_val); /* The reset driver does not have a device node, so bind it here */ - ret = device_bind_driver(gd->dm_root, "rv1108_sysreset", "reset", &dev); + ret = device_bind_with_driver_data(dev, sysreset_drv, + "rockchip_sysreset", drv_data, + ofnode_null(), &sys_child); if (ret) - pr_err("No Rv1108 reset driver: ret=%d\n", ret); + debug("Warning: No sysreset driver: ret=%d\n", ret); return 0; } -- 1.9.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot