Пример #1
0
static int  __init hisi_log_init(void)
{
	int rc = 0;
#ifdef CONFIG_HISI_RDR
	u32 rdr_int = 0;

	RDR_ASSERT(rdr_afreg(rdr_int, RDR_LOG_BUF_INFO, RDR_STR, LOG_INFO_BUF_LEN));
	log_buf_info = (volatile log_buffer_head *)field_addr(u32, rdr_int);
	RDR_ASSERT(rdr_afreg(rdr_int, RDR_LOG_KERNEL_BUF, RDR_STR, KERNEL_LOG_BUF_LEN));
	res_log_buf = (volatile unsigned char *)field_addr(u32, rdr_int);
	RDR_ASSERT(rdr_afreg(rdr_int, RDR_LOG_EXCEPTION_BUF, RDR_STR, EXCEPTION_LOG_BUF_LEN));
	exception_log_buf = (volatile unsigned char *) field_addr(u32, rdr_int);
#else
	log_buf_info = (volatile log_buffer_head *)ioremap(HISI_LOG_INFO_BASE, LOG_INFO_BUF_LEN);
	res_log_buf = (volatile unsigned char *)ioremap(HISI_KERNEL_LOG_BASE, KERNEL_LOG_BUF_LEN);
	exception_log_buf = (volatile unsigned char *)ioremap(HISI_EXCEPTION_LOG_BASE, EXCEPTION_LOG_BUF_LEN);
#endif
	pr_info("k3log_init\n");
	hilog_loaded  = 1;




	return rc;
}
Пример #2
0
StoreStatement* NodeBuilder::store_field(Expression* group_addr,
					 LString field_name,
					 Expression* value)
{
  FieldAccessExpression* fexp = field_addr(group_addr, field_name);
  return store(fexp, value);
}
static int hisi_sim_hotplug_probe(struct platform_device *pdev)
{
	struct hisi_sim_hotplug_info *info;
	struct device_node *np = NULL;
	struct device *dev = NULL;
	int ret = 0;
#ifdef CONFIG_HISI_RDR
	static int g_rdr_flag = 0;
	u32 rdr_int = 0;
#endif
	int shared_irq = 0;

	if (pdev == NULL) {
		pr_err("[%s]sim_hotplug get  platform device para is err!\n", __func__);
		return -EINVAL;
	}

	dev = &pdev->dev;
	np = dev->of_node;

	info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL);
	if (!info) {
		dev_err(&pdev->dev, "failed to allocate memory\n");
		return -ENOMEM;
	}

	ret = get_iomux_base_addr(info);
	if (ret < 0) {
		dev_err(&pdev->dev, "failed to get iomux base addr\n");
		return ret;
	}

#ifdef CONFIG_HISI_RDR
	if (g_rdr_flag == 0) {
		RDR_ASSERT(rdr_afreg(rdr_int, RDR_LOG_SIMHOTPLUG_BUF, RDR_U32, LOG_SIMHOTPLUG_BUF_LEN));
		g_log_org = (sim_log *)field_addr(u32, rdr_int);
		memset(g_log_org, 0xFF, MAX_SIM_HOTPLUG_LOG * sizeof(sim_log));
		g_rdr_flag = 1;

		pr_info("%s, g_log_org=%p, rdr_int=0x%x\n", __func__, g_log_org, rdr_int);
	}
#endif

	ret = sim_pmu_hpd_init();
	if (ret < 0) {
		dev_err(&pdev->dev, "failed to sim_pmu_hpd_init\n");
		return ret;
	}

    sim_read_pmu_settings(info, np);
    sim_pmu_hpd_write(info);
    sim_pmu_hpd_read();

	ret = sim_hotplug_dt_init(info, np, dev);
	if (ret < 0) {
		dev_err(&pdev->dev, "failed to set sim hotplug gpio hw init\n");
		return ret;
	}

	ret = sim_state_init(info, dev);
	if (ret < 0) {
		dev_err(&pdev->dev, "failed to set sim state hw init\n");
		goto free_sim_det_wq;
	}

	if (of_property_read_u32(np, "shared-irq", &shared_irq))
	{
		dev_info(dev, "shared-irq property not found, using "
		"value of 0 as default\n");
		shared_irq = 0;
	}

	if (shared_irq)
	{
		ret = request_threaded_irq(info->det_irq, sim_det_irq_handler, NULL,
				IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_NO_SUSPEND | IRQF_SHARED,
				"sim_det", info);
	}
	else
	{
		ret = request_threaded_irq(info->det_irq, sim_det_irq_handler, NULL,
				IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_NO_SUSPEND,
				   "sim_det", info);
	}

	if (ret < 0) {
		dev_err(&pdev->dev, "failed to requset sim_det irq!\n");
		goto free_sim_lock;
	}

	if (0 == info->sim_id) {
		sys_add_sim_node();
	}

	platform_set_drvdata(pdev, info);

	return ret;

free_sim_lock:
	wake_lock_destroy(&info->sim_hotplug_wklock);
	mutex_destroy(&info->sim_hotplug_lock);
free_sim_det_wq:
	if (info->sim_hotplug_det_wq)
		destroy_workqueue(info->sim_hotplug_det_wq);

	return ret;
}
static int hisi_sim_hotplug_probe(struct platform_device *pdev)
{
	struct hisi_sim_hotplug_info *info;
	struct device_node *np = NULL;
	struct device *dev = NULL;
	int ret = 0;
#ifdef CONFIG_HISI_RDR
	static int g_rdr_flag = 0;
	u32 rdr_int = 0;
#endif

	if (pdev == NULL) {
		pr_err("[%s]sim_hotplug get  platform device para is err!\n", __func__);
		return -EINVAL;
	}

	dev = &pdev->dev;
	np = dev->of_node;

	info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL);
	if (!info) {
		dev_err(&pdev->dev, "failed to allocate memory\n");
		return -ENOMEM;
	}

	ret = get_iomux_base_addr(info);
	if (ret < 0) {
		dev_err(&pdev->dev, "failed to get iomux base addr\n");
		return ret;
	}

#ifdef CONFIG_HISI_RDR
	if (g_rdr_flag == 0) {
		RDR_ASSERT(rdr_afreg(rdr_int, RDR_LOG_SIMHOTPLUG_BUF, RDR_U32, LOG_SIMHOTPLUG_BUF_LEN));
		g_log_org = (sim_log *)field_addr(u32, rdr_int);

		memset(g_log_org, 0xFF, MAX_SIM_HOTPLUG_LOG * sizeof(sim_log));
		g_rdr_flag = 1;
	}
#endif

	ret = sim_hotplug_dt_init(info, np, dev);
	if (ret < 0) {
		dev_err(&pdev->dev, "failed to set sim hotplug gpio hw init\n");
		return ret;
	}

	ret = sim_state_init(info, dev);
	if (ret < 0) {
		dev_err(&pdev->dev, "failed to set sim state hw init\n");
		goto free_sim_det_wq;
	}

	ret = request_threaded_irq(info->det_irq, sim_det_irq_handler, NULL,
				IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_NO_SUSPEND,
				   "sim_det", info);
	if (ret < 0) {
		dev_err(&pdev->dev, "failed to requset sim_det irq!\n");
		goto free_sim_lock;
	}

	platform_set_drvdata(pdev, info);

	return ret;

free_sim_lock:
	wake_lock_destroy(&info->sim_hotplug_wklock);
	mutex_destroy(&info->sim_hotplug_lock);
free_sim_det_wq:
	if (info->sim_hotplug_det_wq)
		destroy_workqueue(info->sim_hotplug_det_wq);

	return ret;
}
Пример #5
0
Expression* NodeBuilder::load_field(Expression* grp_addr,
				    LString field_name)
{
  Expression* faddr = field_addr(grp_addr, field_name);
  return load(faddr);
}