summaryrefslogtreecommitdiff
path: root/drivers/soc
AgeCommit message (Collapse)AuthorFilesLines
2021-02-04soc: aspeed: mctp: Export function used to read BDFIwona Winiarska1-0/+19
Recently, aspeed-mctp driver functionality was extended to store BDF values for already discovered MCTP endpoints on PCIe bus. Let's expose kernel API to read BDF based on endpoint ID. Change-Id: I146e67a8c2f4f541b4c3065c18dcadf531f30670 Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com>
2021-02-04Enable mailbox interruptsYong Li1-49/+90
Support interrupt generation for both 16 and 32 mailbox registers. Tested: After applied this patch, write the mailbox registers from BIOS side, the misc manager can capture the new mailbox data. Change-Id: I4030b6df176a53656aea9cb68ee80b67add8ed14 Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
2021-01-25fixup! soc: aspeed: mctp: Add IOCTL to register default clientAndrzej Kacprowski1-7/+0
Remove temporary workaround to register first user space client as default client. Change-Id: I9e020be0815422c125f38713ce21a6ac3cdba1ad Signed-off-by: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
2021-01-15Move Aspeed eSPI driver to soc/aspeed treeJae Hyun Yoo3-0/+523
This commit moves Aspeed eSPI driver from misc to soc/aspeed tree to make correct probing order for LPC and eSPI driver. Since LPC runs over eSPI, eSPI driver should be registered ahead of LPC driver. Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com> Change-Id: I6c813c3e29ddb02c86e3266b9fc713a8b410169e
2021-01-12soc: aspeed: mctp: Register peci_mctp deviceIwona Winiarska1-1/+9
Now that it is possible to send PECI frames via aspeed-mctp driver, let's add aspeed-peci-mctp node to allow bind peci-mctp-aspeed adapter driver. Change-Id: Ie511af2896a6626d7179cd9475ec9ef8c7309496 Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com>
2021-01-08soc: aspeed: mctp: Fix TX hangs and optimize TX logicAndrzej Kacprowski1-58/+42
Currently driver submits 1 (or rarely more than 1) packet then waits until HW signals transmission completion before sending more packets. This logic requires interrupt after each packet, aspeed_mctp_tx_tasklet() is invoked twice per packet. New logic uses TX ring correctly, packets are added to the end of circular ring buffer. The driver does not have to wait for HW to complete transmission of enqueued packets before adding more packets to TX queue. Interrupt is generated only if TX ring if full. This change significantly improves packet transmission performance: PECI GetTemp command takes ~25us instead of ~30us. This change also fixes sporadic TX hangs during host reboot seen with current driver. Change-Id: Ia12f71eb048c10e7aa0dd3821206044698d0c7f9 Signed-off-by: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
2021-01-08soc: aspeed: mctp: Update source EID in TX packetsAndrzej Kacprowski1-1/+26
If self EID is known then the driver updates source EID in MCTP header of sent packets. For MCTP control packets the source EID is not updated as it may disrupt MCTP discovery flow. Self EID is determined from list of known endpoints provided by ASPEED_MCTP_IOCTL_SET_EID_INFO IOCTL. Change-Id: I8d6d0aebac096859a55694d6d82540aea8264085 Signed-off-by: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
2021-01-08fixup! aspeed-mctp: Add EID information related ioctlsKarol Wachowski1-4/+16
Fix error when swapping two empty lists. Copy count in ASPEED_MCTP_GET_EID_INFO to userbuf instead of incorrectly returning it by value. Change-Id: I8549a3a988d1f44106582729b9a6eca650ded256 Signed-off-by: Karol Wachowski <karol.wachowski@intel.com>
2021-01-07fixup! soc: aspeed: mctp: Expose internal kernel APIIwona Winiarska1-9/+21
Fixed a missing error handling for case where wait_event_interruptible_timeout() returns -ERESTARTSYS. Renamed the exposed functions to be more consistent with their usage. Added dedicated function to flush client rx queue. Change-Id: I0fd1bfca926b34ae0f4dc18f07e453b3861a4c3e Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com>
2020-12-21soc: aspeed: mctp: Fix RX hangs and RX packet missesAndrzej Kacprowski1-76/+133
Under even moderate traffic the driver can miss a lot of received packets and eventually stops receiving packets at all. There is an bug in AST2600 RX logic where HW does not wrap around RX read buffer pointer correctly. Current driver workaround for this bug resets RX HW read pointer to 0 whenever it reaches end of the RX buffer ring - this does not work properly if more than 1 packet is received while RX pointer is close to the end of the RX buffer ring - in such case HW can detect ring full condition and stop RX. The new workaround has different logic: it sets HW buffer count to 4n - 1 and updates driver maintained RX write pointer so it tracks HW read pointer to prevent hardware from stopping. Received packets are located by looking into RX data buffers rather that HW read pointer that contains incorrect value anyway. Driver never resets HW read pointer, HW is receiving packets without any interference form the driver. Also handle RX_CMD_NO_MORE_INT - if RX ring if full then HW will clear RX_CMD_READY bit and we need to re-enable it once we free some space in RX ring. Change-Id: I0a94fd43a91f17677e6df9da7bb71b3254543de0 Signed-off-by: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
2020-12-17soc: aspeed: mctp: Expose internal kernel APIIwona Winiarska1-39/+62
Some protocols that are already implemented in kernel can be encapsulated in MCTP packets. To allow use aspeed-mctp internally in kernel space, let's allow to use selected functions outside of aspeed-mctp. Change-Id: I543bfce975dfdd7cf8017899a139f69febbaca8d Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com>
2020-12-17soc: aspeed: mctp: Fix header swapping consistencyIwona Winiarska1-24/+23
Right now, TX ring contains packets with PCIe header already swapped to little endian (byte order expected by HW), while RX ring contains packets with PCIe header already swapped to network order (expected by userspace). Let's keep TX packets in network order and swap before write to HW buffer. To make it more readable, let's extract swapping into a helper function. Change-Id: I6c69ad9b3c9f68b2ef416eaf9259798cf011b8c4 Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com>
2020-12-16aspeed-mctp: Add EID information related ioctlsKarol Wachowski1-0/+166
Implement two new ioctls for storing EID related information: * ASPEED_MCTP_IOCTL_GET_EID_INFO * ASPEED_MCTP_IOCTL_SET_EID_INFO Driver stores EID mapping in a list which is traversed when one tries to get information using ASPEED_MCTP_IOCTL_GET_EID_INFO ioctl, when given EID mapping is not found in the list, next entry is returned. When there are no entries with EIDs higher than specified in the IOCTL call -ENODEV is returned. Whenever new information about EID mapping is stored with ASPEED_MCTP_IOCTL_SET_EID_INFO ioctl driver empties exsiting list of mappings and creates new one based on user input. After insertion list is sorted by EID. Invalid input such as duplicated EIDs will cause driver to return -EINVAL. Change-Id: I41e4e4e83f451a8367d58bbf9b67e8e8f7d080f4 Signed-off-by: Karol Wachowski <karol.wachowski@intel.com>
2020-12-08soc: aspeed: mctp: Pick uevents consistentlyIwona Winiarska1-3/+2
Uevent objects are different for PCI_READY=0 and PCI_READY=1. Let's make uevents consistent and use the same object in both cases. Change-Id: I68dbed9b2b552999cf6858975294d570b5522e86 Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com>
2020-12-08soc: aspeed: mctp: Add API to register client for MCTP typeAndrzej Kacprowski1-2/+198
MCTP client can register for receiving packets with selected MCTP message type or PCIE vendor defined message type. Vendor defined type is 2 bytes but in Intel VDMs the first byte is variable and only the second byte contains constant message type - to support this use case we have to specify 2 byte mask that is applied to packet type before comparing with registered vendor type. When MCTP packet arrives its header is compared with a list of registered (vendor) types. If no client registered for packet's (vendor) type then the packet is dispatched to the default client. Fragmented packets are not considered for type matching. Only one client can register for given (vendor) type. Client can register for multiple (vendor) types. All packet fields must be specified in big endian byte order. This feature allows to support multiple clients simultaneously but only one client per (vendor) message type. For example we can have PECI client in kernel that uses PECI vendor message type, dcpmm daemon in user space that handles NVDIMM vendor type messages and mctpd service that handles MCTP control and PLDM message types. tested with peci_mctp_test application Change-Id: I8a9fed3d4b2f2628782299928abd15bdd7af9387 Signed-off-by: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
2020-12-08soc: aspeed: mctp: Add IOCTL to register default clientAndrzej Kacprowski1-1/+22
Add IOCTL to register given client as default client that receives all packets that were not dispatched to other clients. This IOCTL is intended to be used by mctpd service or test application that should receive all packets that are not claimed by other clients. mctpd service might not be the first user space client since dcpmm or telemetry client can start before mctpd or mctpd can crash and be restarted automatically at any time. To preserve backward compatibility with mctpd, the first user space client will be registered automatically as default client - once mctpd is modified to call ASPEED_MCTP_IOCTL_REGISTER_DEFAULT_HANDLER we can remove this workaround. Change-Id: I9e7f48ef0efab1813122daf131ff23476f0fae76 Signed-off-by: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
2020-12-08soc: aspeed: mctp: Move wait queue to clientAndrzej Kacprowski1-7/+5
Whenever MCTP packet arrives it is dispatched to a specific client - there is no need to wake up all clients waiting in aspeed_mctp_poll(). Move wait queue from driver structure to client structure. Change-Id: Ifd64e55a8a92a186330e5bcd7b77947408dfa698 Signed-off-by: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
2020-12-08soc: aspeed: mctp: Add support for multiple clientsAndrzej Kacprowski1-104/+93
This commit adds minimal support for multiple clients. Currently packets are dispatched to default client. Support for dispatching incoming packets to different clients will be added in subsequent patches. Change-Id: Ie317b5287c2a3e3f89e035a9c655dfb0841d4e57 Signed-off-by: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
2020-11-05Merge v5.8.17, commit '6d07b544ce203a684d9ca52635dcf2f4fc89b7d4' into ↵Jason M. Bills8-15/+26
dev-5.8-intel
2020-11-03fixup! soc: aspeed: mctp: Add initial driver for ast2600-mctpAndrzej Kacprowski1-62/+50
aspeed-mctp: Set PCI requester ID in MCTP packets aspeed-mctp driver should not allow clients to use arbitrary PCI requester ID in sent packets - the requester ID should be forced to BDF of the local PCI endpoint. If local PCI endpoint BDF is unknown then -EIO error is returned when trying to send or receive packets. Also allow clients to open connection to KMD even if BDF is currently unknown. Fixed read() and write() error checking. Change-Id: Idabc6f36a72f2204bbb395193174798e3500db65 Signed-off-by: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
2020-10-30Merge tag 'v5.8.17' into dev-5.8Joel Stanley5-6/+7
This is the 5.8.17 stable release Signed-off-by: Joel Stanley <joel@jms.id.au>
2020-10-29soc: mediatek: cmdq: add clear option in cmdq_pkt_wfe apiDennis YC Hsieh1-2/+3
[ Upstream commit 23c22299cd290409c6b78f57c42b64f8dfb6dd92 ] Add clear parameter to let client decide if event should be clear to 0 after GCE receive it. Signed-off-by: Dennis YC Hsieh <dennis-yc.hsieh@mediatek.com> Acked-by: Chun-Kuang Hu <chunkuang.hu@kernel.org> Link: https://lore.kernel.org/r/1594136714-11650-9-git-send-email-dennis-yc.hsieh@mediatek.com [mb: fix commit message] Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-10-29soc: fsl: qbman: Fix return value on successKrzysztof Kozlowski1-1/+1
[ Upstream commit 750cf40c0f7088f36a8a5d102e0488b1ac47faf5 ] On error the function was meant to return -ERRNO. This also fixes compile warning: drivers/soc/fsl/qbman/bman.c:640:6: warning: variable 'err' set but not used [-Wunused-but-set-variable] Fixes: 0505d00c8dba ("soc/fsl/qbman: Cleanup buffer pools if BMan was initialized prior to bootup") Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> Signed-off-by: Li Yang <leoyang.li@nxp.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-10-29soc: qcom: apr: Fixup the error displayed on lookup failureSibi Sankar1-1/+1
[ Upstream commit ba34f977c333f96c8acd37ec30e232220399f5a5 ] APR client incorrectly prints out "ret" variable on pdr_add_lookup failure, it should be printing the error value returned by the lookup instead. Fixes: 8347356626028 ("soc: qcom: apr: Add avs/audio tracking functionality") Signed-off-by: Sibi Sankar <sibis@codeaurora.org> Link: https://lore.kernel.org/r/20200915154232.27523-1-sibis@codeaurora.org Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-10-29soc: qcom: pdr: Fixup array type of get_domain_list_resp messageSibi Sankar1-1/+1
[ Upstream commit 7a366707bb6a93baeb1a9ef46c4b9c875e0132d6 ] The array type of get_domain_list_resp is incorrectly marked as NO_ARRAY. Due to which the following error was observed when using pdr helpers with the downstream proprietary pd-mapper. Fix this up by marking it as VAR_LEN_ARRAY instead. Err logs: qmi_decode_struct_elem: Fault in decoding: dl(2), db(27), tl(160), i(1), el(1) failed to decode incoming message PDR: tms/servreg get domain list txn wait failed: -14 PDR: service lookup for tms/servreg failed: -14 Tested-by: Rishabh Bhatnagar <rishabhb@codeaurora.org> Fixes: fbe639b44a82 ("soc: qcom: Introduce Protection Domain Restart helpers") Reported-by: Rishabh Bhatnagar <rishabhb@codeaurora.org> Signed-off-by: Sibi Sankar <sibis@codeaurora.org> Link: https://lore.kernel.org/r/20200914145807.1224-1-sibis@codeaurora.org Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-10-29soc: xilinx: Fix error code in zynqmp_pm_probe()Dan Carpenter1-1/+1
[ Upstream commit a6f2f0fdc73aacc6e10ae48ae78634dba26702d4 ] This should be returning PTR_ERR() but it returns IS_ERR() instead. Fixes: ffdbae28d9d1 ("drivers: soc: xilinx: Use mailbox IPI callback") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Reviewed-by: Michal Simek <michal.simek@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com> Link: https://lore.kernel.org/r/20200605110020.GA978434@mwanda Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-10-15fixup! soc: aspeed: mctp: Add initial driver for ast2600-mctpKarol Wachowski1-2/+3
Fix invalid HDR order by storing swapped mctp header in rx_packet instead of swapping it in place. Signed-off-by: Karol Wachowski <karol.wachowski@intel.com> Change-Id: I15f692a25ab56c38330f7fff82171bb903e53b21
2020-10-10soc: aspeed: mctp: Add initial driver for ast2600-mctpIwona Winiarska3-0/+1225
Currently, there is no proper MCTP networking subsystem in Linux. Until we are able to work out the details of that, we are going to expose HW to userspace using raw read/write interface. Because of that, this driver is not intended to be submitted upstream. Here we are providing a simple device driver for AST2600 MCTP controller. v2: Added workarounds for BMC reboot/reset, corrected endianess comment, changed TX_BUF_ADDR to be consistent, fixed typos. v3: Added workaround for RX hang, added swapping PCIe VDM header to network order, corrected buffer allocation size. v4: Fixed TX broken after sending 32 byte packet Signed-off-by: Iwona Winiarska <iwona.winiarska@intel.com> Signed-off-by: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
2020-10-10Add chip unique id reading interfaceJae Hyun Yoo1-13/+105
This commit adds an interface for reading chip unique id value. Optionally, the id can be encrypted using a dts-supplied hash data. Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com> Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com> Signed-off-by: Arun P. Mohanan <arun.p.m@linux.intel.com>
2020-10-10[Mailbox] Enabling interrupt based mailboxArun P. Mohanan1-33/+69
Modifying the mailbox driver to use FIFO queue while using interrupt. Signed-off-by: Arun P. Mohanan <arun.p.m@linux.intel.com>
2020-10-10soc: aspeed: Add read-only property supportYong Li1-0/+7
Add a read-only property, to support export register bits as read-only. Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
2020-10-08soc: aspeed: xdma: Return -EFAULT if copy_from_user() failsDan Carpenter1-3/+2
The copy_from_user() function returns the number of bytes remaining which we weren't able to copy. This should return -EFAULT to the user. OpenBMC-Staging-Count: 1 Fixes: 86609baa4217 ("soc: aspeed: xdma: Add user interface") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Reviewed-by: Eddie James <eajames@linux.ibm.com> Link: https://lore.kernel.org/r/20200930090334.GB621698@mwanda Signed-off-by: Joel Stanley <joel@jms.id.au>
2020-10-06misc: Block error printing on probe defer case in Aspeed LPC ctrlJae Hyun Yoo1-2/+5
This commit adds a checking code when it gets -EPROBE_DEFER while getting a clock resource. In this case it doesn't need to print out an error message because the probing will be re-visited. Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
2020-10-06misc: Add clock control logic into Aspeed LPC SNOOP driverJae Hyun Yoo1-3/+27
If LPC SNOOP driver is registered ahead of lpc-ctrl module, LPC SNOOP block will be enabled without heart beating of LCLK until lpc-ctrl enables the LCLK. This issue causes improper handling on host interrupts when the host sends interrupt in that time frame. Then kernel eventually forcibly disables the interrupt with dumping stack and printing a 'nobody cared this irq' message out. To prevent this issue, all LPC sub-nodes should enable LCLK individually so this patch adds clock control logic into the LPC SNOOP driver. Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com> Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
2020-10-06Implement a memory driver share memoryCheng C Yang3-0/+173
Implement a memory driver for BMC to access VGA share memory. The driver is used by MDRV2. In MDRV2 BIOS will send whole SMBIOS table to VGA memory and BMC can get the table from VGA memory through this driver. Signed-off-by: Cheng C Yang <cheng.c.yang@intel.com>
2020-10-06Aspeed LPC SIO driverYong Li3-0/+418
Add lpc sio device driver for AST2500/2400 Signed-off-by: Yong Li <yong.b.li@intel.com> Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
2020-10-06misc: aspeed: add lpc mbox driverJae Hyun Yoo3-0/+385
This commit adds back the lpc mbox driver which was removed from the openbmc linux dev-5.2 tree. This driver should be rewritten later. Signed-off-by: Cyril Bur <cyrilbur@gmail.com>" Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com> Signed-off-by: Arun P. Mohanan <arun.p.m@linux.intel.com>
2020-08-31Merge tag 'v5.8.5' into dev-5.8dev-5.8Joel Stanley2-6/+17
This is the 5.8.5 stable release Signed-off-by: Joel Stanley <joel@jms.id.au>
2020-08-19soc: qcom: rpmh-rsc: Set suppress_bind_attrs flagMaulik Shah1-0/+1
[ Upstream commit 1a53ce9ab4faeb841b33d62d23283dc76c0e7c5a ] rpmh-rsc driver is fairly core to system and should not be removable once its probed. However it allows to unbind driver from sysfs using below command which results into a crash on sc7180. echo 18200000.rsc > /sys/bus/platform/drivers/rpmh/unbind Lets prevent unbind at runtime by setting suppress_bind_attrs flag. Reviewed-by: Stephen Boyd <swboyd@chromium.org> Signed-off-by: Maulik Shah <mkshah@codeaurora.org> Link: https://lore.kernel.org/r/1592808805-2437-1-git-send-email-mkshah@codeaurora.org Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-08-19soc: qcom: pdr: Reorder the PD state indication ackSibi Sankar1-1/+3
[ Upstream commit 72fe996f9643043c8f84e32c0610975b01aa555b ] The Protection Domains (PD) have a mechanism to keep its resources enabled until the PD down indication is acked. Reorder the PD state indication ack so that clients get to release the relevant resources before the PD goes down. Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> Reviewed-by: Rishabh Bhatnagar <rishabhb@codeaurora.org> Fixes: fbe639b44a82 ("soc: qcom: Introduce Protection Domain Restart helpers") Reported-by: Rishabh Bhatnagar <rishabhb@codeaurora.org> Signed-off-by: Sibi Sankar <sibis@codeaurora.org> Link: https://lore.kernel.org/r/20200701195954.9007-1-sibis@codeaurora.org Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-08-19soc: qcom: rpmh-rsc: Don't use ktime for timeout in write_tcs_reg_sync()Douglas Anderson1-5/+13
[ Upstream commit be24c6a71ecfbd9436ea1f496eb518a53e06368c ] The write_tcs_reg_sync() may be called after timekeeping is suspended so it's not OK to use ktime. The readl_poll_timeout_atomic() macro implicitly uses ktime. This was causing a warning at suspend time. Change to just loop 1000000 times with a delay of 1 us between loops. This may give a timeout of more than 1 second but never less and is safe even if timekeeping is suspended. NOTE: I don't have any actual evidence that we need to loop here. It's possibly that all we really need to do is just read the value back to ensure that the pipes are cleaned and the looping/comparing is totally not needed. I never saw the loop being needed in my tests. However, the loop shouldn't hurt. Reviewed-by: Stephen Boyd <sboyd@kernel.org> Reviewed-by: Maulik Shah <mkshah@codeaurora.org> Fixes: 91160150aba0 ("soc: qcom: rpmh-rsc: Timeout after 1 second in write_tcs_reg_sync()") Reported-by: Maulik Shah <mkshah@codeaurora.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://lore.kernel.org/r/20200528074530.1.Ib86e5b406fe7d16575ae1bb276d650faa144b63c@changeid Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-08-06soc: aspeed-lpc-ctrl: Fix printf warningJoel Stanley1-4/+4
>> drivers/soc/aspeed/aspeed-lpc-ctrl.c:247:17: warning: format '%zu' expects argument of type 'size_t', but argument 3 has type 'resource_size_t' {aka 'unsigned int'} [-Wformat=] Documentation/core-api/printk-formats.rst suggests %pa should work for resouce_size_t, but it did not: %pa[p] 0x01234567 or 0x0123456789abcdef For printing a phys_addr_t type (and its derivatives, such as resource_size_t) which can vary based on build options, regardless of the width of the CPU data path. Instead cast to an integer which works as all aspeed processors are 32-bit. OpenBMC-Staging-Count: 2 Signed-off-by: Joel Stanley <joel@jms.id.au>
2020-08-06soc: aspeed: xdma: Add reset ioctlEddie James1-0/+32
Users of the XDMA engine need a way to reset it if something goes wrong. Problems on the host side, or user error, such as incorrect host address, may result in the DMA operation never completing and no way to determine what went wrong. Therefore, add an ioctl to reset the engine so that users can recover in this situation. OpenBMC-Staging-Count: 2 Signed-off-by: Eddie James <eajames@linux.ibm.com> Acked-by: Andrew Jeffery <andrew@aj.id.au> Signed-off-by: Joel Stanley <joel@jms.id.au>
2020-08-06soc: aspeed: xdma: Add user interfaceEddie James1-0/+218
This commits adds a miscdevice to provide a user interface to the XDMA engine. The interface provides the write operation to start DMA operations. The DMA parameters are passed as the data to the write call. The actual data to transfer is NOT passed through write. Note that both directions of DMA operation are accomplished through the write command; BMC to host and host to BMC. The XDMA driver reserves an area of physical memory for DMA operations, as the XDMA engine is restricted to accessing certain physical memory areas on some platforms. This memory forms a pool from which users can allocate pages for their usage with calls to mmap. The space allocated by a client will be the space used in the DMA operation. For an "upstream" (BMC to host) operation, the data in the client's area will be transferred to the host. For a "downstream" (host to BMC) operation, the host data will be placed in the client's memory area. Poll is also provided in order to determine when the DMA operation is complete for non-blocking IO. OpenBMC-Staging-Count: 2 Signed-off-by: Eddie James <eajames@linux.ibm.com> Reviewed-by: Andrew Jeffery <andrew@aj.id.au> Signed-off-by: Joel Stanley <joel@jms.id.au>
2020-08-06soc: aspeed: Add XDMA Engine DriverEddie James3-0/+964
The XDMA engine embedded in the AST2500 and AST2600 SOCs performs PCI DMA operations between the SOC (acting as a BMC) and a host processor in a server. This commit adds a driver to control the XDMA engine and adds functions to initialize the hardware and memory and start DMA operations. OpenBMC-Staging-Count: 2 Signed-off-by: Eddie James <eajames@linux.ibm.com> Reviewed-by: Andrew Jeffery <andrew@aj.id.au> Signed-off-by: Joel Stanley <joel@jms.id.au>
2020-08-06soc: aspeed-lpc-ctrl: LPC to AHB mapping on ast2600Joel Stanley1-0/+17
The ast2600 disables the mapping of AHB memory regions by default, only allowing the LPC window to point to SPI NOR. In order to point the window to any AHB address, an ast2600 specific bit must be toggled. OpenBMC-Staging-Count: 3 Signed-off-by: Joel Stanley <joel@jms.id.au>
2020-08-06soc: aspeed: Fail probe of lpc-ctrl if reserved memory is not alignedAndrew Jeffery1-0/+13
Alignment is a hardware constraint of the LPC2AHB bridge, and misaligned reserved memory will present as corrupted data. OpenBMC-Staging-Count: 4 Signed-off-by: Andrew Jeffery <andrew@aj.id.au> Signed-off-by: Joel Stanley <joel@jms.id.au>
2020-08-06soc: aspeed: lpc: Add G6 compatible stringsBrad Bishop2-0/+3
The AST2600(G6) has the same lpc-ctrl and lpc-snoop devices as the AST2500. OpenBMC-Staging-Count: 4 Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com> Acked-by: Andrew Jeffery <andrew@aj.id.au> Signed-off-by: Joel Stanley <joel@jms.id.au>
2020-08-06soc: aspeed: Miscellaneous control interfacesAndrew Jeffery3-0/+199
The ASPEED BMC SoCs have many knobs and switches that are sometimes design-specific and often defy any approach to unify them under an existing subsystem. Add a driver to translate a devicetree table into sysfs entries to expose bits and fields for manipulation from userspace. This encompasses concepts from scratch registers to boolean conditions to enable or disable host interface features. OpenBMC-Staging-Count: 11 Signed-off-by: Andrew Jeffery <andrew@aj.id.au> Signed-off-by: Joel Stanley <joel@jms.id.au>
2020-07-16Merge tag 'imx-fixes-5.8-2' of ↵Arnd Bergmann1-0/+3
git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into arm/fixes i.MX fixes for 5.8, round 2: - A couple of fixes on i.MX platform device registration code to stop the use of invalid IRQ 0. - Fix a regression seen on ls1021a platform, caused by commit 52102a3ba6a61 ("soc: imx: move cpu code to drivers/soc/imx"). - Fix a misconfiguration of audio SSI on imx6qdl-gw551x board. * tag 'imx-fixes-5.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux: soc: imx: check ls1021a ARM: imx: Remove imx_add_imx_dma() unused irq_err argument ARM: imx: Provide correct number of resources when registering gpio devices ARM: dts: imx6qdl-gw551x: fix audio SSI Link: https://lore.kernel.org/r/20200714145649.GP15718@dragon Signed-off-by: Arnd Bergmann <arnd@arndb.de>