// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (C) 2020 MediaTek Inc. All Rights Reserved.
 *
 * Author: Weijie Gao <weijie.gao@mediatek.com>
 */

#include "mtk-snand-def.h"

int mtk_snand_log(struct mtk_snand_plat_dev *pdev,
		  enum mtk_snand_log_category cat, const char *fmt, ...)
{
	const char *catname = "";
	va_list ap;
	char *msg;

	switch (cat) {
	case SNAND_LOG_NFI:
		catname = "NFI";
		break;
	case SNAND_LOG_SNFI:
		catname = "SNFI";
		break;
	case SNAND_LOG_ECC:
		catname = "ECC";
		break;
	default:
		break;
	}

	va_start(ap, fmt);
	msg = kvasprintf(GFP_KERNEL, fmt, ap);
	va_end(ap);

	if (!msg) {
		dev_warn(pdev->dev, "unable to print log\n");
		return -1;
	}

	if (*catname)
		dev_warn(pdev->dev, "%s: %s", catname, msg);
	else
		dev_warn(pdev->dev, "%s", msg);

	kfree(msg);

	return 0;
}

void mtk_snand_control_poll_mode(struct mtk_snand_plat_dev *pdev, bool enable)
{
	if (!pdev)
		return;

	if (pdev->poll_mode != enable)
		dev_info(pdev->dev, "Poll mode %s\b", enable ? "enabled" :
			 "disabled");

	pdev->poll_mode = enable;
}
