lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Mon, 28 May 2018 18:36:45 +0530
From:   Jassi Brar <jassisinghbrar@...il.com>
To:     Samarth Parikh <samarth.parikh@....com>
Cc:     Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        Sudipto.Paul@....com, Arvind Chauhan <Arvind.Chauhan@....com>,
        Deepak.Pandey@....com, samarthp@...il.com,
        Sudeep Holla <Sudeep.Holla@....com>
Subject: Re: [PATCH v2] mailbox: arm_mhu: add support for mhuv2

On Thu, May 17, 2018 at 1:34 PM, Samarth Parikh <samarth.parikh@....com> wrote:
> ARM has launched a next version of MHU i.e. MHUv2 with its latest
> subsystems. The main change is that the MHUv2 is now a distributed IP
> with different peripheral views (registers) for the sender and receiver.
>
> Another main difference is that MHUv1 duplex channels are now split into
> simplex/half duplex in MHUv2.
>
Not sure what you mean. v1 too had separate rx, tx channels.
Is the MHUv2 spec available somewhere for me to have a look? If not,
please share the register map.

 MHUv2 has a configurable number of
> communication channels. There is a capability register (MSG_NO_CAP) to
> find out how many channels are available in a system.
>
> The register offsets have also changed for STAT, SET & CLEAR registers
> from 0x0, 0x8 & 0x10 in MHUv1 to 0x0, 0xC & 0x8 in MHUv2 respectively.
>
> 0x0    0x4  0x8  0xC             0x1F
> ------------------------....-----
> | STAT |    |    | SET |    |   |
> ------------------------....-----
>       Transmit Channel
>
> 0x0    0x4  0x8   0xC            0x1F
> ------------------------....-----
> | STAT |    | CLR |    |    |   |
> ------------------------....-----
>         Receive Channel
>
> The MHU controller can request the receiver to wake-up and once the
> request is removed, the receiver may go back to sleep, but the MHU
> itself does not actively puts a receiver to sleep.
>
> So, in order to wake-up the receiver when the sender wants to send data,
> the sender has to set ACCESS_REQUEST register first in order to wake-up
> receiver, state of which can be detected using ACCESS_READY register.
> ACCESS_REQUEST has an offset of 0xF88 & ACCESS_READY has an offset
> of 0xF8C and are accessible only on any sender channel.
>

> This patch adds necessary changes in a new file required to support the
> latest MHUv2 controller. This patch also need an update in DT binding for
> ARM MHUv2 as we need a second register base (tx base) which would be used
> as the send channel base.
>
Please submit the dt-bindings as well.

......

> +
> +#define MHU_V2_REG_STAT_OFS            0x0
> +#define MHU_V2_REG_CLR_OFS             0x8
> +#define MHU_V2_REG_SET_OFS             0xC
> +#define MHU_V2_REG_MSG_NO_CAP_OFS      0xF80
> +#define MHU_V2_REG_ACC_REQ_OFS         0xF88
> +#define MHU_V2_REG_ACC_RDY_OFS         0xF8C
> +
> +#define MHU_V2_LP_OFFSET               0x20
> +#define MHU_V2_HP_OFFSET               0x0
> +
 and the third channel please.

> +#define MHU_V2_CHANS                   3
> +
> +#define mbox_to_mhuv2_drv_data(c) container_of(c, struct mhuv2_drv_data, mbox)
> +
> +enum mhuv2_regs {
> +       MHU_V2_REG_STAT,
> +       MHU_V2_REG_SET,
> +       MHU_V2_REG_CLR,
> +       MHU_V2_REG_END
> +};
> +
> +enum mhuv2_access_regs {
> +       MHU_V2_REG_MSG_NO_CAP,
> +       MHU_V2_REG_ACC_REQ,
> +       MHU_V2_REG_ACC_RDY,
> +       MHU_V2_REG_ACC_END
> +};
> +
> +enum mhuv2_channels {
> +       MHU_V2_CHAN_LOW,
> +       MHU_V2_CHAN_HIGH,
> +       MHU_V2_CHAN_SEC,
> +       MHU_V2_CHAN_END
> +};
> +
These three are unused.


> +struct mhuv2_dev_data {
> +       int regs[MHU_V2_REG_END]; /* STAT, SET, CLEAR */
> +       int chans[MHU_V2_CHAN_END]; /* LP, HP, Sec */
> +       int acc_regs[MHU_V2_REG_ACC_END];
> +};
> +
This looks ugly and was the main reason I suggested separating out the
mhu-v2 from v1.
Please use MHU_V2_REG_xxx directly.

Thanks

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ