From: Horng-Shyang Liao <hs.liao-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
To: Daniel Kurtz <djkurtz-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Matthias Brugger
<matthias.bgg-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Sascha Hauer <s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
"open list:OPEN FIRMWARE AND..."
<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
"moderated list:ARM/Mediatek SoC support"
<linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
srv_heupstream
<srv_heupstream-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
Sascha Hauer <kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
Philipp Zabel <p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
Nicolas Boichat
<drinkcat-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
CK HU <ck.hu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
cawa cheng <cawa.cheng-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
Bibby Hsieh <bibby.hsieh-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
YT Shen <yt.shen-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
Daoyuan Huang
<daoyuan.huang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
Damon Chu <damon.chu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
Josh-YC Liu <josh-yc.liu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
Glory Hung <glory.hung-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
Subject: Re: [RFC 3/3] CMDQ: Mediatek CMDQ driver
Date: Fri, 29 Jan 2016 20:24:22 +0800 [thread overview]
Message-ID: <1454070262.7401.21.camel@mtksdaap41> (raw)
In-Reply-To: <CAGS+omBrEE21Xxh8hjcf32qfHJE0jJYvxGP6L1ihS6jcNbLvLQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
On Fri, 2016-01-29 at 16:42 +0800, Daniel Kurtz wrote:
> On Fri, Jan 29, 2016 at 3:39 PM, Horng-Shyang Liao <hs.liao-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> wrote:
> > Hi Dan,
> >
> > Many thanks for your comments and time.
> > I reply my plan inline.
> >
> >
> > On Thu, 2016-01-28 at 12:49 +0800, Daniel Kurtz wrote:
> >> Hi HS,
> >>
> >> Sorry for the delay. It is hard to find time to review a >3700 line
> >> driver :-o in detail....
> >>
> >> Some review comments inline, although I still do not completely
> >> understand how all that this driver does and how it works.
> >> I'll try to find time to go through this driver in detail again next
> >> time you post it for review.
> >>
> >> On Tue, Jan 19, 2016 at 9:14 PM, <hs.liao-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> wrote:
> >> > From: HS Liao <hs.liao-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
> >> >
> >> > This patch is first version of Mediatek Command Queue(CMDQ) driver. The
> >> > CMDQ is used to help read/write registers with critical time limitation,
> >> > such as updating display configuration during the vblank. It controls
> >> > Global Command Engine (GCE) hardware to achieve this requirement.
> >> > Currently, CMDQ only supports display related hardwares, but we expect
> >> > it can be extended to other hardwares for future requirements.
> >> >
> >> > Signed-off-by: HS Liao <hs.liao-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
> >>
> >> [snip]
> >>
> >> > diff --git a/drivers/soc/mediatek/mtk-cmdq.c b/drivers/soc/mediatek/mtk-cmdq.c
> >> > new file mode 100644
> >> > index 0000000..7570f00
> >> > --- /dev/null
> >> > +++ b/drivers/soc/mediatek/mtk-cmdq.c
[snip]
> >> > +static const struct cmdq_subsys g_subsys[] = {
> >> > + {0x1400, 1, "MMSYS"},
> >> > + {0x1401, 2, "DISP"},
> >> > + {0x1402, 3, "DISP"},
> >>
> >> This isn't going to scale. These addresses could be different on
> >> different chips.
> >> Instead of a static table like this, we probably need specify to the
> >> connection between gce and other devices via devicetree phandles, and
> >> then use the phandles to lookup the corresponding device address
> >> range.
> >
> > I will define them in device tree.
> > E.g.
> > cmdq {
> > reg_domain = 0x14000000, 0x14010000, 0x14020000
> > }
>
> The devicetree should only model hardware relationships, not software
> considerations.
>
> Is the hardware constraint here for using gce with various other
> hardware blocks? I think we already model this by only providing a
> gce phandle in the device tree nodes for those devices that can use
> gce.
>
> Looking at the driver closer, as far as I can tell, the whole subsys
> concept is a purely software abstraction, and only used to debug the
> CMDQ_CODE_WRITE command. In fact, AFAICT, everything would work fine
> if we just completely removed the 'subsys' concept, and just passed
> through the raw address provided by the driver.
>
> So, I recommend just removing 'subsys' completely from the driver -
> from this array, and in the masks.
>
> Instead, if there is an error on the write command, just print the
> address that fails. There are other ways to deduce the subsystem from
> a physical address.
>
> Thanks,
>
> -Dan
Hi Dan,
Subsys is not just for debug.
Its main purpose is to transfer CPU address to GCE address.
Let me explain it by "write" op,
I list a code segment from cmdq_rec_append_command().
case CMDQ_CODE_WRITE:
subsys = cmdq_subsys_from_phys_addr(cqctx, arg_a);
if (subsys < 0) {
dev_err(dev,
"unsupported memory base address 0x%08x\n",
arg_a);
return -EFAULT;
}
*cmd_ptr++ = arg_b;
*cmd_ptr++ = (CMDQ_CODE_WRITE << CMDQ_OP_CODE_SHIFT) |
(arg_a & CMDQ_ARG_A_WRITE_MASK) |
((subsys & CMDQ_SUBSYS_MASK) << CMDQ_SUBSYS_SHIFT);
break;
Subsys is mapped from physical address via cmdq_subsys_from_phys_addr(),
and then it becomes part of GCE command via ((subsys & CMDQ_SUBSYS_MASK)
<< CMDQ_SUBSYS_SHIFT) .
Only low bits of physical address are the same as GCE address.
We can get it by (arg_a & CMDQ_ARG_A_WRITE_MASK).
MASK is used to define how many bits are valid for this op.
So, GCE address = subsys + valid low bits.
That's why we need to know the mapping between the range of physical
address and subsys.
Please guide us a better way to code such requirement.
Thanks for your help.
Thanks,
HS Liao
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2016-01-29 12:24 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-20 5:14 [RFC 0/3] MT8173 CMDQ support hs.liao-NuS5LvNUpcJWk0Htik3J/w
[not found] ` <1453266881-16849-1-git-send-email-hs.liao-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
2016-01-20 5:14 ` [RFC 1/3] dt-bindings: soc: Add documentation for the MediaTek GCE unit hs.liao-NuS5LvNUpcJWk0Htik3J/w
[not found] ` <1453266881-16849-2-git-send-email-hs.liao-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
2016-01-20 16:38 ` Rob Herring
2016-01-22 3:38 ` Horng-Shyang Liao
2016-02-08 17:51 ` Matthias Brugger
2016-02-16 12:06 ` Horng-Shyang Liao
2016-01-20 5:14 ` [RFC 2/3] arm64: dts: mt8173: Add GCE node hs.liao-NuS5LvNUpcJWk0Htik3J/w
2016-01-20 5:14 ` [RFC 3/3] CMDQ: Mediatek CMDQ driver hs.liao-NuS5LvNUpcJWk0Htik3J/w
[not found] ` <1453266881-16849-4-git-send-email-hs.liao-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
2016-01-28 4:49 ` Daniel Kurtz
2016-01-29 7:39 ` Horng-Shyang Liao
2016-01-29 8:42 ` Daniel Kurtz
[not found] ` <CAGS+omBrEE21Xxh8hjcf32qfHJE0jJYvxGP6L1ihS6jcNbLvLQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-01-29 12:24 ` Horng-Shyang Liao [this message]
2016-01-29 13:15 ` Daniel Kurtz
[not found] ` <CAGS+omBhs7Ks7MVDsxHBBUdgF+0fmAa465HwvNiCzEe97Knt3Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-02-01 2:04 ` Horng-Shyang Liao
2016-02-01 4:15 ` Daniel Kurtz
[not found] ` <CAGS+omCzDisk2TfbDnWiXufWgUsCbhF_JFafaUazhSymX-MT_Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-02-01 6:20 ` Horng-Shyang Liao
2016-02-01 10:22 ` Daniel Kurtz
2016-02-02 6:48 ` Horng-Shyang Liao
2016-02-02 16:21 ` Daniel Kurtz
[not found] <8A0FDEEF9DBBD140A3857422D81DA20F867B19FD@mtkmbs01n1>
2016-02-03 6:02 ` FW: " Horng-Shyang Liao
2016-02-03 6:40 ` Daniel Kurtz
[not found] ` <CAGS+omABD93f3X0pfiFgaxa9Lob2txkJfUUomUvs+hiRkxSuHw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-02-26 9:00 ` Horng-Shyang Liao
2016-02-26 16:47 ` Daniel Kurtz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1454070262.7401.21.camel@mtksdaap41 \
--to=hs.liao-nus5lvnupcjwk0htik3j/w@public.gmane.org \
--cc=bibby.hsieh-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
--cc=cawa.cheng-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
--cc=ck.hu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
--cc=damon.chu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
--cc=daoyuan.huang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=djkurtz-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=drinkcat-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=glory.hung-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
--cc=josh-yc.liu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
--cc=kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=matthias.bgg-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
--cc=srv_heupstream-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
--cc=yt.shen-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).