mirror of
https://github.com/LuckfoxTECH/luckfox-pico.git
synced 2026-01-19 09:52:31 +01:00
project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches.
project:cfg:BoardConfig_IPC: Added fastboot BoardConfig file and firmware post-scripts, distinguishing between the BoardConfigs for Luckfox Pico Pro and Luckfox Pico Max. project:app: Added fastboot_client and rk_smart_door for quick boot applications; updated rkipc app to adapt to the latest media library. media:samples: Added more usage examples. media:rockit: Fixed bugs; removed support for retrieving data frames from VPSS. media:isp: Updated rkaiq library and related tools to support connection to RKISP_Tuner. sysdrv:Makefile: Added support for compiling drv_ko on Luckfox Pico Ultra W using Ubuntu; added support for custom root filesystem. sysdrv:tools:board: Updated Buildroot optional mirror sources, updated some software versions, and stored device tree files and configuration files that undergo multiple modifications for U-Boot and kernel separately. sysdrv:source:mcu: Used RISC-V MCU SDK with RT-Thread system, mainly for initializing camera AE during quick boot. sysdrv:source:uboot: Added support for fastboot; added high baud rate DDR bin for serial firmware upgrades. sysdrv:source:kernel: Upgraded to version 5.10.160; increased NPU frequency for RV1106G3; added support for fastboot. Signed-off-by: luckfox-eng29 <eng29@luckfox.com>
This commit is contained in:
@@ -41,6 +41,7 @@ struct qcom_sysmon {
|
||||
struct completion comp;
|
||||
struct completion ind_comp;
|
||||
struct completion shutdown_comp;
|
||||
struct completion ssctl_comp;
|
||||
struct mutex lock;
|
||||
|
||||
bool ssr_ack;
|
||||
@@ -422,6 +423,8 @@ static int ssctl_new_server(struct qmi_handle *qmi, struct qmi_service *svc)
|
||||
|
||||
svc->priv = sysmon;
|
||||
|
||||
complete(&sysmon->ssctl_comp);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -478,6 +481,7 @@ static int sysmon_start(struct rproc_subdev *subdev)
|
||||
.ssr_event = SSCTL_SSR_EVENT_AFTER_POWERUP
|
||||
};
|
||||
|
||||
reinit_completion(&sysmon->ssctl_comp);
|
||||
mutex_lock(&sysmon->state_lock);
|
||||
sysmon->state = SSCTL_SSR_EVENT_AFTER_POWERUP;
|
||||
blocking_notifier_call_chain(&sysmon_notifiers, 0, (void *)&event);
|
||||
@@ -520,6 +524,11 @@ static void sysmon_stop(struct rproc_subdev *subdev, bool crashed)
|
||||
if (crashed)
|
||||
return;
|
||||
|
||||
if (sysmon->ssctl_instance) {
|
||||
if (!wait_for_completion_timeout(&sysmon->ssctl_comp, HZ / 2))
|
||||
dev_err(sysmon->dev, "timeout waiting for ssctl service\n");
|
||||
}
|
||||
|
||||
if (sysmon->ssctl_version)
|
||||
ssctl_request_shutdown(sysmon);
|
||||
else if (sysmon->ept)
|
||||
@@ -606,6 +615,7 @@ struct qcom_sysmon *qcom_add_sysmon_subdev(struct rproc *rproc,
|
||||
init_completion(&sysmon->comp);
|
||||
init_completion(&sysmon->ind_comp);
|
||||
init_completion(&sysmon->shutdown_comp);
|
||||
init_completion(&sysmon->ssctl_comp);
|
||||
mutex_init(&sysmon->lock);
|
||||
mutex_init(&sysmon->state_lock);
|
||||
|
||||
|
||||
@@ -415,6 +415,7 @@ static int wcnss_request_irq(struct qcom_wcnss *wcnss,
|
||||
irq_handler_t thread_fn)
|
||||
{
|
||||
int ret;
|
||||
int irq_number;
|
||||
|
||||
ret = platform_get_irq_byname(pdev, name);
|
||||
if (ret < 0 && optional) {
|
||||
@@ -425,14 +426,19 @@ static int wcnss_request_irq(struct qcom_wcnss *wcnss,
|
||||
return ret;
|
||||
}
|
||||
|
||||
irq_number = ret;
|
||||
|
||||
ret = devm_request_threaded_irq(&pdev->dev, ret,
|
||||
NULL, thread_fn,
|
||||
IRQF_TRIGGER_RISING | IRQF_ONESHOT,
|
||||
"wcnss", wcnss);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "request %s IRQ failed\n", name);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return ret;
|
||||
/* Return the IRQ number if the IRQ was successfully acquired */
|
||||
return irq_number;
|
||||
}
|
||||
|
||||
static int wcnss_alloc_memory_region(struct qcom_wcnss *wcnss)
|
||||
|
||||
@@ -2000,7 +2000,7 @@ int rproc_set_firmware(struct rproc *rproc, const char *fw_name)
|
||||
goto out;
|
||||
}
|
||||
|
||||
kfree(rproc->firmware);
|
||||
kfree_const(rproc->firmware);
|
||||
rproc->firmware = p;
|
||||
|
||||
out:
|
||||
|
||||
@@ -1283,6 +1283,7 @@ static int k3_r5_cluster_of_init(struct platform_device *pdev)
|
||||
if (!cpdev) {
|
||||
ret = -ENODEV;
|
||||
dev_err(dev, "could not get R5 core platform device\n");
|
||||
of_node_put(child);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@@ -1291,6 +1292,7 @@ static int k3_r5_cluster_of_init(struct platform_device *pdev)
|
||||
dev_err(dev, "k3_r5_core_of_init failed, ret = %d\n",
|
||||
ret);
|
||||
put_device(&cpdev->dev);
|
||||
of_node_put(child);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user