mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2024-12-22 12:21:18 +00:00
boot2: update for 16.0.0
This commit is contained in:
parent
cb89c66bd8
commit
e46e7e0eb1
15 changed files with 68 additions and 11 deletions
|
@ -44,6 +44,8 @@ namespace ams::fs {
|
||||||
SystemProperEncryption = 32,
|
SystemProperEncryption = 32,
|
||||||
SystemProperPartition = 33,
|
SystemProperPartition = 33,
|
||||||
SignedSystemPartitionOnSafeMode = 34,
|
SignedSystemPartitionOnSafeMode = 34,
|
||||||
|
DeviceTreeBlob = 35,
|
||||||
|
System0 = 36,
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *GetBisMountName(BisPartitionId id);
|
const char *GetBisMountName(BisPartitionId id);
|
||||||
|
|
|
@ -15,16 +15,10 @@
|
||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <stratosphere/fs/fs_common.hpp>
|
#include <stratosphere/fs/fs_common.hpp>
|
||||||
|
#include <stratosphere/fs/fs_content_storage_id.hpp>
|
||||||
|
|
||||||
namespace ams::fs {
|
namespace ams::fs {
|
||||||
|
|
||||||
/* ACCURATE_TO_VERSION: Unknown */
|
|
||||||
enum class ContentStorageId : u32 {
|
|
||||||
System = 0,
|
|
||||||
User = 1,
|
|
||||||
SdCard = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
constexpr inline const char * const ContentStorageDirectoryName = "Contents";
|
constexpr inline const char * const ContentStorageDirectoryName = "Contents";
|
||||||
|
|
||||||
const char *GetContentStorageMountName(ContentStorageId id);
|
const char *GetContentStorageMountName(ContentStorageId id);
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) Atmosphère-NX
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms and conditions of the GNU General Public License,
|
||||||
|
* version 2, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope 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.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
#include <vapours.hpp>
|
||||||
|
|
||||||
|
namespace ams::fs {
|
||||||
|
|
||||||
|
/* ACCURATE_TO_VERSION: 16.2.0.0 */
|
||||||
|
enum class ContentStorageId : u32 {
|
||||||
|
System = 0,
|
||||||
|
User = 1,
|
||||||
|
SdCard = 2,
|
||||||
|
System0 = 3,
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -17,6 +17,7 @@
|
||||||
#include <stratosphere/ncm/ncm_content_meta_database.hpp>
|
#include <stratosphere/ncm/ncm_content_meta_database.hpp>
|
||||||
#include <stratosphere/ncm/ncm_content_storage.hpp>
|
#include <stratosphere/ncm/ncm_content_storage.hpp>
|
||||||
#include <stratosphere/ncm/ncm_i_content_manager.hpp>
|
#include <stratosphere/ncm/ncm_i_content_manager.hpp>
|
||||||
|
#include <stratosphere/fs/fs_content_storage_id.hpp>
|
||||||
|
|
||||||
namespace ams::ncm {
|
namespace ams::ncm {
|
||||||
|
|
||||||
|
@ -46,6 +47,8 @@ namespace ams::ncm {
|
||||||
|
|
||||||
Result InvalidateRightsIdCache();
|
Result InvalidateRightsIdCache();
|
||||||
|
|
||||||
|
Result ActivateFsContentStorage(fs::ContentStorageId fs_content_storage_id);
|
||||||
|
|
||||||
/* Deprecated API. */
|
/* Deprecated API. */
|
||||||
Result CloseContentStorageForcibly(StorageId storage_id);
|
Result CloseContentStorageForcibly(StorageId storage_id);
|
||||||
Result CloseContentMetaDatabaseForcibly(StorageId storage_id);
|
Result CloseContentMetaDatabaseForcibly(StorageId storage_id);
|
||||||
|
|
|
@ -151,6 +151,7 @@ namespace ams::ncm {
|
||||||
Result InactivateContentMetaDatabase(StorageId storage_id);
|
Result InactivateContentMetaDatabase(StorageId storage_id);
|
||||||
Result InvalidateRightsIdCache();
|
Result InvalidateRightsIdCache();
|
||||||
Result GetMemoryReport(sf::Out<MemoryReport> out);
|
Result GetMemoryReport(sf::Out<MemoryReport> out);
|
||||||
|
Result ActivateFsContentStorage(fs::ContentStorageId fs_content_storage_id);
|
||||||
};
|
};
|
||||||
static_assert(IsIContentManager<ContentManagerImpl>);
|
static_assert(IsIContentManager<ContentManagerImpl>);
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include <stratosphere/ncm/ncm_i_content_storage.hpp>
|
#include <stratosphere/ncm/ncm_i_content_storage.hpp>
|
||||||
#include <stratosphere/ncm/ncm_i_content_meta_database.hpp>
|
#include <stratosphere/ncm/ncm_i_content_meta_database.hpp>
|
||||||
#include <stratosphere/ncm/ncm_memory_report.hpp>
|
#include <stratosphere/ncm/ncm_memory_report.hpp>
|
||||||
|
#include <stratosphere/fs/fs_content_storage_id.hpp>
|
||||||
|
|
||||||
#define AMS_NCM_I_CONTENT_MANAGER_INTERFACE_INFO(C, H) \
|
#define AMS_NCM_I_CONTENT_MANAGER_INTERFACE_INFO(C, H) \
|
||||||
AMS_SF_METHOD_INFO(C, H, 0, Result, CreateContentStorage, (ncm::StorageId storage_id), (storage_id)) \
|
AMS_SF_METHOD_INFO(C, H, 0, Result, CreateContentStorage, (ncm::StorageId storage_id), (storage_id)) \
|
||||||
|
@ -33,6 +34,7 @@
|
||||||
AMS_SF_METHOD_INFO(C, H, 11, Result, ActivateContentMetaDatabase, (ncm::StorageId storage_id), (storage_id), hos::Version_2_0_0) \
|
AMS_SF_METHOD_INFO(C, H, 11, Result, ActivateContentMetaDatabase, (ncm::StorageId storage_id), (storage_id), hos::Version_2_0_0) \
|
||||||
AMS_SF_METHOD_INFO(C, H, 12, Result, InactivateContentMetaDatabase, (ncm::StorageId storage_id), (storage_id), hos::Version_2_0_0) \
|
AMS_SF_METHOD_INFO(C, H, 12, Result, InactivateContentMetaDatabase, (ncm::StorageId storage_id), (storage_id), hos::Version_2_0_0) \
|
||||||
AMS_SF_METHOD_INFO(C, H, 13, Result, InvalidateRightsIdCache, (), (), hos::Version_9_0_0) \
|
AMS_SF_METHOD_INFO(C, H, 13, Result, InvalidateRightsIdCache, (), (), hos::Version_9_0_0) \
|
||||||
AMS_SF_METHOD_INFO(C, H, 14, Result, GetMemoryReport, (sf::Out<ncm::MemoryReport> out), (out), hos::Version_10_0_0)
|
AMS_SF_METHOD_INFO(C, H, 14, Result, GetMemoryReport, (sf::Out<ncm::MemoryReport> out), (out), hos::Version_10_0_0) \
|
||||||
|
AMS_SF_METHOD_INFO(C, H, 15, Result, ActivateFsContentStorage, (fs::ContentStorageId fs_storage_id), (fs_storage_id)) /* Technically min 16.0.0, but used. */
|
||||||
|
|
||||||
AMS_SF_DEFINE_INTERFACE(ams::ncm, IContentManager, AMS_NCM_I_CONTENT_MANAGER_INTERFACE_INFO, 0xFDB4FFE1);
|
AMS_SF_DEFINE_INTERFACE(ams::ncm, IContentManager, AMS_NCM_I_CONTENT_MANAGER_INTERFACE_INFO, 0xFDB4FFE1);
|
||||||
|
|
|
@ -98,6 +98,7 @@ namespace ams::ncm {
|
||||||
static const SystemProgramId Pgl;
|
static const SystemProgramId Pgl;
|
||||||
static const SystemProgramId Omm;
|
static const SystemProgramId Omm;
|
||||||
static const SystemProgramId Eth;
|
static const SystemProgramId Eth;
|
||||||
|
static const SystemProgramId Ngc;
|
||||||
|
|
||||||
static const SystemProgramId End;
|
static const SystemProgramId End;
|
||||||
|
|
||||||
|
@ -205,6 +206,7 @@ namespace ams::ncm {
|
||||||
inline constexpr const SystemProgramId SystemProgramId::Pgl = { 0x0100000000000042ul };
|
inline constexpr const SystemProgramId SystemProgramId::Pgl = { 0x0100000000000042ul };
|
||||||
inline constexpr const SystemProgramId SystemProgramId::Omm = { 0x0100000000000045ul };
|
inline constexpr const SystemProgramId SystemProgramId::Omm = { 0x0100000000000045ul };
|
||||||
inline constexpr const SystemProgramId SystemProgramId::Eth = { 0x0100000000000046ul };
|
inline constexpr const SystemProgramId SystemProgramId::Eth = { 0x0100000000000046ul };
|
||||||
|
inline constexpr const SystemProgramId SystemProgramId::Ngc = { 0x0100000000000050ul };
|
||||||
|
|
||||||
inline constexpr const SystemProgramId SystemProgramId::End = { 0x01000000000007FFul };
|
inline constexpr const SystemProgramId SystemProgramId::End = { 0x01000000000007FFul };
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,7 @@ namespace ams::boot2 {
|
||||||
ncm::SystemProgramId::Profiler, /* profiler */
|
ncm::SystemProgramId::Profiler, /* profiler */
|
||||||
ncm::SystemProgramId::Sdb, /* sdb */
|
ncm::SystemProgramId::Sdb, /* sdb */
|
||||||
ncm::SystemProgramId::Olsc, /* olsc */
|
ncm::SystemProgramId::Olsc, /* olsc */
|
||||||
|
ncm::SystemProgramId::Ngc, /* ngc */
|
||||||
ncm::SystemProgramId::Ngct, /* ngct */
|
ncm::SystemProgramId::Ngct, /* ngct */
|
||||||
};
|
};
|
||||||
constexpr size_t NumAdditionalLaunchPrograms = util::size(AdditionalLaunchPrograms);
|
constexpr size_t NumAdditionalLaunchPrograms = util::size(AdditionalLaunchPrograms);
|
||||||
|
@ -115,6 +116,7 @@ namespace ams::boot2 {
|
||||||
ncm::SystemProgramId::Profiler, /* profiler */
|
ncm::SystemProgramId::Profiler, /* profiler */
|
||||||
ncm::SystemProgramId::Sdb, /* sdb */
|
ncm::SystemProgramId::Sdb, /* sdb */
|
||||||
ncm::SystemProgramId::Olsc, /* olsc */
|
ncm::SystemProgramId::Olsc, /* olsc */
|
||||||
|
ncm::SystemProgramId::Ngc, /* ngc */
|
||||||
ncm::SystemProgramId::Ngct, /* ngct */
|
ncm::SystemProgramId::Ngct, /* ngct */
|
||||||
};
|
};
|
||||||
constexpr size_t NumAdditionalMaintenanceLaunchPrograms = util::size(AdditionalMaintenanceLaunchPrograms);
|
constexpr size_t NumAdditionalMaintenanceLaunchPrograms = util::size(AdditionalMaintenanceLaunchPrograms);
|
||||||
|
@ -399,6 +401,9 @@ namespace ams::boot2 {
|
||||||
LaunchProgram(nullptr, ncm::ProgramLocation::Make(ncm::SystemProgramId::Usb, ncm::StorageId::BuiltInSystem), 0);
|
LaunchProgram(nullptr, ncm::ProgramLocation::Make(ncm::SystemProgramId::Usb, ncm::StorageId::BuiltInSystem), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Activate the system fs content storage. */
|
||||||
|
R_ABORT_UNLESS(ncm::ActivateFsContentStorage(fs::ContentStorageId::System));
|
||||||
|
|
||||||
/* Find out whether we are maintenance mode. */
|
/* Find out whether we are maintenance mode. */
|
||||||
const bool maintenance = IsMaintenanceMode();
|
const bool maintenance = IsMaintenanceMode();
|
||||||
if (maintenance) {
|
if (maintenance) {
|
||||||
|
|
|
@ -118,6 +118,7 @@ namespace ams::fs::impl {
|
||||||
ADD_ENUM_CASE(User);
|
ADD_ENUM_CASE(User);
|
||||||
ADD_ENUM_CASE(System);
|
ADD_ENUM_CASE(System);
|
||||||
ADD_ENUM_CASE(SdCard);
|
ADD_ENUM_CASE(SdCard);
|
||||||
|
ADD_ENUM_CASE(System0);
|
||||||
default: return ToValueString(static_cast<int>(id));
|
default: return ToValueString(static_cast<int>(id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -171,6 +172,8 @@ namespace ams::fs::impl {
|
||||||
ADD_ENUM_CASE(System);
|
ADD_ENUM_CASE(System);
|
||||||
ADD_ENUM_CASE(SystemProperEncryption);
|
ADD_ENUM_CASE(SystemProperEncryption);
|
||||||
ADD_ENUM_CASE(SystemProperPartition);
|
ADD_ENUM_CASE(SystemProperPartition);
|
||||||
|
ADD_ENUM_CASE(DeviceTreeBlob);
|
||||||
|
ADD_ENUM_CASE(System0);
|
||||||
default: return ToValueString(static_cast<int>(id));
|
default: return ToValueString(static_cast<int>(id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace ams::fs::impl {
|
||||||
#define ADD_ENUM_CASE(v) case v: return #v
|
#define ADD_ENUM_CASE(v) case v: return #v
|
||||||
|
|
||||||
template<> const char *IdString::ToString<pkg1::KeyGeneration>(pkg1::KeyGeneration id) {
|
template<> const char *IdString::ToString<pkg1::KeyGeneration>(pkg1::KeyGeneration id) {
|
||||||
static_assert(pkg1::KeyGeneration_Current == pkg1::KeyGeneration_15_0_0);
|
static_assert(pkg1::KeyGeneration_Current == pkg1::KeyGeneration_16_0_0);
|
||||||
switch (id) {
|
switch (id) {
|
||||||
using enum pkg1::KeyGeneration;
|
using enum pkg1::KeyGeneration;
|
||||||
case KeyGeneration_1_0_0: return "1.0.0-2.3.0";
|
case KeyGeneration_1_0_0: return "1.0.0-2.3.0";
|
||||||
|
@ -38,7 +38,8 @@ namespace ams::fs::impl {
|
||||||
case KeyGeneration_12_1_0: return "12.1.0";
|
case KeyGeneration_12_1_0: return "12.1.0";
|
||||||
case KeyGeneration_13_0_0: return "13.0.0-13.2.1";
|
case KeyGeneration_13_0_0: return "13.0.0-13.2.1";
|
||||||
case KeyGeneration_14_0_0: return "14.0.0-14.1.2";
|
case KeyGeneration_14_0_0: return "14.0.0-14.1.2";
|
||||||
case KeyGeneration_15_0_0: return "15.0.0-";
|
case KeyGeneration_15_0_0: return "15.0.0-15.0.1";
|
||||||
|
case KeyGeneration_16_0_0: return "16.0.0-";
|
||||||
default: return "Unknown";
|
default: return "Unknown";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,6 +114,10 @@ namespace ams::ncm {
|
||||||
R_RETURN(g_content_manager->InvalidateRightsIdCache());
|
R_RETURN(g_content_manager->InvalidateRightsIdCache());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result ActivateFsContentStorage(fs::ContentStorageId fs_content_storage_id) {
|
||||||
|
R_RETURN(g_content_manager->ActivateFsContentStorage(fs_content_storage_id));
|
||||||
|
}
|
||||||
|
|
||||||
/* Deprecated API. */
|
/* Deprecated API. */
|
||||||
Result CloseContentStorageForcibly(StorageId storage_id) {
|
Result CloseContentStorageForcibly(StorageId storage_id) {
|
||||||
AMS_ABORT_UNLESS(hos::GetVersion() == hos::Version_1_0_0);
|
AMS_ABORT_UNLESS(hos::GetVersion() == hos::Version_1_0_0);
|
||||||
|
|
|
@ -675,6 +675,12 @@ namespace ams::ncm {
|
||||||
R_SUCCEED();
|
R_SUCCEED();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result ContentManagerImpl::ActivateFsContentStorage(fs::ContentStorageId fs_content_storage_id) {
|
||||||
|
/* TODO */
|
||||||
|
AMS_UNUSED(fs_content_storage_id);
|
||||||
|
R_SUCCEED();
|
||||||
|
}
|
||||||
|
|
||||||
Result ContentManagerImpl::GetMemoryReport(sf::Out<MemoryReport> out) {
|
Result ContentManagerImpl::GetMemoryReport(sf::Out<MemoryReport> out) {
|
||||||
/* Populate content meta resource states. */
|
/* Populate content meta resource states. */
|
||||||
MemoryReport report = {
|
MemoryReport report = {
|
||||||
|
|
|
@ -99,6 +99,10 @@ namespace ams::ncm {
|
||||||
AMS_UNUSED(out);
|
AMS_UNUSED(out);
|
||||||
AMS_ABORT();
|
AMS_ABORT();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result ActivateFsContentStorage(fs::ContentStorageId fs_content_storage_id) {
|
||||||
|
R_RETURN(::ncmActivateFsContentStorage(static_cast<::FsContentStorageId>(util::ToUnderlying(fs_content_storage_id))));
|
||||||
|
}
|
||||||
};
|
};
|
||||||
static_assert(ncm::IsIContentManager<RemoteContentManagerImpl>);
|
static_assert(ncm::IsIContentManager<RemoteContentManagerImpl>);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
"permissions": "0xFFFFFFFFFFFFFFFF"
|
"permissions": "0xFFFFFFFFFFFFFFFF"
|
||||||
},
|
},
|
||||||
"service_host": ["*"],
|
"service_host": ["*"],
|
||||||
"service_access": ["fsp-srv", "gpio", "htc", "lr", "pm:bm", "pm:shell", "pm:info", "set:sys"],
|
"service_access": ["fsp-srv", "gpio", "htc", "lr", "ncm", "pm:bm", "pm:shell", "pm:info", "set:sys"],
|
||||||
"kernel_capabilities": [
|
"kernel_capabilities": [
|
||||||
{
|
{
|
||||||
"type": "kernel_flags",
|
"type": "kernel_flags",
|
||||||
|
|
|
@ -61,6 +61,7 @@ namespace ams {
|
||||||
R_ABORT_UNLESS(pmshellInitialize());
|
R_ABORT_UNLESS(pmshellInitialize());
|
||||||
R_ABORT_UNLESS(setsysInitialize());
|
R_ABORT_UNLESS(setsysInitialize());
|
||||||
gpio::Initialize();
|
gpio::Initialize();
|
||||||
|
ncm::Initialize();
|
||||||
|
|
||||||
/* Mount the SD card. */
|
/* Mount the SD card. */
|
||||||
R_ABORT_UNLESS(fs::MountSdCard("sdmc"));
|
R_ABORT_UNLESS(fs::MountSdCard("sdmc"));
|
||||||
|
|
Loading…
Reference in a new issue