Files
android/drivers/misc/mediatek/mu3d/hal/mu3d_hal_osal.c
T
threeeye bc1d038eac REVVL 6 Pro kernel bring-up: full working tree snapshot (2026-09-12)
Squashed backup commit (no shallow-clone history issues) of
xiaomi-mt6833-dev/kernel_xiaomi_mt6833 (lineage-23.2 branch, upstream
commit 9eece662e) plus all fixes applied to get everpal_defconfig building
clean against a modern (GCC 15.2.0) toolchain -- see the previous commit
message on the lineage-23.2 branch (also in this repo history is not
available here since this is a squashed snapshot; full incremental history
lives in the local DL380 checkout and the upstream GitHub remote).

Upstream: https://github.com/xiaomi-mt6833-dev/kernel_xiaomi_mt6833 (lineage-23.2)
2026-09-12 13:36:46 +00:00

191 lines
3.4 KiB
C

/*
* Copyright (C) 2015 MediaTek Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#define _USB_OSAI_EXT_
#include "mu3d_hal_osal.h"
#undef _USB_OSAI_EXT_
void os_ms_delay(unsigned int ui4_delay)
{
mdelay(ui4_delay);
}
void os_us_delay(unsigned int ui4_delay)
{
udelay(ui4_delay);
}
void os_ms_sleep(unsigned int ui4_sleep)
{
msleep(ui4_sleep);
}
#ifdef NEVER
void os_spin_lock(spinlock_t *lock)
{
/* spin_lock(lock); */
}
void os_spin_unlock(spinlock_t *lock)
{
/* spin_unlock(lock); */
}
#endif /* NEVER */
void os_memcpy(char *pv_to, char *pv_from, size_t z_l)
{
/*FIXME: just use memcpy(), why use this???? */
int i;
if ((pv_to != NULL) || (z_l == 0)) {
for (i = 0; i < z_l; i++)
*(pv_to + i) = *(pv_from + i);
} else {
WARN_ON(1);
}
}
#ifdef NEVER
void *os_virt_to_phys(void *vaddr)
{
return virt_to_phys(vaddr);
}
#endif /* NEVER */
void *os_phys_to_virt(void *paddr)
{
/* return phys_to_virt((phys_addr_t)paddr); */
return phys_to_virt((phys_addr_t) (long)paddr);
}
#ifdef NEVER
void *os_ioremap(void *paddr, unsigned int t_size)
{
/* return ioremap(paddr,t_size); */
return ioremap_nocache(paddr, t_size);
}
void os_iounmap(void *vaddr)
{
iounmap(vaddr);
vaddr = NULL;
}
#endif /* NEVER */
void *os_memset(void *pv_to, unsigned char ui1_c, size_t z_l)
{
if ((pv_to != NULL) || (z_l == 0))
return memset(pv_to, ui1_c, z_l);
/* else */
WARN_ON(1);
return pv_to;
}
void *os_mem_alloc(size_t z_size)
{
void *pv_mem = NULL;
pv_mem = kmalloc(z_size, GFP_NOIO);
if (pv_mem == NULL) {
/*WARNING:OOM_MESSAGE: Possible unnecessary 'out of memory' message*/
/*pr_err("kmalloc fail!!\n");*/
WARN_ON(1);
}
return pv_mem;
}
void os_mem_free(void *pv_mem)
{
kfree(pv_mem);
pv_mem = NULL;
}
void os_disableIrq(unsigned int irq)
{
disable_irq(irq);
os_ms_delay(20);
}
void os_enableIrq(unsigned int irq)
{
enable_irq(irq);
}
void os_clearIrq(unsigned int irq)
{
os_writel(U3D_LV1IECR, os_readl(U3D_LV1ISR));
}
void os_get_random_bytes(void *buf, int nbytes)
{
get_random_bytes(buf, nbytes);
}
void os_disableDcache(void)
{
/* HalDisableDCache(); */
}
void os_flushinvalidateDcache(void)
{
/* HalFlushInvalidateDCache(); */
}
/*----------------------------------------------------------------------------
* Function: os_reg_isr()
*
* Description:
* this API registers an ISR with its vector id. it performs
* 1. parse argument.
* 2. guard isr.
* 3. call OS driver reg isr API.
*
* Inputs:
* ui2_vec_id: an vector id to register an ISR.
* pf_isr: pointer to a ISR to set.
* ppf_old_isr: pointer to hold the current ISR setting.
*
* Outputs:
* None
*---------------------------------------------------------------------------
*/
int os_reg_isr(unsigned int irq, irq_handler_t handler, void *isrbuffer)
{
int i4_ret;
i4_ret = request_irq(irq, handler, /* our handler */
IRQF_TRIGGER_LOW, "usb device handler", isrbuffer);
return i4_ret;
}
void os_free_isr(unsigned int irq, void *isrbuffer)
{
free_irq(irq, isrbuffer);
}