ENGR00318063-9: clk: do not allow parent switching with another mux being child

When switching parent clock with another basic mux clock being its
child, a glitch might be generated and propagated to downstream clocks
through this child mux.

The patch adds a flag CLK_IS_BASIC_MUX to identify the basic mux clocks,
and prohibit the parent switching when the clock itself is the parent of
any basic mux clock.  With this check, the parent switching of a clock
has to happen before the child mux switches to this clock path.

Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
pci: pci-imx6: Don't reset pci in wait for link

This was actually a bug introduced by the freescale patch porting
and merge done earlier.  Thanks Xobs for catching the error.
dts: imx6qdl: fixup pcie resources

The reference clocks used were pointing to lvds_gate previously
but a patch by freescale has made that a null clock, and lvds1_out
is not the proper clock to use.

Additionally the way the interrupts are setup in the driver we
take the main interrupt A for the PCIe controller and then
derive MSI from it by subtracting three.  Therefore the device
tree needs to pass the main interrupt 155 to the driver so
non MSI mode will work properly.
dts: imx6qdl-hb: Add PCIe entry

This configures PCIe on the Hummingboard.
PCI: imx6: fix occasional link failure

According to the IMX6 reference manuals, REF_SSP_EN (Reference clock enable
for SS function) must remain deasserted until the reference clock is running
at the appropriate frequency.

Without this patch we find a high link failure rate (>5%) on certain
IMX6 boards at various temperatures.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
PCI: imx6: bring back more bits form upstream

This brings back the  imx6_pcie_assert_core_reset() function
that was part of the original driver accepted upstream.

commit: bb38919ec56e0758c3ae56dfc091dcde1391353e
PCI: imx6: fix boot hang when link already enabled

This fixes a boot hang observed when the bootloader
already enabled the PCIe link for it's own use. The
fundamental problem is that Freescale forgot to wire
up the core reset, so software doesn't have a sane way
to get the core into a defined state.

According to the DW PCIe core reference manual configuration
of the core may only happen when the LTSSM is disabled, so
this is one of the first things we need to do. Apparently
this isn't safe to do when the LTSSM is in any other state
than "detect" as we observe an instant machine hang when
trying to do so while the link is already up.

As a workaround force LTSSM into detect state right before
hitting the disable switch.

Reported-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Acked-by: Tim Harvey <tharvey@gateworks.com>
PCI: imx6: Fix build warning

Remove unused structure