This patch enables the ARM Cortex-A9 errata. Here are the list of errata:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ + +
Xilinx Answer + ARM Errata No. + Description +
Record No. + + +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
47549 + 742231 + System Deadlock can occur in SMP Mode when the +
+ + Same Cache Line is Accessed by Both CPUs & ACP +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
47547 + 754322 + Following an ASID Switch, Faulty MMU Transla- +
+ + tions can occur +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
47550 + 764369 + Cache Line Maintenance Operations by MVA might +
+ + not Succeed on an Inner Shareable Memory Region+
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
----- + 742230 + DMB operation may be faulty +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
----- + 743622 + Faulty hazard checking in the Store Buffer may +
+ + lead to data corruption +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
----- + 754327 + No automatic Store Buffer drain +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
52031 + 775420 + A data cache maintenance operation which aborts+
+ + might lead to deadlock +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
----- + 720789 + TLBIASIDIS and TLBIMVAIS operations can broad +
+ + cast a faulty ASID +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
----- + 751472 + Interrupted ICIALLUIS may prevent completion of+
+ + broadcasted operation +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Signed-off-by: Srikanth Thokala <sthokal@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
net: xemacps: Remove warning on round_rate failure
Assume that we deal with an input clock which is adjusted by different
means than the CCF when clk_round_rate() fails and remove the warning
message.
This allows warning free usage of an EMIO clock source w/o a CCF clock
driver on cost of that we don't detect an actual failing call to
clk_round_rate() which I think is rather unlikely to happen.
Thomas Betker [Mon, 8 Apr 2013 20:05:40 +0000 (22:05 +0200)]
xilinx_emacps: Log severe errors, fix tx_packets
Certain severe error conditions (which should never occur) should be
logged, in particular since the driver does not take actions to
recover; see 16.3.10 in the TRM. Some kind of dev_err() already used to
exist in previous driver versions, but got lost somehow:
o In xemacps_rx_poll(), log rx_status.HRESPNOK.
o In xemacps_tx_poll(), log tx_status.HRESPNOK and .BUFEXH.
Note: Some rx_status and tx_status error conditions are not covered by
statistics registers. There also used to be some code to increment the
net_device_stats counters, but I have refrained from re-adding it:
o rx_status.HRESPNOK: rx_errors, rx_fifo_errors
o rx_status.RXOVR: rx_errors, rx_fifo_errors
o tx_status.HRESPNOK: tx_errors, tx_fifo_errors
o tx_status.BUFEXH: tx_errors, tx_fifo_errors
In xemacps_tx_poll(), increment tx_packets and tx_bytes even if the
transmission failed. This is expected by SNMP (see ifOutUcastPkts in
RFC 2863: "The total number of packets that higher-level protocols
requested be transmitted, ..., including those that were discarded or
not sent."), and other Ethernet drivers also seem to handle it this way.
Note: In order to decide if an error occurred, we would need to check
the ERR bits of all buffers of a (multi-fragment) packet, not just the
last buffer; it is actually easier to drop this altogether, though.
Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com> Tested-by: Anirudha Sarangi <anirudh@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Thomas Betker [Mon, 8 Apr 2013 20:05:39 +0000 (22:05 +0200)]
xilinx_emacps: Fix rx_errors and tx_errors
Some minor improvements in xemacps_update_stats():
o Count RXRESERR in rx_missed_errors.
o Count RXOR only in rx_fifo_errors, not twice in rx_fifo_errors and
rx_over_errors (the latter are bundled with frame errors).
o Do not count SNGLCOLL and MULTICOLL in tx_errors (only in collisions)
because the packets were successfully transmitted after all.
Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com> Tested-by: Anirudha Sarangi <anirudh@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Thomas Betker [Mon, 8 Apr 2013 20:05:38 +0000 (22:05 +0200)]
xilinx_emacps: Read statistics registers only once
Statistics registers are clear-on-read, so xemacps_update_stats() must
take care to read each of them only once -- extra reads will usually
return 0, leading to inconsistencies.
Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com> Tested-by: Anirudha Sarangi <anirudh@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Thomas Betker [Sat, 6 Apr 2013 09:56:41 +0000 (11:56 +0200)]
xilinx_emacps: Fix handling of skb fragments (3/3)
When a Tx packet is fragmented, the controller sets USED=1 only in the
first buffer. This means that xemacps_tx_poll() cannot "preserve" the
USED bit (which may be 0), but must set USED=1 explicitly once the
packet has been transmitted.
Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com> Tested-by: Anirudha Sarangi <anirudh@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Thomas Betker [Sat, 6 Apr 2013 09:56:40 +0000 (11:56 +0200)]
xilinx_emacps: Fix handling of skb fragments (2/3)
In xemacps_start_xmit(), we cannot set tx_skb[].skb = NULL for a
fragment because xemacps_clean_rings() uses skb as a flag to call
dma_unmap_single().
Instead, we simply increment the skb's user count by skb_get() so that
dev_kfree_skb() can [and must] be called multiple times.
Note that the last dev_kfree_skb() in xemacps_clean_rings() will be
called after the last dma_unmap_single(), even if there is a wrap in
the middle of the packet; i.e., the socket buffer will be valid until
all DMA regions are unmapped.
Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com> Tested-by: Anirudha Sarangi <anirudh@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Thomas Betker [Sat, 6 Apr 2013 09:56:39 +0000 (11:56 +0200)]
xilinx_emacps: Fix handling of skb fragments (1/3)
xemacps_clean_rings() needs to know the fragment length for unmapping
a Tx skb fragment -- skb->len is only correct for the first fragment.
For this, we add a field 'len' to 'struct ring_info'. We employ this
field for Rx packets as well, if only to avoid using the constant
XEMACPS_RX_BUF_SIZE everywhere.
Note: We also fix a minor issue with the tx_bytes statistics counter in
xemacps_tx_poll(); it was found when dropping the 'leninbd' variable
(which is no longer needed).
Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com> Tested-by: Anirudha Sarangi <anirudh@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
The existing driver has locking issues. This patch fixes them.
The locking issues/warnings are mainly because some of the routines
are trying to acquire tx and rx locks both. Acquiring of both locks
was implemented because net_ctrl register was getting accessed on
both tx and rx paths and also in the timer handler meant to provide
a workaround for the Rx path sillicon issue. To maintain a consistent
net_ctrl register, some of the routines had to acquire both locks.
To fix this, this patch provides one more lock that is used only for
the net_ctrl register. This provides a much cleaner locking mechanism.
Also, after much analysis it was figured out that, some of the APIs
(e.g. xemacps_close and ethtool APIs) do not need any locks.
Some of the locking related warnings were because of these APIs
acquiring both the locks. This patch addresses them.
Added additional parameters required for Zynq Base TRD.
Built on top of zynq-zc702 dts.
a)I2c entries added for ADV7511 ,IPMI eeprom and
some entries related to i2c slaves on FMC card .
b)UIO entries for Video IP's .
c)Xylon framebuffer.
Signed-off-by: Radhey Shyam Pandey <radheys@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Imageon driver provides platform data for initializing ADV7611
hdmi-in chip.
It configures ADV7611 using V4L2 sub-dev kernel API.
Uses request_firmware API to read EDID from fileystem.
Configured as loadable module and inserted into kernel
when filesystem and mdev(userspace handler) is up.
Signed-off-by: Radhey Shyam Pandey <radheys@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers: staging: Client driver for AXI VDMA engine.
Provides handle to user-space application to configures
xilinx axi-vdma driver.
Uses DMA Engine API to perform functions like DMA channel
allocation,configuration and device control.
Signed-off-by: Radhey Shyam Pandey <radheys@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Fixed bug in calculation of display refresh rate when working in no EDID mode.
Added usage of VESA timings with reduced blanking period when getting video
mode timing parameters from kernel.
Signed-off-by: Davor Joja <davor.joja@logicbricks.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This patch increases the number of BDs on the Tx/Rx path to a
reasonable value of 256 (existing is 32). This is required and may
ensure better/efficient processing under heavy traffic (the existing
napi weigth is 64).
This patch adds support for the gmii to rgmii converter IP in the PL.
This Xilinx IP appears on the mdio interface along with the regular PHY.
It possesses a PHY address to be accessible on the mdio bus. The IP appears
in the device tree under the mdio node. This patch reads the mdio node
and on finding the presence of this converter takes appropriate
action assuming it as a dummy PHY. After the regular PHY autoneg, the
driver writes the spped/duplex settings to the appropriate register
in the dummy PHY to ensure proper gmii to rgmii conversion.
This patch fixes a very minor bug that can show up when someone
tests the Ethernet interface on PEEP. The bug is related to PHY
handling. This patch fixes it.
This patch adds a new property "phy-mode" for all relevant device trees
under the EmacPs node. This is done to ensure that the driver can
handle varying type of PHY interfaces in a flexible way.
The existing implementation was hardcoding the PHY interface as
RGMII (MIO case). This patch makes the implementation flexible by
assuming that the information regarding the PHY interface will come
from the device tree. This will ensure that the driver takes care of
both MIO (RGMII) and EMIO (GMII) cases.
The existing tx timeout handler was resulting a kernel crash when
invoked for tx timeout case. The tx timeout handler was trying to
allocate coherent memory for the BDs which was resulting in an error
case for scheduling while atomic.
This patch fixes it by using work queues for Tx timeout handling.
The existing implementation had a single lock for tx and rx paths.
This resulted in creating dependencies between tx and rx paths. For
example a Rx interrupt had to wait for the start_xmit routine to
finish. This could also result in potential locking issues as
reported by running on Qemu.
This patch uses two locks(one each for tx and rx paths) instead
of a single lock. This patch avoids to the extent possible not to
disable IRQs (avoids spin-lock-irqsave) and instead uses spin-lock-bh.
This effectively makes the Tx and Rx paths independent of each other.
This patch addresses all concerns (because of this new implementation)
related to inadvertent corruption of registers.
The releasing of the Tx BDs after Tx done interrupts earlier used to
happen in the interrupt context. This patch changes it to ensure that
the Tx done BD releasing happens in a bottom half(tasklet).
Commit 'arm: zynq: fix indentation and formatting' (sha1: 3a48d14c4fbb1a08ae659fed98091667a9778b53) wrongly added '0x' prefixes to
the reg properties of ucd9248 nodes.
Rectify this issue by removing the wrongly added prefixes.
- Defined gadget max_speed
- Modified xudc_start for new bind function
- Changed endpoint names
The endpoint names are parsed in udc framework and
the addresses are assigned based on that. In 3.6 kernel,
the ednpoint address are denoted by a single variable
and hence we get proper address to the driver.
Now the endpoints are differentiated based on direction
and we always get endpoint address as 1 (for 2 endpoints)
and we fail accessing the EP RAM address for ep2
Michal Simek [Tue, 2 Apr 2013 09:45:42 +0000 (11:45 +0200)]
arm: zynq: Do not use PHYS_OFFSET for multi platfrom kernel
CONFIG_ARM_PATCH_PHYS_VIRT is always yes that's why
CONFIG_PHYS_OFFSET is not setup anymore.
Detect where kernel runs and if runs from zero then
reserve memory which is not DMAable.
This patch also fix the problem with rootfs on MMC card
where this fault is report:
mmc0: Timeout waiting for hardware interrupt.
mmcblk0: error -110 transferring data, sector 1574716, nr 136,
cmd response 0x900, card status 0xb00
mmcblk0: retrying using single block read
Signed-off-by: Michal Simek <michal.simek@xilinx.com> Tested-by: Michael Przybylski <michaeljprzybylski@gmail.com> Tested-by: Lars-Peter Clausen <lars@metafoo.de>
Soren Brinkmann [Wed, 20 Mar 2013 17:24:15 +0000 (10:24 -0700)]
arm: zynq: Gracefully handle missing OCM
Although, OCM is always part of the system, it might be unavailable due
to an erroneous DT. Handle this cases gracefully instead of crashing the
system.
Updated the actual memory amount used by zc706 board.
This changes is follow-up on memory amount in previous patch.
"Xilinx: ARM: Added zc706 device tree and compatibility"
(sha1: 082f42fd30e07bb35100c435199f56adef932875)
Signed-off-by: Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
usb: xilinxps_udc: Fixed zero length packet issue with control endpoint.
Fixed sending a separate zero length packet for control IN endpoint. The
ZLT bit in dQH takes care of it. Configured control OUT endpoint not to
wait for zero length packet from the host controller. See USB 2.0 section
5.5.3 for more details.
usb: xilinxps_udc: Added s/w workaround for USB disconnect detection
Added s/w workaround for USB disconnect detection as mentioned in
AR# 47538. See http://www.xilinx.com/support/answers/47538.htm for
more details. This fix is not applicable for OTG mode as there is
no callback registered for B session end event.
Signed-off-by: Naveen Mamindlapalli <naveenm@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Michal Simek [Tue, 19 Mar 2013 10:22:42 +0000 (11:22 +0100)]
dma: Rename xilinx dmatest to axidmatest
The reason is that there is standard dmatest in dma folder
a because of the design of these xilinx proprietary tests
without binding that ends in duplicating filenames
just because of the same driver name.
Davor Joja [Mon, 18 Mar 2013 12:39:56 +0000 (13:39 +0100)]
adv7511: Support for ADV7511 HDMI transmitter
Cisco V4L2 driver for ADV7511 HDMI transmitter.
Driver changes against original version:
- fixed compiling issues
- fixed race conditions
- added OFDT support for greater flexibility and configurability on different hw platforms
This patch adds support for the Analog Devices ADV7611 HDMI receiver.
The adv7611 is quite similar to the adv7604. It has only one instead of four
HDMI inputs and no analog frontend though. Also some register bits have been
shuffled around, but large parts of their register maps are compatible.
Sakari Ailus [Sat, 15 Sep 2012 10:51:47 +0000 (07:51 -0300)]
[media] v4l: Helper function for obtaining timestamps
v4l2_get_timestamp() produces a monotonic timestamp but unlike
ktime_get_ts(), it uses struct timeval instead of struct timespec, saving
the drivers the conversion job when getting timestamps for v4l2_buffer's
timestamp field.
Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi> Acked-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Davor Joja [Fri, 8 Mar 2013 15:15:49 +0000 (07:15 -0800)]
video: fb: xylonfb: Driver version 2.0
Added support for logiCVC IP version 3.0 functionality with YUV and Alpha layers.
FB console available on top of the 8bpp YUV CLUT layer.
YUV supported formats 4:2:2 (16 bpp) and 4:4:4 (32 bpp), alpha layer format is 8bpp.
Added miscellaneous module.
Miscellaneous interface implements ADV7511 control functions working on top of Cisco adv7511 V4L2 driver.
logiCVC dynamic configuration to preferred resolution of connected display, according to EDID.
Improved driver configuration from kernel configuration menu and DTS file.
Dan Christensen [Sun, 17 Mar 2013 09:48:56 +0000 (04:48 -0500)]
microblaze: intc: set the default irq_domain
Register the irq_domain created during initialization as the default so
that device drivers can pass NULL to irq_create_mapping and get a
virtual irq to pass to request_irq.
Signed-off-by: Dan Christensen <opello@opello.org>
usb: gadget: Updated as per latest usb gadget framework-cont
- Added xusb_release function
- Renamed usb_gadget_register_driver -> xudc_start
- Renamed usb_gadget_unregister_driver -> xudc_stop
- Modified xudb_udc_ops structure to include xudc_start and xudc_stop
- Modified controller structure to include xusb_release
Signed-off-by: Subbaraya Sundeep Bhatta <sbhatta@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Srikanth Thokala [Wed, 13 Mar 2013 14:28:10 +0000 (19:58 +0530)]
net: ethernet: axienet: Added memory barriers to remove potential issues
This patch puts a write memory barrier to ensure successful BD update
before starting the DMA transmit engine. Similarly, a read memory barrier
is required to ensures that the relevant BD status fields are updated
before the SW processes them.
Srikanth Thokala [Wed, 13 Mar 2013 14:28:09 +0000 (19:58 +0530)]
net: ethernet: axienet: Support for RGMII
This patch adds support for the RGMII. The h/w configuration
parameter C_PHY_TYPE, which represents the interface configured in
the design, is used to differentiate various interfaces supported
by AXI Ethernet.
DMA: PL330: Added support for Zynq PL330 interrupt configuration.
Added support for Zynq PL330 interrupt configuration. Zynq supports
8 DMA interrupts and 1 DMA abort interrupt. The device tree needs
to generate all the interrupts.
Signed-off-by: Naveen Mamindlapalli <naveenm@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Michal Simek [Tue, 12 Mar 2013 11:05:35 +0000 (12:05 +0100)]
arm: zynq: Remove slcr.h
It is controversial patch because xilinx_devcfg
contains some externs which shouldn't contain
but we can live with this for now because that driver
needs to be changed anyway.
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
usb: xilinxps_udc: Added support for Test Mode feature
The test mode is used for compliance testing of USB devices.
All the devices must support this feature for compliance.
As part of this feature, the host sends SET_FEATURE command
with TEST_MODE feature and device needs to enable that test mode.
The exit from TEST_MODE is to power cycle the device.
There are 5 test modes as given below.
1. Test_SE0_NAK
2. Test_J
3. Test_K
4. Test_Packet
5. Test_Force_Enable
For more information, refer to "section 7.1.20 Test Mode Support" of USB 2.0 spec.
usb: xilinxps_udc: Fixed USB MSC error recovery test failure
Fixed USB mass storage class error recovery test failure as part of
compliance testing using windows USBCV.
If the CBW is not valid, the device shall STALL the Bulk-In pipe.
Also, the device shall either STALL the Bulk-Out pipe, or the device
shall accept and discard any Bulk-Out data. The device shall maintain
this state until a Reset Recovery.
usb: xilinxps_udc: Fixed kernel crash during gadget driver unloading.
Fixed kernel crash when unloading the gadget driver. The crash is
happening because of accessing otg related pointers when otg driver
is not probed. The USB controller driver is in peripheral mode.
usb: xilinxps_udc: Fixed USB halt endpoint support.
Fixed USB halt endpoint support as part of compliance testing
using Windows USBCV tool. The halt endpoint test is
working with g_mass_storage and g_ether gadget. It fails with
g_zero because of g_zero queuing some BULK requests and DCD is
checking whether endpoint request queue is empty before halting.
WARNING: vmlinux.o(.text+0x81d4): Section mismatch in reference from
the function pcibios_allocate_bus_resources() to the function .init.text:reparent_resources()
The function pcibios_allocate_bus_resources() references
the function __init reparent_resources().
This is often because pcibios_allocate_bus_resources lacks a __init
annotation or the annotation of reparent_resources is wrong.
WARNING: vmlinux.o(.text+0x88d8): Section mismatch in reference from
the function pcibios_finish_adding_to_bus() to the function .devinit.text:pcibios_claim_one_bus()
The function pcibios_finish_adding_to_bus() references
the function __devinit pcibios_claim_one_bus().
This is often because pcibios_finish_adding_to_bus lacks a __devinit
annotation or the annotation of pcibios_claim_one_bus is wrong.
WARNING: vmlinux.o(.text+0x8df0): Section mismatch in reference from
the function fixup_xilinx_axipcie_bridge() to the variable .devinit.data:xilinx_axipcie_match
The function fixup_xilinx_axipcie_bridge() references
the variable __devinitdata xilinx_axipcie_match.
This is often because fixup_xilinx_axipcie_bridge lacks a __devinitdata
annotation or the annotation of xilinx_axipcie_match is wrong.
This commit addresses following issues:
. Initially, end point is up and running. When a reset is triggered,
it clears the bridge-enable bit (it resets on transition from link
up to down) resulting in failure of rescan.
. Link is not up (EP is in reset state), during kernel boot. Then EP
comes to normal state and Link is up (after kernel boot). User
cannot issue rescan, as the root port device entry doesn't
list in /sys/bus/pci.
Soren Brinkmann [Tue, 5 Mar 2013 17:58:50 +0000 (09:58 -0800)]
arm: zynq: Suspend support
Adding initial suspend support to the Zynq architecture. The
required suspend functions are implemented and suspend is at least
partially working.
Clock gating and PLL bypassing heavily depend on device drivers.
It's likely that drivers/HW not implementing proper suspend
and resume callbacks break when a suspend is triggered.
During suspend DRAM is put into self-refresh and all DDR related clocks
are stopped and the DDR PLL is bypassed.
Jason Wu [Thu, 7 Mar 2013 02:18:13 +0000 (12:18 +1000)]
memory:zynq-smc: Use default timing when DTS property is not found
If any of the NAND flash timing is missing from the DTS, us the default
NAND flash timing. The default flash timing is for 2Gb Numonyx
MT29F2G08ABAEAWP NAND flash.
Soren Brinkmann [Thu, 7 Mar 2013 01:16:43 +0000 (17:16 -0800)]
usb: xusbps: Reuse struct device_node across all usb devices
The DT has only a single node for USB, but the driver creates several
platform devices, dependent on the USB driver mode. So, synchronize
the struct device_node pointers across those devices to refer to the
only DT node for USB.