public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Haojian Zhuang <haojian.zhuang@linaro.org>
To: Leif Lindholm <leif.lindholm@linaro.org>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: Re: [PATCH v2 edk-platforms 2/4] Platform/Hisilicon/HiKey960: enable virtual keyboard
Date: Wed, 9 May 2018 18:59:53 +0800	[thread overview]
Message-ID: <CAD6h2NQUWD4DkZOHuFXYwhMEFXsfeAKU3ODt1T663HC0ocjXrw@mail.gmail.com> (raw)
In-Reply-To: <20180502224959.pfynroenmayae3sy@bivouac.eciton.net>

On 3 May 2018 at 06:49, Leif Lindholm <leif.lindholm@linaro.org> wrote:
> On Thu, Mar 08, 2018 at 09:30:04PM +0800, Haojian Zhuang wrote:
>> Enable virtual keyboard on HiKey960 platform. The platform
>> driver read pattern from memory or GPIO pin. When the value
>> is matched, it simulates a hotkey that is used to adjust
>> sequence of boot options.
>
> This patch looks like it contains an awful lot more than described
> here. Can it be split up?
>
>> Cc: Leif Lindholm <leif.lindholm@linaro.org>
>> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>> Contributed-under: TianoCore Contribution Agreement 1.1
>> Signed-off-by: Haojian Zhuang <haojian.zhuang@linaro.org>
>> ---
>>  Platform/Hisilicon/HiKey960/HiKey960.dsc                |  10 +
>>  Platform/Hisilicon/HiKey960/HiKey960.fdf                |   7 +
>>  Platform/Hisilicon/HiKey960/HiKey960Dxe/HiKey960Dxe.inf |  54 +++
>>  Silicon/Hisilicon/Hi3660/Include/Hi3660.h               | 147 ++++++
>>  Silicon/Hisilicon/Hi3660/Include/Hkadc.h                |  66 +++
>>  Platform/Hisilicon/HiKey960/HiKey960Dxe/HiKey960Dxe.c   | 491 ++++++++++++++++++++
>>  6 files changed, 775 insertions(+)
>>
>> +STATIC
>> +VOID
>> +InitAdc (
>> +  VOID
>> +  )
>> +{
>> +  // reset hkadc
>> +  MmioWrite32 (CRG_PERRSTEN2, PERRSTEN2_HKADCSSI);
>> +  // wait a few clock cycles
>> +  MicroSecondDelay (2);
>> +  MmioWrite32 (CRG_PERRSTDIS2, PERRSTEN2_HKADCSSI);
>> +  MicroSecondDelay (2);
>> +  // enable hkadc clock
>> +  MmioWrite32 (CRG_PERDIS2, PEREN2_HKADCSSI);
>> +  MicroSecondDelay (2);
>> +  MmioWrite32 (CRG_PEREN2, PEREN2_HKADCSSI);
>> +  MicroSecondDelay (2);
>
> Why the need for a few clock cycles? Why was 2 chosen? Barriers needed?
>

Need to wait hardware stabilization. Barriers don't help at here.

>> +  Adcin1Remap = AdcinDataRemap (Adcin1);
>> +  DEBUG ((DEBUG_INFO, "[BDID]Adcin1Remap:%d\n", Adcin1Remap));
>> +  if (Adcin1Remap == BOARDID_UNKNOW) {
>> +    return EFI_INVALID_PARAMETER;
>> +  }
>> +  // read ADC channel2 data
>> +  AdcGetValue (ADC_ADCIN2, &Adcin2);
>> +  DEBUG ((DEBUG_INFO, "[BDID]Adcin2:%d\n", Adcin2));
>> +  Adcin2Remap = AdcinDataRemap (Adcin2);
>> +  DEBUG ((DEBUG_INFO, "[BDID]Adcin2Remap:%d\n", Adcin2Remap));
>> +  if (Adcin2Remap == BOARDID_UNKNOW) {
>> +    return EFI_INVALID_PARAMETER;
>> +  }
>> +  *Id = BOARDID3_BASE * 1000 + (Adcin2Remap * 100) + (Adcin1Remap * 10) + Adcin0Remap;
>
> 1) Please use parentheses consistently.
> 2) This is the only use of BOARDID3_BASE - why is it being multiplied?

It's used to generate the same prefix of board family.

> 3) What is the format of this ID? Is it described somewhere or is it
>    completely arbitrary?

BoardID is based on the voltage of a resistor. Since the resistor
value is fixed,
the BoardID is same on all HiKey960 platforms.

For example, BoardID v1 is different from BoardID v2. But the prefix is same.

> 4) What is the purpose of this Id? This function is used to populate
>    mBoardId, but that variable is not used anywhere.
>

It'll be used later. It will fill different DTB contents according to
different versions
of the HiKey960 platforms.

>> +  DEBUG ((DEBUG_INFO, "[BDID]boardid: %d\n", *Id));
>> +  return EFI_SUCCESS;
>> +}
>> +
>> +STATIC
>> +VOID
>> +InitSdCard (
>> +  IN VOID
>> +  )
>> +{
>> +  UINT32        Data;
>> +
>> +  // LDO16
>> +  Data = MmioRead32 (PMU_REG_BASE + (0x79 << 2)) & 7;
>> +  Data |= 6;
>> +  MmioWrite32 (PMU_REG_BASE + (0x79 << 2), Data);
>> +  MmioOr32 (PMU_REG_BASE + (0x78 << 2), 2);
>
> Please replace all live-coded values with #defines.

I'll try to replace the hard-coded values as I could. But I can't get everything
with document.

>
>> +  MicroSecondDelay (100);
>
> Why this delay?
> Does this need a barrier?
>

Barrier doesn't help. Just wait regulator stable.

>> +
>> +  // LDO9
>> +  Data = MmioRead32 (PMU_REG_BASE + (0x6b << 2)) & 7;
>> +  Data |= 5;
>> +  MmioWrite32 (PMU_REG_BASE + (0x6b << 2), Data);
>> +  MmioOr32 (PMU_REG_BASE + (0x6a << 2), 2);
>
> Please replace all live-coded values with #defines.
>
>> +  MicroSecondDelay (100);
>
> Why this delay?
> Does this need a barrier?
>

Barrier doesn't help. Just wait regulator stable.

Best Regards
Haojian


  reply	other threads:[~2018-05-09 10:59 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-08 13:30 [PATCH v2 edk-platforms 2/4] Platform/Hisilicon/HiKey960: enable virtual keyboard Haojian Zhuang
2018-05-02 22:49 ` Leif Lindholm
2018-05-09 10:59   ` Haojian Zhuang [this message]
2018-05-09 13:32     ` Leif Lindholm
  -- strict thread matches above, loose matches on Subject: below --
2018-03-08 13:35 [PATCH v2 edk-platforms 0/4] enable virtual keyboards on hikey Haojian Zhuang
2018-03-08 13:35 ` [PATCH v2 edk-platforms 2/4] Platform/Hisilicon/HiKey960: enable virtual keyboard Haojian Zhuang

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-list 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=CAD6h2NQUWD4DkZOHuFXYwhMEFXsfeAKU3ODt1T663HC0ocjXrw@mail.gmail.com \
    --to=devel@edk2.groups.io \
    /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