Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
Pull ARM SoC-related driver updates from Olof Johansson: "Various driver updates for platforms: - Nvidia: Fuse support for Tegra194, continued memory controller pieces for Tegra30 - NXP/FSL: Refactorings of QuickEngine drivers to support ARM/ARM64/PPC - NXP/FSL: i.MX8MP SoC driver pieces - TI Keystone: ring accelerator driver - Qualcomm: SCM driver cleanup/refactoring + support for new SoCs. - Xilinx ZynqMP: feature checking interface for firmware. Mailbox communication for power management - Overall support patch set for cpuidle on more complex hierarchies (PSCI-based) and misc cleanups, refactorings of Marvell, TI, other platforms" * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (166 commits) drivers: soc: xilinx: Use mailbox IPI callback dt-bindings: power: reset: xilinx: Add bindings for ipi mailbox drivers: soc: ti: knav_qmss_queue: Pass lockdep expression to RCU lists MAINTAINERS: Add brcmstb PCIe controller entry soc/tegra: fuse: Unmap registers once they are not needed anymore soc/tegra: fuse: Correct straps' address for older Tegra124 device trees soc/tegra: fuse: Warn if straps are not ready soc/tegra: fuse: Cache values of straps and Chip ID registers memory: tegra30-emc: Correct error message for timed out auto calibration memory: tegra30-emc: Firm up hardware programming sequence memory: tegra30-emc: Firm up suspend/resume sequence soc/tegra: regulators: Do nothing if voltage is unchanged memory: tegra: Correct reset value of xusb_hostr soc/tegra: fuse: Add APB DMA dependency for Tegra20 bus: tegra-aconnect: Remove PM_CLK dependency dt-bindings: mediatek: add MT6765 power dt-bindings soc: mediatek: cmdq: delete not used define memory: tegra: Add support for the Tegra194 memory controller memory: tegra: Only include support for enabled SoCs memory: tegra: Support DVFS on Tegra186 and later ...
This commit is contained in:
@@ -84,8 +84,8 @@ static int uhdlc_init(struct ucc_hdlc_private *priv)
|
||||
int ret, i;
|
||||
void *bd_buffer;
|
||||
dma_addr_t bd_dma_addr;
|
||||
u32 riptr;
|
||||
u32 tiptr;
|
||||
s32 riptr;
|
||||
s32 tiptr;
|
||||
u32 gumr;
|
||||
|
||||
ut_info = priv->ut_info;
|
||||
@@ -195,7 +195,7 @@ static int uhdlc_init(struct ucc_hdlc_private *priv)
|
||||
priv->ucc_pram_offset = qe_muram_alloc(sizeof(struct ucc_hdlc_param),
|
||||
ALIGNMENT_OF_UCC_HDLC_PRAM);
|
||||
|
||||
if (IS_ERR_VALUE(priv->ucc_pram_offset)) {
|
||||
if (priv->ucc_pram_offset < 0) {
|
||||
dev_err(priv->dev, "Can not allocate MURAM for hdlc parameter.\n");
|
||||
ret = -ENOMEM;
|
||||
goto free_tx_bd;
|
||||
@@ -233,18 +233,23 @@ static int uhdlc_init(struct ucc_hdlc_private *priv)
|
||||
|
||||
/* Alloc riptr, tiptr */
|
||||
riptr = qe_muram_alloc(32, 32);
|
||||
if (IS_ERR_VALUE(riptr)) {
|
||||
if (riptr < 0) {
|
||||
dev_err(priv->dev, "Cannot allocate MURAM mem for Receive internal temp data pointer\n");
|
||||
ret = -ENOMEM;
|
||||
goto free_tx_skbuff;
|
||||
}
|
||||
|
||||
tiptr = qe_muram_alloc(32, 32);
|
||||
if (IS_ERR_VALUE(tiptr)) {
|
||||
if (tiptr < 0) {
|
||||
dev_err(priv->dev, "Cannot allocate MURAM mem for Transmit internal temp data pointer\n");
|
||||
ret = -ENOMEM;
|
||||
goto free_riptr;
|
||||
}
|
||||
if (riptr != (u16)riptr || tiptr != (u16)tiptr) {
|
||||
dev_err(priv->dev, "MURAM allocation out of addressable range\n");
|
||||
ret = -ENOMEM;
|
||||
goto free_tiptr;
|
||||
}
|
||||
|
||||
/* Set RIPTR, TIPTR */
|
||||
iowrite16be(riptr, &priv->ucc_pram->riptr);
|
||||
@@ -623,8 +628,8 @@ static int ucc_hdlc_poll(struct napi_struct *napi, int budget)
|
||||
|
||||
if (howmany < budget) {
|
||||
napi_complete_done(napi, howmany);
|
||||
qe_setbits32(priv->uccf->p_uccm,
|
||||
(UCCE_HDLC_RX_EVENTS | UCCE_HDLC_TX_EVENTS) << 16);
|
||||
qe_setbits_be32(priv->uccf->p_uccm,
|
||||
(UCCE_HDLC_RX_EVENTS | UCCE_HDLC_TX_EVENTS) << 16);
|
||||
}
|
||||
|
||||
return howmany;
|
||||
@@ -730,8 +735,8 @@ static int uhdlc_open(struct net_device *dev)
|
||||
|
||||
static void uhdlc_memclean(struct ucc_hdlc_private *priv)
|
||||
{
|
||||
qe_muram_free(priv->ucc_pram->riptr);
|
||||
qe_muram_free(priv->ucc_pram->tiptr);
|
||||
qe_muram_free(ioread16be(&priv->ucc_pram->riptr));
|
||||
qe_muram_free(ioread16be(&priv->ucc_pram->tiptr));
|
||||
|
||||
if (priv->rx_bd_base) {
|
||||
dma_free_coherent(priv->dev,
|
||||
|
Reference in New Issue
Block a user