[U-Boot] [PATCH v2 1/7] dm: cache: Add enable and disable ops for cache uclass
Rick Chen
rickchen36 at gmail.com
Wed Jul 17 07:33:27 UTC 2019
Hi Bin
>
> On Tue, Jul 9, 2019 at 5:33 PM Andes <uboot at andestech.com> wrote:
> >
> > From: Rick Chen <rick at andestech.com>
> >
> > The L2 cache will be enabled in init flow of dm cache
> > driver when it detect L2 node in dtb.
> >
> > When U-Boot jump to Linux Kernel, the disable ops will
>
> jumps
>
> > be called to flush and disable the L2 cache via the dm
> > cache driver.
> >
> > Signed-off-by: Rick Chen <rick at andestech.com>
> > Cc: KC Lin <kclin at andestech.com>
> > ---
> > drivers/cache/cache-uclass.c | 20 ++++++++++++++++++++
> > include/cache.h | 31 +++++++++++++++++++++++++++++++
> > test/dm/cache.c | 2 ++
> > 3 files changed, 53 insertions(+)
> >
> > diff --git a/drivers/cache/cache-uclass.c b/drivers/cache/cache-uclass.c
> > index 97ce024..3b20a10 100644
> > --- a/drivers/cache/cache-uclass.c
> > +++ b/drivers/cache/cache-uclass.c
> > @@ -17,6 +17,26 @@ int cache_get_info(struct udevice *dev, struct cache_info *info)
> > return ops->get_info(dev, info);
> > }
> >
> > +int cache_enable(struct udevice *dev)
> > +{
> > + struct cache_ops *ops = cache_get_ops(dev);
> > +
> > + if (!ops->enable)
> > + return -ENOSYS;
> > +
> > + return ops->enable(dev);
> > +}
> > +
> > +int cache_disable(struct udevice *dev)
> > +{
> > + struct cache_ops *ops = cache_get_ops(dev);
> > +
> > + if (!ops->disable)
> > + return -ENOSYS;
> > +
> > + return ops->disable(dev);
> > +}
> > +
> > UCLASS_DRIVER(cache) = {
> > .id = UCLASS_CACHE,
> > .name = "cache",
> > diff --git a/include/cache.h b/include/cache.h
> > index c6334ca..32f59fd 100644
> > --- a/include/cache.h
> > +++ b/include/cache.h
> > @@ -22,6 +22,22 @@ struct cache_ops {
> > * @return 0 if OK, -ve on error
> > */
> > int (*get_info)(struct udevice *dev, struct cache_info *info);
> > +
> > + /**
> > + * enable() - Enable cache
> > + *
> > + * @dev: Device to check (UCLASS_CACHE)
> > + * @return 0 if OK, -ve on error
> > + */
> > + int (*enable)(struct udevice *dev);
> > +
> > + /**
> > + * disable() - Flush and disable cache
> > + *
> > + * @dev: Device to check (UCLASS_CACHE)
> > + * @return 0 if OK, -ve on error
> > + */
> > + int (*disable)(struct udevice *dev);
> > };
> >
> > #define cache_get_ops(dev) ((struct cache_ops *)(dev)->driver->ops)
> > @@ -35,4 +51,19 @@ struct cache_ops {
> > */
> > int cache_get_info(struct udevice *dev, struct cache_info *info);
> >
> > +/**
> > + * cache_enable() - Enable cache
> > + *
> > + * @dev: Device to check (UCLASS_CACHE)
> > + * @return 0 if OK, -ve on error
> > + */
> > +int cache_enable(struct udevice *dev);
> > +
> > +/**
> > + * cache_disable() - Flush and disable cache
> > + *
> > + * @dev: Device to check (UCLASS_CACHE)
> > + * @return 0 if OK, -ve on error
> > + */
> > +int cache_disable(struct udevice *dev);
> > #endif
> > diff --git a/test/dm/cache.c b/test/dm/cache.c
>
> Please separate the test case changes in another patch, together with
> sandbox_cache.c changes. (see below)
OK
I will separate it.
>
> > index d4144aa..2e244b1 100644
> > --- a/test/dm/cache.c
> > +++ b/test/dm/cache.c
> > @@ -14,6 +14,8 @@ static int dm_test_reset(struct unit_test_state *uts)
> >
> > ut_assertok(uclass_get_device(UCLASS_CACHE, 0, &dev_cache));
> > ut_assertok(cache_get_info(dev, &info));
> > + ut_assertok(cache_enable(dev));
> > + ut_assertok(cache_disable(dev));
>
> This can't be passed as you did not update sandbox_cache.c to add the
> enable/disable OP.
OK
I will update sandbox_cache.c .
Thanks
Rick
>
> >
> > return 0;
>
> Regards,
> Bin
More information about the U-Boot
mailing list