# Host command handler functionality

# Copyright (c) 2020 Google LLC
# SPDX-License-Identifier: Apache-2.0

menu "Host command handler subsystem"

config EC_HOST_CMD
	bool "Support Embedded Controller host command handler subsystem"
	help
	  Enable host command processing for embedded controllers on notebook
	  computers.

if EC_HOST_CMD

module = EC_HC
module-str = ec-host-commands
source "subsys/logging/Kconfig.template.log_config"

config EC_HOST_CMD_HANDLER_STACK_SIZE
	int "Stack size for the EC host command handler thread"
	default 800

config EC_HOST_CMD_HANDLER_TX_BUFFER_SIZE
	int "Buffer size in bytes for TX buffer shared by all EC host commands"
	default 0 if EC_HOST_CMD_BACKEND_ESPI
	default 0 if EC_HOST_CMD_BACKEND_SHI
	default 256 if EC_HOST_CMD_BACKEND_UART
	default 256
	help
	  Buffer size in bytes for TX buffer defined by the host command handler.
	  Some backend layers can define their own buffer, so the size can be zero to
	  avoid duplicating buffers. If multiple backends are used, the size has to be
	  set by user to the largest one.

config EC_HOST_CMD_HANDLER_RX_BUFFER_SIZE
	int "Buffer size in bytes for RX buffer shared by all EC host commands"
	default 256 if EC_HOST_CMD_BACKEND_ESPI
	default 0 if EC_HOST_CMD_BACKEND_SHI
	default 544 if EC_HOST_CMD_BACKEND_UART
	default 256
	help
	  Buffer size in bytes for TX buffer defined by the host command handler.
	  Some backend layers can define their own buffer, so the size can be zero to
	  avoid duplicating buffers. If multiple backends are used, the size has to be
	  set by user to the largest one.

config EC_HOST_CMD_HANDLER_PRIO
	int "Priority of host command task"
	default 13
	help
	  Priority of the kernel task that handles the host commands.
	  If the priority is too low (high in value), the host commands handler may be unable to
	  process the command on time and the AP will abort the waiting for response and be unable
	  to boot the system properly.

config EC_HOST_CMD_INIT_PRIORITY
	int "Initialization priority"
	default 60
	range 0 99
	help
	  Initialization priority for Host Command. It must be higher than the initialization
	  priority of the used backend device.

config EC_HOST_CMD_HANDLER_TX_BUFFER_DEF
	bool
	default y if EC_HOST_CMD_HANDLER_TX_BUFFER_SIZE > 0
	help
	  The handler defines common tx buffer

config EC_HOST_CMD_HANDLER_RX_BUFFER_DEF
	bool
	default y if EC_HOST_CMD_HANDLER_RX_BUFFER_SIZE > 0
	help
	  The handler defines common rx buffer

config EC_HOST_CMD_INITIALIZE_AT_BOOT
	bool "Initialize the host command subsystem automacitlly"
	default y
	help
	  Automatically initialize the host command subsystem with the chosen backend.
	  The ec_host_cmd_init function is called by the chosen backend.

config EC_HOST_CMD_DEDICATED_THREAD
	bool "Create a new task for host command"
	help
	  The ec_host_cmd_init function creates a new thread dedicated for Host Command.
	  Otherwise the ec_host_cmd_task function has to be called within another thread.

config EC_HOST_CMD_IN_PROGRESS_STATUS
	bool "Save status of last IN_PROGRESS command"
	default y if EC_HOST_CMD_BACKEND_SHI
	help
	  Enable support for saving final status of a last command that has sent
	  EC_HOST_CMD_IN_PROGRESS status. The saved status can be get with the
	  ec_host_cmd_send_in_progress_status function.

source "subsys/mgmt/ec_host_cmd/Kconfig.logging"
source "subsys/mgmt/ec_host_cmd/backends/Kconfig"

endif # EC_HOST_CMD

endmenu
