/*
 * Copyright (c) 2021 The Linux Foundation. All rights reserved.

 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only 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.
 */
#include <common.h>
#include <malloc.h>
#include <asm/arch-qca-common/smem.h>

#define ANDROID_AB_SLOT_ARG "androidboot.slot_suffix"

const char *android_get_active_slot(void)
{
    /* hard-code to slot "a" as of now */
    if (get_rootfs_active_partition() == 0) {
          return "_a";
    } else {
          return "_b";
    }
}

void android_set_active_slot_bootargs(void)
{
    int len;
    char buffer[50];
    char *oldargs, *newargs;

    snprintf(buffer, sizeof(buffer), "%s=%s",
             ANDROID_AB_SLOT_ARG, android_get_active_slot());

    len = strlen(buffer) + 1;
    oldargs = getenv("bootargs");
    if (oldargs) {
        len += (strlen(oldargs) + 1);
    }

    newargs = malloc(len);
    if (newargs) {
        newargs[0] = '\0';
        if (oldargs) {
            strcpy(newargs, oldargs);
            strcat(newargs, " ");
        }
        strcat(newargs, buffer);
        setenv("bootargs", newargs);
        free(newargs);
    }
}
