* [PATCH v5 23/23] phy: Add support for Qualcomm's USB HS phy
From: Peter Chen @ 2016-10-21 2:20 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <147700563857.2550.16732518381302920183@sboyd-linaro>
On Thu, Oct 20, 2016 at 04:20:38PM -0700, Stephen Boyd wrote:
> Quoting Stephen Boyd (2016-10-17 18:56:36)
> > +
> > +static int
> > +qcom_usb_hs_phy_vbus_notifier(struct notifier_block *nb, unsigned long event,
> > + void *ptr)
> > +{
> > + struct qcom_usb_hs_phy *uphy;
> > + int is_host;
> > + u8 addr;
> > +
> > + uphy = container_of(nb, struct qcom_usb_hs_phy, vbus_notify);
> > + is_host = extcon_get_cable_state_(uphy->id_edev, EXTCON_USB_HOST);
>
> Please don't apply this patch. This call now deadlocks on v4.9-rc1
> because of how extcon_get_cable_state_() now grabs a lock that is
> already held here when we're inside the notifier. It's not really
> required that we grab the lock in extcon there, but this has exposed a
> flaw in the logic anyway. We don't know if the id pin is going to toggle
> before or after this function is called, so we should really keep track
> of both vbus and id state in this driver and then do the same ulpi
> writes from two different notifiers for both vbus and id pin. We would
> be duplicating work sometimes, but that's pretty much the best solution
> I can come up with. Otherwise it's racy.
>
Why you need to care id status? If EXTCON_USB event has happened, and
event is true, you can set, otherwise, it is clear operation, that's
to say you may not need have id extcon phandle, do you think so?
--
Best Regards,
Peter Chen
^ permalink raw reply
* [PATCH v5 11/23] usb: chipidea: Emulate OTGSC interrupt enable path
From: Peter Chen @ 2016-10-21 2:14 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <147699579088.21058.4379586947317571921@sboyd-linaro>
On Thu, Oct 20, 2016 at 01:36:30PM -0700, Stephen Boyd wrote:
> Quoting Peter Chen (2016-10-20 03:10:18)
> > On Wed, Oct 19, 2016 at 11:55:29PM -0700, Stephen Boyd wrote:
> > > Quoting Peter Chen (2016-10-19 01:02:11)
> > > > On Tue, Oct 18, 2016 at 06:53:07PM -0700, Stephen Boyd wrote:
> > > > > If you're asking if I've made modifications to extcon-usb-gpio, then the
> > > > > answer is no. The branch on linaro.org git server from the cover-letter
> > > > > is the branch I've used to test this with. This patch is specifically to
> > > > > fix issues with that design on the db410c board that has only one pin
> > > > > for ID and vbus detection. It's the schematic that we've discussed in
> > > > > another thread.
> > > > >
> > > > > extcon-usb-gpio sends two extcon events, EXTCON_USB_HOST (for the id
> > > > > pin) and EXTCON_USB (for the vbus). So afaik it does support vbus
> > > > > events.
> > > > >
> > > >
> > > > Hmm, in fact, your ID event is the same with vbus event, you take
> > > > external vbus event as ID event for extcon-usb-gpio handling. Yes,
> > > > it can work due to it sends EXTCON_USB_HOST event first.
> > > >
> > > > Where you change the USB_SW_SEL_PM pin?
> > >
> > > Currently that is done with the mux driver I sent based on the extcon
> > > event. We don't know if that's before or after the controller handles
> > > the extcon event though, so the pin should probably be changed from the
> > > chipidea driver instead to be more explicit. Why do you ask though?
> >
> > I was just curious how you handle it, now I am clear. From my point,
> > the suitable way may be: mux driver + user app (echo role through
> > debugfs). The extcon-usb-gpio is not necessary, since you have already
> > known role at mux driver.
> >
> > The current kernel has no framework to handle dual-role switch at kernel
> > space.
>
> Ok. I'm planning that as future work after this set of patches is
> merged.
>
> > > > @@ -1963,6 +1963,8 @@ static int udc_id_switch_for_device(struct ci_hdrc *ci)
> > > > /* Clear and enable BSV irq */
> > > > hw_write_otgsc(ci, OTGSC_BSVIS | OTGSC_BSVIE,
> > > > OTGSC_BSVIS | OTGSC_BSVIE);
> > > > + /* vbus change may has already been occurred */
> > >
> > > "vbus change may have already occurred"?
> >
> > Yes, will change.
> >
>
> Great. Should I wait to incorporate your change into my series, or will
> you apply the usb patches and Kishon can apply the phy patches? This
> patch #11 should be dropped, but otherwise I don't think there's
> anything left to do for this series.
I tested my patch, it works well at my side, if it is ok for you, please
ack it, I will apply it as well as your chipidea series after your
gpu fix patch at greg's usb-next tree.
Is it ok for you?
--
Best Regards,
Peter Chen
^ permalink raw reply
* [PATCH V4 2/3] Revert "ACPI,PCI,IRQ: remove SCI penalize function"
From: Bjorn Helgaas @ 2016-10-21 1:58 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1476915664-27231-3-git-send-email-okaya@codeaurora.org>
On Wed, Oct 19, 2016 at 06:21:03PM -0400, Sinan Kaya wrote:
> The SCI penalize function was removed in two steps (first refactor
> and then remove) and these changes are reverted here in one go.
>
> The commit 103544d86976 ("ACPI,PCI,IRQ: reduce resource requirements")
> refactored the original code so that SCI penalty is calculated dynamically
> by the time get_penalty function is called. That change is partially
> reverted here, specifically for the SCI IRQ alone.
>
> The SCI penalize function was finally dropped by commit 9e5ed6d1fb87
> ("ACPI,PCI,IRQ: remove SCI penalize function") that replaced the old SCI
> penalty API with penalty calculation carried out dynamically and based
> on the acpi_gbl_FADT.sci_interrupt value.
>
> However, that new algorithm relies on the accurate setting of IRQ
> types and that doesn't happen early enough on some platforms which
> leads to incorrect penalty assignments for PCI IRQs. In those cases,
> irq_get_trigger_type() returns incorrect values for the IRQs in
> question, because they have not been registered yet by the time the
> penalties are calculated.
>
> To fix this problem, we only need to fix the penalty for the SCI interrupt.
> It seems better to add a single "sci_penalty" variable, set it to
> PIRQ_PENALTY_PCI_USING if it's level/low or PIRQ_PENALTY_ISA_ALWAYS
> otherwise, and add "sci_penalty" in when appropriate. That should fix it
> for *any* SCI IRQ, not just those less than 256, and we don't have to add
> these extra penalty table entries that are all unused (except possibly for
> one entry if we have an SCI in the 16-255 range).
>
> For this reason, revert commit 9e5ed6d1fb87 ("ACPI,PCI,IRQ: remove SCI
> penalize function") completely to restore the correct behavior.
I like this patch fine, except for the changelog. I don't think it's
useful to describe this as a revert and give all the historical
details. I think the important part is something like this:
We previously used irq_get_trigger_type(irq) to help compute the
penalty for the SCI, but that depends on the SCI having been
registered already. Add acpi_penalize_sci_irq() so platforms can
tell us the SCI IRQ, trigger, and polarity so we can compute the
penalty even before the SCI has been registered.
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> Link: https://lkml.org/lkml/2016/10/4/283
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> Fixes: commit 103544d86976 ("ACPI,PCI,IRQ: reduce resource requirements")
> Fixes: commit 9e5ed6d1fb87 ("ACPI,PCI,IRQ: remove SCI penalize function")
"commit" is redundant; it's sufficient to say:
Fixes: 103544d86976 ("ACPI,PCI,IRQ: reduce resource requirements")
In fact, I don't think you really need to include "commit" in the
reference to 9e5ed6d1fb87 above either.
> ---
> arch/x86/kernel/acpi/boot.c | 1 +
> drivers/acpi/pci_link.c | 30 +++++++++++++++---------------
> include/linux/acpi.h | 1 +
> 3 files changed, 17 insertions(+), 15 deletions(-)
>
> diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
> index 90d84c3..0ffd26e 100644
> --- a/arch/x86/kernel/acpi/boot.c
> +++ b/arch/x86/kernel/acpi/boot.c
> @@ -453,6 +453,7 @@ static void __init acpi_sci_ioapic_setup(u8 bus_irq, u16 polarity, u16 trigger,
> polarity = acpi_sci_flags & ACPI_MADT_POLARITY_MASK;
>
> mp_override_legacy_irq(bus_irq, polarity, trigger, gsi);
> + acpi_penalize_sci_irq(bus_irq, trigger, polarity);
>
> /*
> * stash over-ride to indicate we've been here
> diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
> index 4f37938..294b190 100644
> --- a/drivers/acpi/pci_link.c
> +++ b/drivers/acpi/pci_link.c
> @@ -87,6 +87,7 @@ struct acpi_pci_link {
>
> static LIST_HEAD(acpi_link_list);
> static DEFINE_MUTEX(acpi_link_lock);
> +static int sci_irq = -1, sci_penalty;
>
> /* --------------------------------------------------------------------------
> PCI Link Device Management
> @@ -496,25 +497,13 @@ static int acpi_irq_get_penalty(int irq)
> {
> int penalty = 0;
>
> - /*
> - * Penalize IRQ used by ACPI SCI. If ACPI SCI pin attributes conflict
> - * with PCI IRQ attributes, mark ACPI SCI as ISA_ALWAYS so it won't be
> - * use for PCI IRQs.
> - */
> - if (irq == acpi_gbl_FADT.sci_interrupt) {
> - u32 type = irq_get_trigger_type(irq) & IRQ_TYPE_SENSE_MASK;
> -
> - if (type != IRQ_TYPE_LEVEL_LOW)
> - penalty += PIRQ_PENALTY_ISA_ALWAYS;
> - else
> - penalty += PIRQ_PENALTY_PCI_USING;
> - }
> + if (irq == sci_irq)
> + penalty += sci_penalty;
>
> if (irq < ACPI_MAX_ISA_IRQS)
> return penalty + acpi_isa_irq_penalty[irq];
>
> - penalty += acpi_irq_pci_sharing_penalty(irq);
> - return penalty;
> + return penalty + acpi_irq_pci_sharing_penalty(irq);
> }
>
> int __init acpi_irq_penalty_init(void)
> @@ -881,6 +870,17 @@ bool acpi_isa_irq_available(int irq)
> acpi_irq_get_penalty(irq) < PIRQ_PENALTY_ISA_ALWAYS);
> }
>
> +void acpi_penalize_sci_irq(int irq, int trigger, int polarity)
> +{
> + sci_irq = irq;
> +
> + if (trigger == ACPI_MADT_TRIGGER_LEVEL &&
> + polarity == ACPI_MADT_POLARITY_ACTIVE_LOW)
> + sci_penalty = PIRQ_PENALTY_PCI_USING;
> + else
> + sci_penalty = PIRQ_PENALTY_ISA_ALWAYS;
> +}
> +
> /*
> * Over-ride default table to reserve additional IRQs for use by ISA
> * e.g. acpi_irq_isa=5
> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> index c5eaf2f..67d1d3e 100644
> --- a/include/linux/acpi.h
> +++ b/include/linux/acpi.h
> @@ -318,6 +318,7 @@ struct pci_dev;
> int acpi_pci_irq_enable (struct pci_dev *dev);
> void acpi_penalize_isa_irq(int irq, int active);
> bool acpi_isa_irq_available(int irq);
> +void acpi_penalize_sci_irq(int irq, int trigger, int polarity);
> void acpi_pci_irq_disable (struct pci_dev *dev);
>
> extern int ec_read(u8 addr, u8 *val);
> --
> 1.9.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply
* [PATCH 2/3] clk: hisilicon: add CRG driver for Hi3516CV300 SoC
From: Jiancheng Xue @ 2016-10-21 1:46 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20161020174805.GA26139@codeaurora.org>
? 2016/10/21 1:48, Stephen Boyd ??:
> On 10/19, Jiancheng Xue wrote:
>>
>> I'm pretty sure that the patch was sent to the DT list devicetree at vger.kernel.org.
>> You had asked a question about "hi3798cv200-sysctrl" and I replied (https://lkml.org/lkml/2016/10/10/517).
>> I'm waiting for your new comments. If there's some misunderstatnding, please let me know.
>>
>
> Are there two patch series that touch the same clk binding
> document? Can you please combine them and resend them if that's
> the case?
>
OK. I will resend this patch.
Thanks,
Jiancheng
^ permalink raw reply
* [PATCH V4 1/3] ACPI, PCI, IRQ: assign ISA IRQ directly during early boot stages
From: Bjorn Helgaas @ 2016-10-21 1:39 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1476915664-27231-2-git-send-email-okaya@codeaurora.org>
On Wed, Oct 19, 2016 at 06:21:02PM -0400, Sinan Kaya wrote:
> The penalty determination of ISA IRQ goes through 4 paths.
> 1. assign PCI_USING during power up via acpi_irq_penalty_init.
> 2. update the penalty with acpi_penalize_isa_irq function based on the
> active parameter.
> 3. kernel command line penalty update via acpi_irq_penalty_update function.
> 4. increment the penalty as USING right after the IRQ is assign to PCI.
>
> acpi_penalize_isa_irq and acpi_irq_penalty_update functions get called
> before the ACPI subsystem is started.
>
> These API need to bypass the acpi_irq_get_penalty function.
I don't mind this patch, but the changelog doesn't tell me what's
broken and why we need this fix. Apparently acpi_irq_get_penalty()
doesn't work before ACPI is initialized, but I don't see *why* it
wouldn't work.
However, I see one bug it *does* fix: we do not store the SCI penalty
in the acpi_isa_irq_penalty[] table because acpi_isa_irq_penalty[]
only holds ISA IRQ penalties, and there's no guarantee that the SCI is
an ISA IRQ. But prior to this patch, we added in the SCI penalty to
the acpi_isa_irq_penalty[] entry when the SCI was an ISA IRQ, which
makes acpi_irq_get_penalty() return the wrong thing. Consider:
Initially acpi_isa_irq_penalty[9] = 0.
Assume sci_interrupt = 9.
Then acpi_irq_get_penalty(9) returns X.
If we call acpi_penalize_isa_irq(9, 1),
it sets acpi_isa_irq_penalty[9] = X,
and now acpi_irq_get_penalty(9) returns X + X.
I'd propose a changelog like this:
We do not want to store the SCI penalty in the acpi_isa_irq_penalty[]
table because acpi_isa_irq_penalty[] only holds ISA IRQ penalties and
there's no guarantee that the SCI is an ISA IRQ. We add in the SCI
penalty as a special case in acpi_irq_get_penalty().
But if we called acpi_penalize_isa_irq() or acpi_irq_penalty_update()
for an SCI that happened to be an ISA IRQ, they stored the SCI
penalty (part of the acpi_irq_get_penalty() return value) in
acpi_isa_irq_penalty[]. Subsequent calls to acpi_irq_get_penalty()
returned a penalty that included *two* SCI penalties.
If this actually fixes a worse problem related to ACPI initialization,
of course you should detail that.
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> ---
> drivers/acpi/pci_link.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
> index c983bf7..4f37938 100644
> --- a/drivers/acpi/pci_link.c
> +++ b/drivers/acpi/pci_link.c
> @@ -849,7 +849,7 @@ static int __init acpi_irq_penalty_update(char *str, int used)
> continue;
>
> if (used)
> - new_penalty = acpi_irq_get_penalty(irq) +
> + new_penalty = acpi_isa_irq_penalty[irq] +
> PIRQ_PENALTY_ISA_USED;
> else
> new_penalty = 0;
> @@ -871,7 +871,7 @@ static int __init acpi_irq_penalty_update(char *str, int used)
> void acpi_penalize_isa_irq(int irq, int active)
> {
> if ((irq >= 0) && (irq < ARRAY_SIZE(acpi_isa_irq_penalty)))
> - acpi_isa_irq_penalty[irq] = acpi_irq_get_penalty(irq) +
> + acpi_isa_irq_penalty[irq] = acpi_isa_irq_penalty[irq] +
> (active ? PIRQ_PENALTY_ISA_USED : PIRQ_PENALTY_PCI_USING);
> }
>
> --
> 1.9.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply
* [PATCH v7 0/5] ARM: dts: imx6q: Add Engicam i.CoreM6 dts
From: Shawn Guo @ 2016-10-21 1:35 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <CAD6G_RQyLtgJw=djPTmY5t7UVwzuZpj0xM0HjchLQjq7P5hMOg@mail.gmail.com>
On Tue, Oct 18, 2016 at 05:30:28PM +0530, Jagan Teki wrote:
> Hi Shawn,
>
> On Fri, Oct 14, 2016 at 2:57 PM, Jagan Teki <jteki@openedev.com> wrote:
> > This is series add dts support for Engicam I.Core M6 qdl modules. just
> > rebased on top of linux-next of previous set[1].
> >
> > [1] http://www.spinics.net/lists/kernel/msg2358233.html
> >
> > Jagan Teki (5):
> > ARM: dts: imx6q: Add Engicam i.CoreM6 Quad/Dual initial support
> > ARM: dts: imx6q: Add Engicam i.CoreM6 DualLite/Solo initial support
> > ARM: dts: imx6qdl-icore: Add usbhost support
> > ARM: dts: imx6qdl-icore: Add usbotg support
> > ARM: dts: imx6qdl-icore: Add FEC support
> >
> > arch/arm/boot/dts/Makefile | 2 +
> > arch/arm/boot/dts/imx6dl-icore.dts | 59 ++++++++
> > arch/arm/boot/dts/imx6q-icore.dts | 59 ++++++++
> > arch/arm/boot/dts/imx6qdl-icore.dtsi | 271 +++++++++++++++++++++++++++++++++++
> > 4 files changed, 391 insertions(+)
> > create mode 100644 arch/arm/boot/dts/imx6dl-icore.dts
> > create mode 100644 arch/arm/boot/dts/imx6q-icore.dts
> > create mode 100644 arch/arm/boot/dts/imx6qdl-icore.dtsi
>
> Can you pick this series?
Sorry for the delay. The first two patches look good, and I had a
couple of small comments on the other 3. Also, for the initial board
support submission like this, you do not need to split it per device
support. That said, please squash the series into one patch when
resending.
Shawn
^ permalink raw reply
* [PATCH v3 0/8] PM / Domains: DT support for domain idle states & atomic PM domains
From: Lina Iyer @ 2016-10-21 1:33 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <CAJZ5v0iKuSWr8xVha7HZ764z+Xk_urP1XFVV-VZ5+JQTuSj-bw@mail.gmail.com>
On Fri, Oct 21 2016 at 16:48 -0600, Rafael J. Wysocki wrote:
>On Fri, Oct 21, 2016 at 12:44 AM, Lina Iyer <lina.iyer@linaro.org> wrote:
>> On Mon, Oct 17 2016 at 01:30 -0600, Ulf Hansson wrote:
>>>
>>> On 14 October 2016 at 19:47, Lina Iyer <lina.iyer@linaro.org> wrote:
>>>>
>>>> Hi all,
>>>>
>>>> Changes since v2 [3] -
>>>> - Addressed review comments from v2.
>>>> - domain-idle-states documentation updated
>>>> - fixed compiler issues with imx driver
>>>> - minor code change in pm_domains.c
>>>> - The series is available at [4].
>>>>
>>>> Changes since v1 [2] -
>>>> - Addressed review comments from v1.
>>>> - Fixes around dynamic allocation of genpd states
>>>> - Used OF method for iterating phandles
>>>> - Updated documentation, examples
>>>> - Rename state variable (provider -> fwnode)
>>>> - The series is available at [3].
>>>>
>>>> The changes from [1] are -
>>>> - Allocating memory for domain idle states dynamically
>>>> - Conform to naming conventions for internal and exported genpd functions
>>>> - DT binding example for domain-idle-state
>>>> - Use fwnode instead of of_node
>>>> - Handle atomic case for removal of PM Domain
>>>> - Rebase on top of Rafael's pm/genpd tree
>>>>
>>>> Thanks,
>>>> Lina
>>>>
>>>> Lina Iyer (8):
>>>> PM / Domains: Make genpd state allocation dynamic
>>>> PM / Domain: Add residency property to genpd states
>>>> PM / Domains: Allow domain power states to be read from DT
>>>> PM / Domains: Save the fwnode in genpd_power_state
>>>> dt/bindings: Update binding for PM domain idle states
>>>> PM / Domains: Abstract genpd locking
>>>> PM / Domains: Support IRQ safe PM domains
>>>> PM / doc: Update device documentation for devices in IRQ safe PM
>>>> domains
>>>>
>>>> .../devicetree/bindings/power/power_domain.txt | 43 +++
>>>> Documentation/power/devices.txt | 9 +-
>>>> arch/arm/mach-imx/gpc.c | 17 +-
>>>> drivers/base/power/domain.c | 358
>>>> +++++++++++++++++----
>>>> include/linux/pm_domain.h | 28 +-
>>>> 5 files changed, 383 insertions(+), 72 deletions(-)
>>>>
>>>
>>> Rafael, Lina,
>>>
>>> This looks good to me! Unless any other objections, I suggest to apply
>>> this to get it tested in linux-next.
>>>
>>> Kind regards
>>> Uffe
>>>
>> Rafael,
>>
>> If there are no objections, could you pick this patch for linux-next?
>
>It is in my queue, but not at the top yet.
>
Thank you Rafael.
-- Lina
>Thanks,
>Rafael
^ permalink raw reply
* [PATCH v7 5/5] ARM: dts: imx6qdl-icore: Add FEC support
From: Shawn Guo @ 2016-10-21 1:31 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1476437243-13297-6-git-send-email-jteki@openedev.com>
On Fri, Oct 14, 2016 at 02:57:23PM +0530, Jagan Teki wrote:
> From: Jagan Teki <jagan@amarulasolutions.com>
>
> Add FEC support for Engicam i.CoreM6 dql modules.
>
> Observed similar 'eth0: link is not ready' issue which was
> discussed in [1] due rmii mode with external ref_clk, so added
> clock node along with the properties mentioned by Shawn in [2]
>
> FEC link log:
> ------------
> $ ifconfig eth0 up
> [ 27.905187] SMSC LAN8710/LAN8720 2188000.ethernet:00: attached PHY driver
> [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=2188000.ethernet:00, irq=-1)
> [ 27.918982] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
>
> [1] https://patchwork.kernel.org/patch/3491061/
> [2] https://patchwork.kernel.org/patch/3490511/
>
> Cc: Sascha Hauer <kernel@pengutronix.de>
> Cc: Fabio Estevam <fabio.estevam@nxp.com>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: Matteo Lisi <matteo.lisi@engicam.com>
> Cc: Michael Trimarchi <michael@amarulasolutions.com>
> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
> ---
> Changes for v7:
> - none
> Changes for v6:
> - none
> Changes for v5:
> - new patch
>
> arch/arm/boot/dts/imx6qdl-icore.dtsi | 37 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 37 insertions(+)
>
> diff --git a/arch/arm/boot/dts/imx6qdl-icore.dtsi b/arch/arm/boot/dts/imx6qdl-icore.dtsi
> index 4e79858..972f48f 100644
> --- a/arch/arm/boot/dts/imx6qdl-icore.dtsi
> +++ b/arch/arm/boot/dts/imx6qdl-icore.dtsi
> @@ -48,6 +48,18 @@
> reg = <0x10000000 0x80000000>;
> };
>
> + clocks {
> + #address-cells = <1>;
> + #size-cells = <0>;
DT maintainers do not like this container node. So please, just like
fix regulator node, put the fixed clock directly under root and give the
node an unique name like clock-xxx.
> +
> + rmii_clk: clock at 0 {
> + compatible = "fixed-clock";
> + reg = <0>;
> + #clock-cells = <0>;
> + clock-frequency = <25000000>; /* 25MHz for example */
> + };
> + };
> +
> reg_3p3v: regulator-3p3v {
> compatible = "regulator-fixed";
> regulator-name = "3P3V";
> @@ -93,6 +105,15 @@
> assigned-clock-parents = <&clks IMX6QDL_CLK_OSC>;
> };
>
> +&fec {
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_enet>;
> + phy-reset-gpios = <&gpio7 12 GPIO_ACTIVE_LOW>;
> + clocks = <&clks 117>, <&clks 117>, <&rmii_clk>;
s/117/IMX6QDL_CLK_ENET
Shawn
> + phy-mode = "rmii";
> + status = "okay";
> +};
> +
> &gpmi {
> pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_gpmi_nand>;
> @@ -150,6 +171,22 @@
> };
>
> &iomuxc {
> + pinctrl_enet: enetgrp {
> + fsl,pins = <
> + MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN 0x1b0b0
> + MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x1b0b1
> + MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN 0x1b0b0
> + MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1 0x1b0b0
> + MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0 0x1b0b0
> + MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1 0x1b0b0
> + MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0 0x1b0b0
> + MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0
> + MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0
> + MX6QDL_PAD_ENET_REF_CLK__GPIO1_IO23 0x1b0b0
> + MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x1b0b0
> + >;
> + };
> +
> pinctrl_flexcan1: flexcan1grp {
> fsl,pins = <
> MX6QDL_PAD_KEY_ROW2__FLEXCAN1_RX 0x1b020
> --
> 2.7.4
>
^ permalink raw reply
* [PATCH v2] ARM: imx: gpc: Initialize all power domains
From: Fabio Estevam @ 2016-10-21 1:28 UTC (permalink / raw)
To: linux-arm-kernel
From: Fabio Estevam <fabio.estevam@nxp.com>
Since commit 0159ec670763dd ("PM / Domains: Verify the PM domain is present
when adding a provider") the following regression is observed on imx6:
imx-gpc: probe of 20dc000.gpc failed with error -22
The imx-gpc driver probe failure causes several issues such as:
- When booting a kernel built with multi_v7_defconfig a kernel crash is
seen.
- When booting a kernel built with imx_v6_v7_defconfig the Etnaviv GPU
driver is not loaded due to the lack of power domains.
The gpc probe fails because of_genpd_add_provider_onecell() now checks
if all the domains are initialized via pm_genpd_present() function
and it fails because not all the power domains are initialized.
In order to fix this error, initialize all the power domains from
imx_gpc_domains[], not only the imx6q_pu_domain.base one.
Reported-by: Olof's autobooter <build@lixom.net>
Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
---
arch/arm/mach-imx/gpc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-imx/gpc.c b/arch/arm/mach-imx/gpc.c
index 0df062d..d0463e9 100644
--- a/arch/arm/mach-imx/gpc.c
+++ b/arch/arm/mach-imx/gpc.c
@@ -430,7 +430,8 @@ static int imx_gpc_genpd_init(struct device *dev, struct regulator *pu_reg)
if (!IS_ENABLED(CONFIG_PM_GENERIC_DOMAINS))
return 0;
- pm_genpd_init(&imx6q_pu_domain.base, NULL, false);
+ for (i = 0; i < ARRAY_SIZE(imx_gpc_domains); i++)
+ pm_genpd_init(imx_gpc_domains[i], NULL, false);
return of_genpd_add_provider_onecell(dev->of_node,
&imx_gpc_onecell_data);
--
2.7.4
^ permalink raw reply related
* [PATCH v7 4/5] ARM: dts: imx6qdl-icore: Add usbotg support
From: Shawn Guo @ 2016-10-21 1:25 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1476437243-13297-5-git-send-email-jteki@openedev.com>
On Fri, Oct 14, 2016 at 02:57:22PM +0530, Jagan Teki wrote:
> From: Jagan Teki <jagan@amarulasolutions.com>
>
> Add usbotg support for Engicam i.CoreM6 dql modules.
>
> Cc: Sascha Hauer <kernel@pengutronix.de>
> Cc: Fabio Estevam <fabio.estevam@nxp.com>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: Matteo Lisi <matteo.lisi@engicam.com>
> Cc: Michael Trimarchi <michael@amarulasolutions.com>
> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
> ---
> Changes for v7:
> - none
> Changes for v6:
> - none
> Changes for v5:
> - none
> Changes for v4:
> - new patch
>
> arch/arm/boot/dts/imx6qdl-icore.dtsi | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/arch/arm/boot/dts/imx6qdl-icore.dtsi b/arch/arm/boot/dts/imx6qdl-icore.dtsi
> index ffec879..4e79858 100644
> --- a/arch/arm/boot/dts/imx6qdl-icore.dtsi
> +++ b/arch/arm/boot/dts/imx6qdl-icore.dtsi
> @@ -65,6 +65,15 @@
> regulator-boot-on;
> regulator-always-on;
> };
> +
> + reg_usb_otg_vbus: usb_otg_vbus {
Same as host patch, please fix the node name.
Shawn
> + compatible = "regulator-fixed";
> + regulator-name = "usb_otg_vbus";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + regulator-boot-on;
> + regulator-always-on;
> + };
> };
>
> &can1 {
> @@ -124,6 +133,14 @@
> status = "okay";
> };
>
> +&usbotg {
> + vbus-supply = <®_usb_otg_vbus>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_usbotg>;
> + disable-over-current;
> + status = "okay";
> +};
> +
> &usdhc1 {
> pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_usdhc1>;
> @@ -198,6 +215,12 @@
> >;
> };
>
> + pinctrl_usbotg: usbotggrp {
> + fsl,pins = <
> + MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
> + >;
> + };
> +
> pinctrl_usdhc1: usdhc1grp {
> fsl,pins = <
> MX6QDL_PAD_SD1_CMD__SD1_CMD 0x17070
> --
> 2.7.4
>
^ permalink raw reply
* [PATCH v7 3/5] ARM: dts: imx6qdl-icore: Add usbhost support
From: Shawn Guo @ 2016-10-21 1:21 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1476437243-13297-4-git-send-email-jteki@openedev.com>
On Fri, Oct 14, 2016 at 02:57:21PM +0530, Jagan Teki wrote:
> From: Jagan Teki <jagan@amarulasolutions.com>
>
> Add usbhost support for Engicam i.CoreM6 dql modules.
>
> Cc: Sascha Hauer <kernel@pengutronix.de>
> Cc: Fabio Estevam <fabio.estevam@nxp.com>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: Matteo Lisi <matteo.lisi@engicam.com>
> Cc: Michael Trimarchi <michael@amarulasolutions.com>
> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
> ---
> Changes for v7:
> - none
> Changes for v6:
> - none
> Changes for v5:
> - none
> Changes for v4:
> - new patch
>
> arch/arm/boot/dts/imx6qdl-icore.dtsi | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/arch/arm/boot/dts/imx6qdl-icore.dtsi b/arch/arm/boot/dts/imx6qdl-icore.dtsi
> index f424cd5..ffec879 100644
> --- a/arch/arm/boot/dts/imx6qdl-icore.dtsi
> +++ b/arch/arm/boot/dts/imx6qdl-icore.dtsi
> @@ -56,6 +56,15 @@
> regulator-boot-on;
> regulator-always-on;
> };
> +
> + reg_usb_h1_vbus: usb_h1_vbus {
Hyphen instead of underscore should be used in node name. Also please
name fixed regulator in the following schema:
reg_xxx: regulator-xxx {
...
};
Shawn
> + compatible = "regulator-fixed";
> + regulator-name = "usb_h1_vbus";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + regulator-boot-on;
> + regulator-always-on;
> + };
> };
>
> &can1 {
> @@ -109,6 +118,12 @@
> status = "okay";
> };
>
> +&usbh1 {
> + vbus-supply = <®_usb_h1_vbus>;
> + disable-over-current;
> + status = "okay";
> +};
> +
> &usdhc1 {
> pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_usdhc1>;
> --
> 2.7.4
>
^ permalink raw reply
* [PATCH] ARM: imx: gpc: Initialize all power domains
From: Fabio Estevam @ 2016-10-21 1:11 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <CAOMZO5CORjf_86-XBy+STd4sEhcus8y1G4B-n58h3KNyuVyEew@mail.gmail.com>
On Thu, Oct 20, 2016 at 3:29 PM, Fabio Estevam <festevam@gmail.com> wrote:
> Hi Shawn,
>
> On Wed, Oct 19, 2016 at 12:15 PM, Shawn Guo <shawnguo@kernel.org> wrote:
>
>> It's not clear to me why this is only with multi_v7_defconfig, not
>> imx_v6_v7_defconfig. Also, is it a regression or long-standing issue?
>
> Investigated this a bit further and the problem seems to be in the
> power domain driver.
>
> The change below fixes the problem on mx6:
>
> diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
> index e023066..461d03c 100644
> --- a/drivers/base/power/domain.c
> +++ b/drivers/base/power/domain.c
> @@ -1572,8 +1572,6 @@ int of_genpd_add_provider_onecell(struct device_node *np,
> for (i = 0; i < data->num_domains; i++) {
> if (!data->domains[i])
> continue;
> - if (!pm_genpd_present(data->domains[i]))
> - goto error;
>
> data->domains[i]->provider = &np->fwnode;
> data->domains[i]->has_provider = true;
>
> , will submit this to the power domain folks.
Actually the above change would go against:
Author: Jon Hunter <jonathanh@nvidia.com>
Date: Mon Sep 12 12:01:10 2016 +0100
PM / Domains: Verify the PM domain is present when adding a provider
When a PM domain provider is added, there is currently no way to tell if
any PM domains associated with the provider are present. Naturally, the
PM domain provider should not be registered if the PM domains have not
been added. Nonetheless, verify that the PM domain(s) associated with a
provider are present when registering the PM domain provider.
This change adds a dependency on the function pm_genpd_present() when
CONFIG_PM_GENERIC_DOMAINS_OF is enabled and so ensure this function is
available when CONFIG_PM_GENERIC_DOMAINS_OF selected.
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
,so it seems the original patch in this thread is correct.
I will update the commit log and submit a v2.
^ permalink raw reply
* [PATCH] kernel: irq: fix build failure
From: Stephen Rothwell @ 2016-10-21 1:00 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <alpine.DEB.2.20.1610201454410.5073@nanos>
Hi Thomas,
On Thu, 20 Oct 2016 14:55:45 +0200 (CEST) Thomas Gleixner <tglx@linutronix.de> wrote:
>
> On Mon, 10 Oct 2016, Sudip Mukherjee wrote:
>
> > On Thursday 06 October 2016 11:06 PM, Sudip Mukherjee wrote:
> > > The allmodconfig build of powerpc is failing with the error:
> > > ERROR: ".irq_set_parent" [drivers/mfd/tps65217.ko] undefined!
> > >
> > > export the symbol to fix the failure.
> >
> > Hi Thomas,
> > powerpc and arm allmodconfig builds still fails with the same error.
> > Build logs of next-20161010 are at:
> > arm at https://travis-ci.org/sudipm-mukherjee/parport/jobs/166321467
> > powerpc at https://travis-ci.org/sudipm-mukherjee/parport/jobs/166321473
>
> I know. This is under discussion with the driver folks as we are not going
> to blindly export stuff just because someone slapped a irq_set_parent()
> into the code w/o knowing why.
Do we have any idea if a resolution is close. This was first reported
in linux-next in September 14/15. :-(
--
Cheers,
Stephen Rothwell
^ permalink raw reply
* [PATCH V3 1/3] ACPI, PCI IRQ: add PCI_USING penalty for ISA interrupts
From: Bjorn Helgaas @ 2016-10-21 0:59 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <CAJZ5v0gE8uZ4NfuJVtuzkioJS0TpG2mvgJV3o3j0oM7WsVmh7w@mail.gmail.com>
On Thu, Oct 20, 2016 at 01:17:23AM +0200, Rafael J. Wysocki wrote:
> On Thu, Oct 20, 2016 at 12:44 AM, Bjorn Helgaas <helgaas@kernel.org> wrote:
> > On Tue, Oct 18, 2016 at 08:32:44AM -0700, Sinan Kaya wrote:
> >> Sorry, I think I didn't have enough morning coffee.
> >>
> >> Looking at these again and trying to be specific.
> >>
> >> On 10/18/2016 8:20 AM, Sinan Kaya wrote:
> >> > It seems wrong to me that we call acpi_irq_get_penalty() from
> >> >> acpi_irq_penalty_update() and acpi_penalize_isa_irq(). It seems like they
> >> >> should just manipulate acpi_isa_irq_penalty[irq] directly.
> >> >>
> >> >> acpi_irq_penalty_update() is for command-line parameters, so it certainly
> >> >> doesn't need the acpi_irq_pci_sharing_penalty() information (the
> >> >> acpi_link_list should be empty at the time we process the command-line
> >> >> parameters).
> >>
> >> Calling acpi_irq_get_penalty for ISA IRQ is OK as long as it doesn't have
> >> any dynamic IRQ calculation such that acpi_isa_irq_penalty[irq] = acpi_irq_get_penalty.
> >>
> >> If this is broken, then we need special care so that we don't assign
> >> dynamically calcualted sci_penalty back to acpi_isa_irq_penalty[irq]. This
> >> results in returning incorrect penalty as
> >>
> >> acpi_irq_get_penalty = acpi_isa_irq_original_penalty[irq] + 2 * sci_penalty.
> >>
> >> Now that we added sci_penalty into the acpi_irq_get_penalty function,
> >> calling acpi_irq_get_penalty is not correct anymore. This line here needs to
> >> be replaced with acpi_isa_irq_penalty[irq] as you suggested.
> >>
> >> if (used)
> >> new_penalty = acpi_irq_get_penalty(irq) +
> >> PIRQ_PENALTY_ISA_USED;
> >> else
> >> new_penalty = 0;
> >>
> >> acpi_isa_irq_penalty[irq] = new_penalty;
> >>
> >>
> >> >>
> >> >> acpi_penalize_isa_irq() is telling us that a PNP or ACPI device is using
> >> >> the IRQ -- this should modify the IRQ's penalty, but it shouldn't depend on
> >> >> the acpi_irq_pci_sharing_penalty() value at all.
> >> >>
> >>
> >> Same problem here. This line will be broken after the sci_penalty change.
> >>
> >> acpi_isa_irq_penalty[irq] = acpi_irq_get_penalty(irq) +
> >> (active ? PIRQ_PENALTY_ISA_USED : PIRQ_PENALTY_PCI_USING);
> >
> > I think the fragility of this code is an indication that we have a
> > design problem, so I want to step back from the nitty gritty details
> > for a bit and look at the overall design.
> >
> > Let me restate the overall problem: We have a PCI device connected to
> > an interrupt link. The interrupt link can be connected to one of
> > several IRQs, and we want to choose one of those IRQs to minimize IRQ
> > sharing.
> >
> > That means we need information about which IRQs are used.
> > Historically we've started with a compiled-in table of common ISA IRQ
> > usage, and we also collect information about which IRQs are used and
> > which *might* be used. So we have the following inputs:
> >
> > - Compiled-in ISA IRQ usage: the static acpi_isa_irq_penalty[]
> > values. ACPI is *supposed* to tell us about all these usages, so
> > I don't know why we have the table. But it's been there as long
> > as I can remember. The table is probably x86-specific, but we
> > keep it in the supposedly generic pci_link.c.
> >
> > - The "acpi_irq_isa=" and "acpi_irq_pci=" command-line overrides via
> > acpi_irq_pci(). I suppose these are for cases where we can't
> > figure things out automatically. I would resist adding parameters
> > like this today (I would treat the need for them as a bug and look
> > for a fix or a quirk), but we might be stuck with these.
> >
> > - SCI information from the ACPI FADT (acpi_penalize_sci_irq()).
> >
> > - PNPBIOS and PNPACPI device IRQ usage from _CRS and _PRS via
> > acpi_penalize_isa_irq(). This is only for IRQs 0-15, and it does
> > NOT include interrupt link (PNP0C0F) devices because we don't
> > handle them as PNPACPI devices. I think this is related to the
> > fact that PNP0C0F doesn't appear in acpi_pnp_device_ids[].
> >
> > - For non-PNP0C0F, non-PNPACPI devices, we completely ignore IRQ
> > information from _CRS and _PRS. This seems sub-optimal and
> > possibly buggy.
> >
> > - Interrupt link (PNP0C0F) IRQ usage from _CRS and _PRS via
> > acpi_irq_penalty_init(). This is only for IRQs 0-15, and we only
> > call this on x86. If _PRS exists, we penalize each possible IRQ.
> > If there's no _PRS but _CRS contains an active IRQ, we penalize
> > it.
> >
> > - Interrupt link (PNP0C0F) IRQ usage from _CRS and _PRS when
> > enabling a new link. In acpi_irq_pci_sharing_penalty(), we
> > penalize an IRQ if it appears in _CRS or _PRS of any link device
> > in the system.
> >
> > For IRQs 0-15, this overlaps with the penalization done at
> > boot-time by acpi_irq_penalty_init(): if a device has _PRS, we'll
> > add the "possible" penalty twice (once in acpi_irq_penalty_init()
> > and again in acpi_irq_pci_sharing_penalty()), and the "using"
> > penalty once (in acpi_irq_pci_sharing_penalty()).
> >
> > If a device has no _PRS but has _CRS, the "using" penalty is
> > applied twice (once in once in acpi_irq_penalty_init() and again
> > in acpi_irq_pci_sharing_penalty())
> >
> > I think this whole thing is baroque and grotesque.
>
> While I agree, I also would like the regression introduced here to be
> fixed ASAP.
>
> So do you want me to revert all of the changes made here so far and start over?
You're right, of course. We need to fix the regression first, then
worry about longer-term changes. I don't think we necessarily need to
fix *all* the issues with the current scheme, because most of them
have been there forever and I don't think people are tripping over
them.
Bjorn
^ permalink raw reply
* [PATCH 6/8] pinctrl: aspeed-g4: Capture SuperIO pinmux dependency
From: Andrew Jeffery @ 2016-10-21 0:33 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <CACRpkdYLDesENtq2cQBrWQeL6NH+mO_N5Z=e9=gsoZSCE85Jag@mail.gmail.com>
Hi Linus,
On Thu, 2016-10-20 at 13:53 +0200, Linus Walleij wrote:
> On Tue, Sep 27, 2016 at 4:50 PM, Andrew Jeffery <andrew@aj.id.au>
> wrote:
>
> >
> > Two LPC-related signals in the AST2400 depend on state in the
> > SuperIO IP
> > block. Use the recently added infrastructure to capture this
> > relationship.
> >
> > Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
> Patch applied for v4.10.
> (Tell me if I'm applying patches in wrong order or something, and
> I hope this doesn't clash with the fixes.)
Both this patch and 8/8 functionally depend on 5/8. I fetched the
pinctrl tree to poke around but this patch didn't appear in any of the
updated branches, so I'm not sure whether we have the right ordering.
Without it we should hit build failures from missing macro definitions.
Have you had a chance to look over patch 5/8? Joel wasn't keen on its
current form, so I would appreciate your input.
Cheers,
Andrew
>
> Yours,
> Linus Walleij
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20161021/07de7adc/attachment.sig>
^ permalink raw reply
* [linux-sunxi] [PATCH v5 3/4] Documentation: devicetree: add vendor prefix for Pine64
From: Jonathan Liu @ 2016-10-21 0:30 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <73852fb92ac0aeec294dc9883cf235d9fa74a07b.1476986335.git-series.maxime.ripard@free-electrons.com>
On 21 October 2016 at 05:00, Maxime Ripard
<maxime.ripard@free-electrons.com> wrote:
> From: Andre Przywara <andre.przywara@arm.com>
>
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> Acked-by: Rob Herring <robh@kernel.org>
> Acked-by: Chen-Yu Tsai <wens@csie.org>
> [Maxime: Change title prefix to match the usual style]
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
> Documentation/devicetree/bindings/vendor-prefixes.txt | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
> index f0a48ea78659..4eefd1c3ff16 100644
> --- a/Documentation/devicetree/bindings/vendor-prefixes.txt
> +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
> @@ -208,7 +208,7 @@ parade Parade Technologies Inc.
> pericom Pericom Technology Inc.
> phytec PHYTEC Messtechnik GmbH
> picochip Picochip Ltd
> -pixcir PIXCIR MICROELECTRONICS Co., Ltd
Why is "pixcir PIXCIR MICROELECTRONICS Co., Ltd" removed?
> +pine64 Pine64
> plathome Plat'Home Co., Ltd.
> plda PLDA
> powervr PowerVR (deprecated, use img)
> --
> git-series 0.8.10
Regards,
Jonathan
^ permalink raw reply
* [PATCH v2 3/4] arm64: dts: msm8996: Add SMEM DT nodes
From: Stephen Boyd @ 2016-10-21 0:04 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1477005139-15564-4-git-send-email-spjoshi@codeaurora.org>
On 10/20, Sarangdhar Joshi wrote:
> From: Bjorn Andersson <bjorn.andersson@linaro.org>
>
> Add SMEM and TCSR DT nodes on MSM8996.
>
> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> Signed-off-by: Sarangdhar Joshi <spjoshi@codeaurora.org>
> ---
> arch/arm64/boot/dts/qcom/msm8996.dtsi | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
> index 949b096..abc1089 100644
> --- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
> @@ -164,17 +164,36 @@
>
> };
>
> + tcsr_mutex: hwlock {
> + compatible = "qcom,tcsr-mutex";
> + syscon = <&tcsr_mutex_regs 0 0x1000>;
> + #hwlock-cells = <1>;
> + };
> +
> psci {
> compatible = "arm,psci-1.0";
> method = "smc";
> };
>
> + smem {
> + compatible = "qcom,smem";
> +
> + memory-region = <&smem_mem>;
> +
> + hwlocks = <&tcsr_mutex 3>;
Super nitpick: Is there a reason we have newlines between
everything in this node? This node is the only one that isn't
consistent.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply
* [PATCH 2/2] clk: mxs: don't register a clkdev for enet_out
From: Stephen Boyd @ 2016-10-20 23:50 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20161020075840.16406-2-u.kleine-koenig@pengutronix.de>
On 10/20, Uwe Kleine-K?nig wrote:
> The last user is gone in the previous commit. So this can be removed, too.
>
> Signed-off-by: Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>
> ---
Acked-by: Stephen Boyd <sboyd@codeaurora.org>
I'm fine if this goes through arm-soc if you want to bunch them
together. Otherwise just resend the patch once the ARM side
merges into some -rc1 and we can remove it in the next next
release.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply
* [PATCH v5 23/23] phy: Add support for Qualcomm's USB HS phy
From: Stephen Boyd @ 2016-10-20 23:20 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20161018015636.11701-24-stephen.boyd@linaro.org>
Quoting Stephen Boyd (2016-10-17 18:56:36)
> +
> +static int
> +qcom_usb_hs_phy_vbus_notifier(struct notifier_block *nb, unsigned long event,
> + void *ptr)
> +{
> + struct qcom_usb_hs_phy *uphy;
> + int is_host;
> + u8 addr;
> +
> + uphy = container_of(nb, struct qcom_usb_hs_phy, vbus_notify);
> + is_host = extcon_get_cable_state_(uphy->id_edev, EXTCON_USB_HOST);
Please don't apply this patch. This call now deadlocks on v4.9-rc1
because of how extcon_get_cable_state_() now grabs a lock that is
already held here when we're inside the notifier. It's not really
required that we grab the lock in extcon there, but this has exposed a
flaw in the logic anyway. We don't know if the id pin is going to toggle
before or after this function is called, so we should really keep track
of both vbus and id state in this driver and then do the same ulpi
writes from two different notifiers for both vbus and id pin. We would
be duplicating work sometimes, but that's pretty much the best solution
I can come up with. Otherwise it's racy.
^ permalink raw reply
* [PATCH] drm: convert DT component matching to component_match_add_release()
From: Sean Paul @ 2016-10-20 23:15 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20161020215022.GZ1041@n2100.armlinux.org.uk>
On Thu, Oct 20, 2016 at 5:50 PM, Russell King - ARM Linux
<linux@armlinux.org.uk> wrote:
> On Thu, Oct 20, 2016 at 04:39:04PM -0400, Sean Paul wrote:
>> On Wed, Oct 19, 2016 at 6:28 AM, Russell King
>> <rmk+kernel@armlinux.org.uk> wrote:
>> > Convert DT component matching to use component_match_add_release().
>> >
>> > Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
>> > ---
>> > Can we please get this patch from May merged into the drm-misc or
>> > whatever trees so that we don't end up with conflicts? I've no idea
>> > who looks after drm-misc, as they have _still_ failed to add
>> > themselves to MAINTAINERS.
>>
>> I think Daniel explained pretty clearly why this wasn't happening in
>> the previous thread.
>>
>> Next time you send a v2, can you please mark it as such and include a
>> "Changes in v2" section?
>
> Why - nothing's changed other than a rebase onto 4.9-rc1. This isn't
> a "I've changed it in XYZ way, so here's a new copy".
Changes in v2: None
Is still useful since:
a) the diffstat is different from v1, which necessitates me going
through both versions to see what's changed from the previous reviews
(only to find out myself that it's been rebased and a function has
changed names)
b) in June, you said you were going to roll a new version with the
common OF bits extracted. it's nice to know at the outset that this
has/hasn't happened
Also, prefacing the subject with [PATCH v2] or [PATCH RESEND] lets me
know there is prior history with the change. Reading the previous
version is helpful to see what reviewer's concerns were, and whether
they've been addressed.
> It's being
> posted in the hope that someone will finally either comment on it or
> merge the damn thing, rather than ignoring it was done when it was
> last posted.
>
>> > drivers/gpu/drm/arm/hdlcd_drv.c | 3 ++-
>> > drivers/gpu/drm/arm/malidp_drv.c | 4 +++-
>> > drivers/gpu/drm/armada/armada_drv.c | 2 +-
>> > drivers/gpu/drm/drm_of.c | 28 +++++++++++++++++++++++--
>> > drivers/gpu/drm/etnaviv/etnaviv_drv.c | 5 +++--
>> > drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 7 ++++---
>> > drivers/gpu/drm/mediatek/mtk_drm_drv.c | 4 +++-
>> > drivers/gpu/drm/msm/msm_drv.c | 12 ++++++-----
>> > drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 6 ++++--
>> > drivers/gpu/drm/sti/sti_drv.c | 5 +++--
>> > drivers/gpu/drm/sun4i/sun4i_drv.c | 3 ++-
>> > drivers/gpu/drm/tilcdc/tilcdc_external.c | 4 +++-
>> > include/drm/drm_of.h | 12 +++++++++++
>> > 13 files changed, 73 insertions(+), 22 deletions(-)
>> >
>> > diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
>> > index fb6a418ce6be..6477d1a65266 100644
>> > --- a/drivers/gpu/drm/arm/hdlcd_drv.c
>> > +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
>> > @@ -453,7 +453,8 @@ static int hdlcd_probe(struct platform_device *pdev)
>> > return -EAGAIN;
>> > }
>> >
>> > - component_match_add(&pdev->dev, &match, compare_dev, port);
>> > + drm_of_component_match_add(&pdev->dev, &match, compare_dev, port);
>> > + of_node_put(port);
>>
>> There's no mention in your commit message about fixing these node leaks.
>
> Isn't that kind-of the whole point of this patch?
>
Not according to the commit msg, it isn't.
You could have just done the of_node_put adds/relocations without
wrapping component_match_add_release.
Sean
>> >
>> > return component_master_add_with_match(&pdev->dev, &hdlcd_master_ops,
>> > match);
>> > diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
>> > index 9280358b8f15..9f4739452a25 100644
>> > --- a/drivers/gpu/drm/arm/malidp_drv.c
>> > +++ b/drivers/gpu/drm/arm/malidp_drv.c
>> > @@ -493,7 +493,9 @@ static int malidp_platform_probe(struct platform_device *pdev)
>> > return -EAGAIN;
>> > }
>> >
>> > - component_match_add(&pdev->dev, &match, malidp_compare_dev, port);
>> > + drm_of_component_match_add(&pdev->dev, &match, malidp_compare_dev,
>> > + port);
>> > + of_node_put(port);
>> > return component_master_add_with_match(&pdev->dev, &malidp_master_ops,
>> > match);
>> > }
>> > diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
>> > index 1e0e68f608e4..94e46da9a758 100644
>> > --- a/drivers/gpu/drm/armada/armada_drv.c
>> > +++ b/drivers/gpu/drm/armada/armada_drv.c
>> > @@ -254,7 +254,7 @@ static void armada_add_endpoints(struct device *dev,
>> > continue;
>> > }
>> >
>> > - component_match_add(dev, match, compare_of, remote);
>> > + drm_of_component_match_add(dev, match, compare_of, remote);
>> > of_node_put(remote);
>> > }
>> > }
>> > diff --git a/drivers/gpu/drm/drm_of.c b/drivers/gpu/drm/drm_of.c
>> > index bc98bb94264d..47848ed8ca48 100644
>> > --- a/drivers/gpu/drm/drm_of.c
>> > +++ b/drivers/gpu/drm/drm_of.c
>> > @@ -6,6 +6,11 @@
>> > #include <drm/drm_crtc.h>
>> > #include <drm/drm_of.h>
>> >
>> > +static void drm_release_of(struct device *dev, void *data)
>> > +{
>> > + of_node_put(data);
>> > +}
>> > +
>> > /**
>> > * drm_crtc_port_mask - find the mask of a registered CRTC by port OF node
>> > * @dev: DRM device
>> > @@ -64,6 +69,24 @@ uint32_t drm_of_find_possible_crtcs(struct drm_device *dev,
>> > EXPORT_SYMBOL(drm_of_find_possible_crtcs);
>> >
>> > /**
>> > + * drm_of_component_match_add - Add a component helper OF node match rule
>> > + * @master: master device
>> > + * @matchptr: component match pointer
>> > + * @compare: compare function used for matching component
>> > + * @node: of_node
>> > + */
>> > +void drm_of_component_match_add(struct device *master,
>> > + struct component_match **matchptr,
>> > + int (*compare)(struct device *, void *),
>> > + struct device_node *node)
>> > +{
>> > + of_node_get(node);
>> > + component_match_add_release(master, matchptr, drm_release_of,
>> > + compare, node);
>> > +}
>> > +EXPORT_SYMBOL_GPL(drm_of_component_match_add);
>> > +
>> > +/**
>> > * drm_of_component_probe - Generic probe function for a component based master
>> > * @dev: master device containing the OF node
>> > * @compare_of: compare function used for matching components
>> > @@ -101,7 +124,7 @@ int drm_of_component_probe(struct device *dev,
>> > continue;
>> > }
>> >
>> > - component_match_add(dev, &match, compare_of, port);
>> > + drm_of_component_match_add(dev, &match, compare_of, port);
>> > of_node_put(port);
>> > }
>> >
>> > @@ -140,7 +163,8 @@ int drm_of_component_probe(struct device *dev,
>> > continue;
>> > }
>> >
>> > - component_match_add(dev, &match, compare_of, remote);
>> > + drm_of_component_match_add(dev, &match, compare_of,
>> > + remote);
>> > of_node_put(remote);
>> > }
>> > of_node_put(port);
>> > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
>> > index aa687669e22b..0dee6acbd880 100644
>> > --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
>> > +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
>> > @@ -16,6 +16,7 @@
>> >
>> > #include <linux/component.h>
>> > #include <linux/of_platform.h>
>> > +#include <drm/drm_of.h>
>> >
>> > #include "etnaviv_drv.h"
>> > #include "etnaviv_gpu.h"
>> > @@ -629,8 +630,8 @@ static int etnaviv_pdev_probe(struct platform_device *pdev)
>> > if (!core_node)
>> > break;
>> >
>> > - component_match_add(&pdev->dev, &match, compare_of,
>> > - core_node);
>> > + drm_of_component_match_add(&pdev->dev, &match,
>> > + compare_of, core_node);
>> > of_node_put(core_node);
>> > }
>> > } else if (dev->platform_data) {
>> > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
>> > index 90377a609c98..e88fde18c946 100644
>> > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
>> > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
>> > @@ -24,6 +24,7 @@
>> > #include <drm/drm_fb_cma_helper.h>
>> > #include <drm/drm_atomic_helper.h>
>> > #include <drm/drm_crtc_helper.h>
>> > +#include <drm/drm_of.h>
>> >
>> > #include "kirin_drm_drv.h"
>> >
>> > @@ -260,14 +261,13 @@ static struct device_node *kirin_get_remote_node(struct device_node *np)
>> > DRM_ERROR("no valid endpoint node\n");
>> > return ERR_PTR(-ENODEV);
>> > }
>> > - of_node_put(endpoint);
>> >
>> > remote = of_graph_get_remote_port_parent(endpoint);
>> > + of_node_put(endpoint);
>>
>> Another bug that's being fixed without mention in the commit.
>>
>> > if (!remote) {
>> > DRM_ERROR("no valid remote node\n");
>> > return ERR_PTR(-ENODEV);
>> > }
>> > - of_node_put(remote);
>> >
>> > if (!of_device_is_available(remote)) {
>> > DRM_ERROR("not available for remote node\n");
>> > @@ -294,7 +294,8 @@ static int kirin_drm_platform_probe(struct platform_device *pdev)
>> > if (IS_ERR(remote))
>> > return PTR_ERR(remote);
>> >
>> > - component_match_add(dev, &match, compare_of, remote);
>> > + drm_of_component_match_add(dev, &match, compare_of, remote);
>> > + of_node_put(remote);
>> >
>> > return component_master_add_with_match(dev, &kirin_drm_ops, match);
>> >
>> > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
>> > index cf83f6507ec8..9c5430fb82a2 100644
>> > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
>> > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
>> > @@ -18,6 +18,7 @@
>> > #include <drm/drm_crtc_helper.h>
>> > #include <drm/drm_gem.h>
>> > #include <drm/drm_gem_cma_helper.h>
>> > +#include <drm/drm_of.h>
>> > #include <linux/component.h>
>> > #include <linux/iommu.h>
>> > #include <linux/of_address.h>
>> > @@ -415,7 +416,8 @@ static int mtk_drm_probe(struct platform_device *pdev)
>> > comp_type == MTK_DPI) {
>> > dev_info(dev, "Adding component match for %s\n",
>> > node->full_name);
>> > - component_match_add(dev, &match, compare_of, node);
>> > + drm_of_component_match_add(dev, &match, compare_of,
>> > + node);
>> > } else {
>> > struct mtk_ddp_comp *comp;
>> >
>> > diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
>> > index fb5c0b0a7594..84d38eaea585 100644
>> > --- a/drivers/gpu/drm/msm/msm_drv.c
>> > +++ b/drivers/gpu/drm/msm/msm_drv.c
>> > @@ -15,6 +15,8 @@
>> > * this program. If not, see <http://www.gnu.org/licenses/>.
>> > */
>> >
>> > +#include <drm/drm_of.h>
>> > +
>> > #include "msm_drv.h"
>> > #include "msm_debugfs.h"
>> > #include "msm_fence.h"
>> > @@ -919,8 +921,8 @@ static int add_components_mdp(struct device *mdp_dev,
>> > continue;
>> > }
>> >
>> > - component_match_add(master_dev, matchptr, compare_of, intf);
>> > -
>> > + drm_of_component_match_add(master_dev, matchptr, compare_of,
>> > + intf);
>> > of_node_put(intf);
>> > of_node_put(ep_node);
>> > }
>> > @@ -962,8 +964,8 @@ static int add_display_components(struct device *dev,
>> > put_device(mdp_dev);
>> >
>> > /* add the MDP component itself */
>> > - component_match_add(dev, matchptr, compare_of,
>> > - mdp_dev->of_node);
>> > + drm_of_component_match_add(dev, matchptr, compare_of,
>> > + mdp_dev->of_node);
>> > } else {
>> > /* MDP4 */
>> > mdp_dev = dev;
>> > @@ -996,7 +998,7 @@ static int add_gpu_components(struct device *dev,
>> > if (!np)
>> > return 0;
>> >
>> > - component_match_add(dev, matchptr, compare_of, np);
>> > + drm_of_component_match_add(dev, matchptr, compare_of, np);
>> >
>> > of_node_put(np);
>> >
>> > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
>> > index 8c8cbe837e61..6fe161192bb4 100644
>> > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
>> > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
>> > @@ -20,6 +20,7 @@
>> > #include <drm/drm_crtc_helper.h>
>> > #include <drm/drm_fb_helper.h>
>> > #include <drm/drm_gem_cma_helper.h>
>> > +#include <drm/drm_of.h>
>> > #include <linux/dma-mapping.h>
>> > #include <linux/pm_runtime.h>
>> > #include <linux/module.h>
>> > @@ -388,7 +389,7 @@ static void rockchip_add_endpoints(struct device *dev,
>> > continue;
>> > }
>> >
>> > - component_match_add(dev, match, compare_of, remote);
>> > + drm_of_component_match_add(dev, match, compare_of, remote);
>> > of_node_put(remote);
>> > }
>> > }
>> > @@ -437,7 +438,8 @@ static int rockchip_drm_platform_probe(struct platform_device *pdev)
>> > }
>> >
>> > of_node_put(iommu);
>> > - component_match_add(dev, &match, compare_of, port->parent);
>> > + drm_of_component_match_add(dev, &match, compare_of,
>> > + port->parent);
>> > of_node_put(port);
>> > }
>> >
>> > diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
>> > index 2784919a7366..5e819876e642 100644
>> > --- a/drivers/gpu/drm/sti/sti_drv.c
>> > +++ b/drivers/gpu/drm/sti/sti_drv.c
>> > @@ -17,6 +17,7 @@
>> > #include <drm/drm_crtc_helper.h>
>> > #include <drm/drm_gem_cma_helper.h>
>> > #include <drm/drm_fb_cma_helper.h>
>> > +#include <drm/drm_of.h>
>> >
>> > #include "sti_crtc.h"
>> > #include "sti_drv.h"
>> > @@ -423,8 +424,8 @@ static int sti_platform_probe(struct platform_device *pdev)
>> > child_np = of_get_next_available_child(node, NULL);
>> >
>> > while (child_np) {
>> > - component_match_add(dev, &match, compare_of, child_np);
>> > - of_node_put(child_np);
>> > + drm_of_component_match_add(dev, &match, compare_of,
>> > + child_np);
>> > child_np = of_get_next_available_child(node, child_np);
>> > }
>> >
>> > diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
>> > index 0da9862ad8ed..b3c4ad605e81 100644
>> > --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
>> > +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
>> > @@ -18,6 +18,7 @@
>> > #include <drm/drm_fb_cma_helper.h>
>> > #include <drm/drm_gem_cma_helper.h>
>> > #include <drm/drm_fb_helper.h>
>> > +#include <drm/drm_of.h>
>> >
>> > #include "sun4i_crtc.h"
>> > #include "sun4i_drv.h"
>> > @@ -239,7 +240,7 @@ static int sun4i_drv_add_endpoints(struct device *dev,
>> > /* Add current component */
>> > DRM_DEBUG_DRIVER("Adding component %s\n",
>> > of_node_full_name(node));
>> > - component_match_add(dev, match, compare_of, node);
>> > + drm_of_component_match_add(dev, match, compare_of, node);
>> > count++;
>> > }
>> >
>> > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_external.c b/drivers/gpu/drm/tilcdc/tilcdc_external.c
>> > index 68e895021005..06a4c584f3cb 100644
>> > --- a/drivers/gpu/drm/tilcdc/tilcdc_external.c
>> > +++ b/drivers/gpu/drm/tilcdc/tilcdc_external.c
>> > @@ -10,6 +10,7 @@
>> >
>> > #include <linux/component.h>
>> > #include <linux/of_graph.h>
>> > +#include <drm/drm_of.h>
>> >
>> > #include "tilcdc_drv.h"
>> > #include "tilcdc_external.h"
>> > @@ -160,7 +161,8 @@ int tilcdc_get_external_components(struct device *dev,
>> >
>> > dev_dbg(dev, "Subdevice node '%s' found\n", node->name);
>> > if (match)
>> > - component_match_add(dev, match, dev_match_of, node);
>> > + drm_of_component_match_add(dev, match, dev_match_of,
>> > + node);
>> > of_node_put(node);
>> > count++;
>> > }
>> > diff --git a/include/drm/drm_of.h b/include/drm/drm_of.h
>> > index 3fd87b386ed7..d6b4c5587bbe 100644
>> > --- a/include/drm/drm_of.h
>> > +++ b/include/drm/drm_of.h
>> > @@ -4,6 +4,7 @@
>> > #include <linux/of_graph.h>
>> >
>> > struct component_master_ops;
>> > +struct component_match;
>> > struct device;
>> > struct drm_device;
>> > struct drm_encoder;
>> > @@ -12,6 +13,10 @@ struct device_node;
>> > #ifdef CONFIG_OF
>> > extern uint32_t drm_of_find_possible_crtcs(struct drm_device *dev,
>> > struct device_node *port);
>> > +extern void drm_of_component_match_add(struct device *master,
>> > + struct component_match **matchptr,
>> > + int (*compare)(struct device *, void *),
>> > + struct device_node *node);
>> > extern int drm_of_component_probe(struct device *dev,
>> > int (*compare_of)(struct device *, void *),
>> > const struct component_master_ops *m_ops);
>> > @@ -25,6 +30,13 @@ static inline uint32_t drm_of_find_possible_crtcs(struct drm_device *dev,
>> > return 0;
>> > }
>> >
>> > +static void drm_of_component_match_add(struct device *master,
>> > + struct component_match **matchptr,
>> > + int (*compare)(struct device *, void *),
>> > + struct device_node *node)
>> > +{
>> > +}
>> > +
>> > static inline int
>> > drm_of_component_probe(struct device *dev,
>> > int (*compare_of)(struct device *, void *),
>> > --
>> > 2.1.0
>> >
>> >
>> > _______________________________________________
>> > linux-arm-kernel mailing list
>> > linux-arm-kernel at lists.infradead.org
>> > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
> --
> RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
> FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
> according to speedtest.net.
^ permalink raw reply
* [PATCH v2 4/4] arm64: dts: msm8996: Add SMP2P and APCS nodes
From: Sarangdhar Joshi @ 2016-10-20 23:12 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1477005139-15564-1-git-send-email-spjoshi@codeaurora.org>
Add SMP2P and APCS DT nodes required for Qualcomm ADSP
Peripheral Image Loader.
Acked-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Sarangdhar Joshi <spjoshi@codeaurora.org>
---
arch/arm64/boot/dts/qcom/msm8996.dtsi | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
index abc1089..26c4827 100644
--- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
@@ -175,6 +175,30 @@
method = "smc";
};
+ adsp-smp2p {
+ compatible = "qcom,smp2p";
+ qcom,smem = <443>, <429>;
+
+ interrupts = <0 158 IRQ_TYPE_EDGE_RISING>;
+
+ qcom,ipc = <&apcs 16 10>;
+
+ qcom,local-pid = <0>;
+ qcom,remote-pid = <2>;
+
+ adsp_smp2p_out: master-kernel {
+ qcom,entry-name = "master-kernel";
+ #qcom,state-cells = <1>;
+ };
+
+ adsp_smp2p_in: slave-kernel {
+ qcom,entry-name = "slave-kernel";
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+ };
+
smem {
compatible = "qcom,smem";
@@ -205,6 +229,11 @@
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
};
+ apcs: syscon at 9820000 {
+ compatible = "syscon";
+ reg = <0x9820000 0x1000>;
+ };
+
gcc: clock-controller at 300000 {
compatible = "qcom,gcc-msm8996";
#clock-cells = <1>;
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related
* [PATCH v2 3/4] arm64: dts: msm8996: Add SMEM DT nodes
From: Sarangdhar Joshi @ 2016-10-20 23:12 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1477005139-15564-1-git-send-email-spjoshi@codeaurora.org>
From: Bjorn Andersson <bjorn.andersson@linaro.org>
Add SMEM and TCSR DT nodes on MSM8996.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Sarangdhar Joshi <spjoshi@codeaurora.org>
---
arch/arm64/boot/dts/qcom/msm8996.dtsi | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
index 949b096..abc1089 100644
--- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
@@ -164,17 +164,36 @@
};
+ tcsr_mutex: hwlock {
+ compatible = "qcom,tcsr-mutex";
+ syscon = <&tcsr_mutex_regs 0 0x1000>;
+ #hwlock-cells = <1>;
+ };
+
psci {
compatible = "arm,psci-1.0";
method = "smc";
};
+ smem {
+ compatible = "qcom,smem";
+
+ memory-region = <&smem_mem>;
+
+ hwlocks = <&tcsr_mutex 3>;
+ };
+
soc: soc {
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0 0 0xffffffff>;
compatible = "simple-bus";
+ tcsr_mutex_regs: syscon at 740000 {
+ compatible = "syscon";
+ reg = <0x740000 0x20000>;
+ };
+
intc: interrupt-controller at 9bc0000 {
compatible = "arm,gic-v3";
#interrupt-cells = <3>;
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related
* [PATCH v2 2/4] arm64: dts: msm8996: Add reserve-memory nodes
From: Sarangdhar Joshi @ 2016-10-20 23:12 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1477005139-15564-1-git-send-email-spjoshi@codeaurora.org>
Add reserve-memory nodes required for Qualcomm
Peripheral Image Loaders
Acked-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Sarangdhar Joshi <spjoshi@codeaurora.org>
---
arch/arm64/boot/dts/qcom/msm8996.dtsi | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
index 36216ae..949b096 100644
--- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
@@ -36,6 +36,31 @@
#size-cells = <2>;
ranges;
+ mba_region: mba at 91500000 {
+ reg = <0x0 0x91500000 0x0 0x200000>;
+ no-map;
+ };
+
+ slpi_region: slpi at 90b00000 {
+ reg = <0x0 0x90b00000 0xa00000>;
+ no-map;
+ };
+
+ venus_region: venus at 90400000 {
+ reg = <0x0 0x90400000 0x0 0x700000>;
+ no-map;
+ };
+
+ adsp_region: adsp at 8ea00000 {
+ reg = <0x0 0x8ea00000 0x0 0x1a00000>;
+ no-map;
+ };
+
+ mpss_region: mpss at 88800000 {
+ reg = <0x0 0x88800000 0x0 0x6200000>;
+ no-map;
+ };
+
smem_mem: smem-mem at 86000000 {
reg = <0x0 0x86000000 0x0 0x200000>;
no-map;
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related
* [PATCH v2 1/4] arm64: dts: msm8996: Add SMEM reserve-memory node
From: Sarangdhar Joshi @ 2016-10-20 23:12 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1477005139-15564-1-git-send-email-spjoshi@codeaurora.org>
Add DT node to carveout memory for shared memory region.
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Sarangdhar Joshi <spjoshi@codeaurora.org>
---
arch/arm64/boot/dts/qcom/msm8996.dtsi | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
index d6da223..36216ae 100644
--- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
@@ -31,6 +31,17 @@
reg = <0 0 0 0>;
};
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ smem_mem: smem-mem at 86000000 {
+ reg = <0x0 0x86000000 0x0 0x200000>;
+ no-map;
+ };
+ };
+
cpus {
#address-cells = <2>;
#size-cells = <0>;
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related
* [PATCH v2 0/4] MSM8996 DT Support for ADSP PIL
From: Sarangdhar Joshi @ 2016-10-20 23:12 UTC (permalink / raw)
To: linux-arm-kernel
Add various device tree nodes to lay the groundwork for
Qualcomm ADSP Peripheral Image Loader.
Sorry, I didn't send any cover letter for v1.
Changes since v1:
- Move hwlock DT node under root (/) (Bjorn and Andy)
- Rename smp2p-adsp to adsp-smp2p (Bjorn)
- Remove interrupt-parent property from node (Bjorn)
Bjorn Andersson (1):
arm64: dts: msm8996: Add SMEM DT nodes
Sarangdhar Joshi (3):
arm64: dts: msm8996: Add SMEM reserve-memory node
arm64: dts: msm8996: Add reserve-memory nodes
arm64: dts: msm8996: Add SMP2P and APCS nodes
arch/arm64/boot/dts/qcom/msm8996.dtsi | 84 +++++++++++++++++++++++++++++++++++
1 file changed, 84 insertions(+)
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox