summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-kernel/asahi-sources')
-rw-r--r--sys-kernel/asahi-sources/Manifest6
-rw-r--r--sys-kernel/asahi-sources/asahi-sources-6.8.9_p3.ebuild76
-rw-r--r--sys-kernel/asahi-sources/asahi-sources-6.8.9_p6.ebuild78
-rw-r--r--sys-kernel/asahi-sources/asahi-sources-6.8.9_p7.ebuild82
-rw-r--r--sys-kernel/asahi-sources/files/asahi-6.8-config-gentoo-Drop-RANDSTRUCT-from-GENTOO_KERNEL_SEL.patch40
-rw-r--r--sys-kernel/asahi-sources/files/asahi-6.8.2_revert_spi_stable_asahi.patch46
-rw-r--r--sys-kernel/asahi-sources/files/asahi-sources-6.6.0_p16-enable-speakers-stage1.patch78
-rw-r--r--sys-kernel/asahi-sources/files/asahi-sources-6.6.0_p16-enable-speakers-stage2.patch47
-rw-r--r--sys-kernel/asahi-sources/metadata.xml18
9 files changed, 471 insertions, 0 deletions
diff --git a/sys-kernel/asahi-sources/Manifest b/sys-kernel/asahi-sources/Manifest
new file mode 100644
index 000000000000..c7a4532322d6
--- /dev/null
+++ b/sys-kernel/asahi-sources/Manifest
@@ -0,0 +1,6 @@
+DIST genpatches-6.8-12.base.tar.xz 687664 BLAKE2B 3c27ee511c258f3659d7f8cd5b6d470ffa10a2fc95bd536b272e0bb20c368dfc8c512f23fdc025e85ad90d6f628a58c80d8d15ec0ef8898caf7461162cf2dec2 SHA512 cd845b49341366190834b9782c9ffa270608a35e616ff483b40094913f6d01809421b80a7830117b606e57e6bb0ed9b0ed6dc14220826364fc9d2ee6a5916ad6
+DIST genpatches-6.8-12.extras.tar.xz 3736 BLAKE2B 15a15ca3097dc42ac5855e59fe61c961854c1afa8adc719c761ac58bb7c869d3240c228b0963a91927a9bc0af6998b4c40e4d286faf7d2defc2f21029d11c114 SHA512 4f1c8c07e81c0d1ed110bd4512d2a16c3e202c47d8ab6bedf5213cf6c2f8675e9b543e52dbce50fbbf550d88252e2c1c19c2465ddd7907f11a2979fa92466a7c
+DIST linux-6.8.tar.xz 142502100 BLAKE2B c6f17f816cea16e629f63e9379b98888713f57b2c5173306926471f139a9d612a0c74e119341f8075390e55e203d787d9edeb4ad5a064b18870f6f0f7ffaafb2 SHA512 5c4eb4aa1d3f7d1ea01c0f7ddeadacdece6e144fd4bdfc16b2b925d3e10dc04de3a6db69320b79a96c3560052616f001d2c09e7a1bb4f7b731e2380a7ecce068
+DIST linux-asahi-6.8.9-3.tar.gz 235275610 BLAKE2B 8ee3ff2572a02851d66239c65187312a0f67aa492d9c3b3a734e291b250acbf9450960c745687ff98a339e4cc14a2eab7675c08d39f88de0c0aa7c320d20bdc8 SHA512 ebd854b357a1d0a7663129f48956da559bc23a4347836dd0c3a3eb8cd47013ed86d83711dc2b7a221c28f51bd0c42c0b1ea2302ef45ee4a2ddfbfacf33e6efc2
+DIST linux-asahi-6.8.9-6..asahi-6.8.9-7.patch 6483 BLAKE2B 7a50c83ce70f50f7ac27ca55406edae8941d271d89270eeb3c97fe446f14fb8fd07ef4f9aa3288af24ab8958aff0d250a6762edd87b7453592147216cb65e2f9 SHA512 7d26833d6ca717c48caec655fd78107367c67112b04181be781fb5746d8a00d7927198d67cdd22a4e57b131b0738125087972cd0ba7b0e7e16f04bb3d3301378
+DIST linux-asahi-6.8.9-6.patch 5163031 BLAKE2B de6411c7f6bb95fec4162648c89d6bf6be5e863d4647877c4cbbb9e4c8540b12b1dacd42c26a1d3561a36fe6c79650caf5e0481338764a10101cec53921043c7 SHA512 0cc24bf50c16cb6fc59bf9bd025babcdca081bc789da5791d0fd914c65d31342cc632998fe4a667296ee3ed067b311dc105e994e2a77d569bac3a8ed48fb5ecc
diff --git a/sys-kernel/asahi-sources/asahi-sources-6.8.9_p3.ebuild b/sys-kernel/asahi-sources/asahi-sources-6.8.9_p3.ebuild
new file mode 100644
index 000000000000..ac1ab4ff4d6f
--- /dev/null
+++ b/sys-kernel/asahi-sources/asahi-sources-6.8.9_p3.ebuild
@@ -0,0 +1,76 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="8"
+K_SECURITY_UNSUPPORTED="1"
+ETYPE="sources"
+#K_WANT_GENPATCHES="base extras experimental"
+#K_GENPATCHES_VER="5"
+K_NODRYRUN="1"
+
+inherit kernel-2
+detect_version
+detect_arch
+
+if [[ ${PV} != ${PV/_rc} ]] ; then
+ # $PV is expected to be of following form: 6.0_rc5_p1
+ MY_TAG="$(ver_cut 6)"
+ MY_P="asahi-$(ver_rs 2 - $(ver_cut 1-4))-${MY_TAG}"
+else
+ # $PV is expected to be of following form: 5.19.0_p1
+ MY_TAG="$(ver_cut 5)"
+ if [[ "$(ver_cut 3)" == "0" ]] ; then
+ MY_P="asahi-$(ver_cut 1-2)-${MY_TAG}"
+ else
+ MY_P="asahi-$(ver_cut 1-3)-${MY_TAG}"
+ fi
+fi
+
+DESCRIPTION="Asahi Linux kernel sources"
+HOMEPAGE="https://asahilinux.org"
+KERNEL_URI="https://github.com/AsahiLinux/linux/archive/refs/tags/${MY_P}.tar.gz -> linux-${MY_P}.tar.gz"
+SRC_URI="${KERNEL_URI} ${GENPATCHES_URI} ${ARCH_URI}
+"
+
+KEYWORDS="arm64"
+IUSE="rust"
+
+DEPEND="
+ ${DEPEND}
+ rust? (
+ || (
+ >=dev-lang/rust-bin-1.76[rust-src,rustfmt]
+ >=dev-lang/rust-1.76[rust-src,rustfmt]
+ )
+ dev-util/bindgen
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/asahi-sources-6.6.0_p16-enable-speakers-stage1.patch"
+ "${FILESDIR}/asahi-sources-6.6.0_p16-enable-speakers-stage2.patch"
+)
+
+src_unpack() {
+ unpack linux-${MY_P}.tar.gz
+ mv linux-${MY_P} linux-${KV_FULL} || die "Could not move source tree"
+}
+
+src_prepare() {
+ default
+ cd "${WORKDIR}/linux-${KV-FULL}" || die
+ # XXX: Genpatches do not yet work with Rust kernels
+ #handle_genpatches --set-unipatch-list
+ #[[ -n ${UNIPATCH_LIST} || -n ${UNIPATCH_LIST_GENPATCHES} || -n ${UNIPATCH_LIST_DEFAULT} ]] && \
+ # unipatch "${UNIPATCH_LIST_DEFAULT} ${UNIPATCH_LIST_GENPATCHES} ${UNIPATCH_LIST}"
+ #unpack_fix_install_path
+ #env_setup_xmakeopts
+ echo "-${MY_TAG}" > localversion.10-pkgrel || die
+ cd "${S}" || die
+}
+
+pkg_postinst() {
+ einfo "For more information about Asahi Linux please visit ${HOMEPAGE},"
+ einfo "or consult the Wiki at https://github.com/AsahiLinux/docs/wiki."
+ kernel-2_pkg_postinst
+}
diff --git a/sys-kernel/asahi-sources/asahi-sources-6.8.9_p6.ebuild b/sys-kernel/asahi-sources/asahi-sources-6.8.9_p6.ebuild
new file mode 100644
index 000000000000..a0aa5d1ee2e2
--- /dev/null
+++ b/sys-kernel/asahi-sources/asahi-sources-6.8.9_p6.ebuild
@@ -0,0 +1,78 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="8"
+ETYPE="sources"
+
+CKV="$(ver_cut 1-3)"
+K_SECURITY_UNSUPPORTED="1"
+K_WANT_GENPATCHES="base extras"
+K_GENPATCHES_VER="12"
+K_NODRYRUN="1"
+
+inherit kernel-2
+detect_version
+detect_arch
+
+if [[ ${PV} != ${PV/_rc} ]] ; then
+ # $PV is expected to be of following form: 6.0_rc5_p1
+ MY_TAG="$(ver_cut 6)"
+ MY_BASE="$(ver_rs 2 - $(ver_cut 1-4))"
+else
+ # $PV is expected to be of following form: 5.19.0_p1
+ MY_TAG="$(ver_cut 5)"
+ if [[ "$(ver_cut 3)" == "0" ]] ; then
+ MY_BASE="$(ver_cut 1-2)"
+ else
+ MY_BASE="$(ver_cut 1-3)"
+ fi
+fi
+
+EXTRAVERSION="-asahi-${MY_TAG}"
+
+ASAHI_TAG="asahi-${MY_BASE}-${MY_TAG}"
+
+DESCRIPTION="Asahi Linux kernel sources"
+HOMEPAGE="https://asahilinux.org"
+SRC_URI="${KERNEL_URI} ${GENPATCHES_URI} ${ARCH_URI}
+ https://github.com/AsahiLinux/linux/compare/v${MY_BASE}...${ASAHI_TAG}.patch
+ -> linux-${ASAHI_TAG}.patch
+"
+KV_FULL="${PVR/_p/-asahi-}"
+S="${WORKDIR}/linux-${KV_FULL}"
+
+KEYWORDS="~arm64"
+IUSE="rust"
+
+DEPEND="
+ ${DEPEND}
+ rust? (
+ || (
+ >=dev-lang/rust-bin-1.76[rust-src,rustfmt]
+ >=dev-lang/rust-1.76[rust-src,rustfmt]
+ )
+ dev-util/bindgen
+ )
+"
+
+UNIPATCH_STRICTORDER="yes"
+UNIPATCH_LIST="
+ ${FILESDIR}/asahi-6.8-config-gentoo-Drop-RANDSTRUCT-from-GENTOO_KERNEL_SEL.patch
+ ${FILESDIR}/asahi-6.8.2_revert_spi_stable_asahi.patch
+ ${DISTDIR}/linux-asahi-6.8.9-6.patch
+ ${FILESDIR}/asahi-sources-6.6.0_p16-enable-speakers-stage1.patch
+ ${FILESDIR}/asahi-sources-6.6.0_p16-enable-speakers-stage2.patch
+"
+
+src_prepare() {
+ default
+
+ # remove asahi upstream set localversion, use EXTRAVERSION instead
+ rm localversion.05-asahi
+}
+
+pkg_postinst() {
+ einfo "For more information about Asahi Linux please visit ${HOMEPAGE},"
+ einfo "or consult the Wiki at https://github.com/AsahiLinux/docs/wiki."
+ kernel-2_pkg_postinst
+}
diff --git a/sys-kernel/asahi-sources/asahi-sources-6.8.9_p7.ebuild b/sys-kernel/asahi-sources/asahi-sources-6.8.9_p7.ebuild
new file mode 100644
index 000000000000..2303feb47dc1
--- /dev/null
+++ b/sys-kernel/asahi-sources/asahi-sources-6.8.9_p7.ebuild
@@ -0,0 +1,82 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="8"
+ETYPE="sources"
+
+CKV="$(ver_cut 1-3)"
+K_SECURITY_UNSUPPORTED="1"
+K_WANT_GENPATCHES="base extras"
+K_GENPATCHES_VER="12"
+K_NODRYRUN="1"
+
+inherit kernel-2
+detect_version
+detect_arch
+
+if [[ ${PV} != ${PV/_rc} ]] ; then
+ # $PV is expected to be of following form: 6.0_rc5_p1
+ MY_TAG="$(ver_cut 6)"
+ MY_BASE="$(ver_rs 2 - $(ver_cut 1-4))"
+else
+ # $PV is expected to be of following form: 5.19.0_p1
+ MY_TAG="$(ver_cut 5)"
+ if [[ "$(ver_cut 3)" == "0" ]] ; then
+ MY_BASE="$(ver_cut 1-2)"
+ else
+ MY_BASE="$(ver_cut 1-3)"
+ fi
+fi
+
+EXTRAVERSION="-asahi-${MY_TAG}"
+
+PREV_ASAHI_TAG="asahi-${MY_BASE}-6"
+ASAHI_TAG="asahi-${MY_BASE}-${MY_TAG}"
+
+DESCRIPTION="Asahi Linux kernel sources"
+HOMEPAGE="https://asahilinux.org"
+SRC_URI="${KERNEL_URI} ${GENPATCHES_URI} ${ARCH_URI}
+ https://github.com/AsahiLinux/linux/compare/v${MY_BASE}...${PREV_ASAHI_TAG}.patch
+ -> linux-${PREV_ASAHI_TAG}.patch
+ https://github.com/AsahiLinux/linux/compare/${PREV_ASAHI_TAG}...${ASAHI_TAG}.patch
+ -> linux-${PREV_ASAHI_TAG}..${ASAHI_TAG}.patch
+"
+KV_FULL="${PVR/_p/-asahi-}"
+S="${WORKDIR}/linux-${KV_FULL}"
+
+KEYWORDS="~arm64"
+IUSE="rust"
+
+DEPEND="
+ ${DEPEND}
+ rust? (
+ || (
+ >=dev-lang/rust-bin-1.76[rust-src,rustfmt]
+ >=dev-lang/rust-1.76[rust-src,rustfmt]
+ )
+ dev-util/bindgen
+ )
+"
+
+UNIPATCH_STRICTORDER="yes"
+UNIPATCH_LIST="
+ ${FILESDIR}/asahi-6.8-config-gentoo-Drop-RANDSTRUCT-from-GENTOO_KERNEL_SEL.patch
+ ${FILESDIR}/asahi-6.8.2_revert_spi_stable_asahi.patch
+ ${DISTDIR}/linux-${PREV_ASAHI_TAG}.patch
+ ${DISTDIR}/linux-${PREV_ASAHI_TAG}..${ASAHI_TAG}.patch
+ ${FILESDIR}/asahi-sources-6.6.0_p16-enable-speakers-stage1.patch
+ ${FILESDIR}/asahi-sources-6.6.0_p16-enable-speakers-stage2.patch
+"
+
+src_prepare() {
+ default
+
+ # remove asahi upstream set localversion, use EXTRAVERSION instead
+ rm localversion.05-asahi
+}
+
+pkg_postinst() {
+ einfo "For more information about Asahi Linux please visit ${HOMEPAGE},"
+ einfo "or consult the Wiki at https://github.com/AsahiLinux/docs/wiki."
+ kernel-2_pkg_postinst
+}
diff --git a/sys-kernel/asahi-sources/files/asahi-6.8-config-gentoo-Drop-RANDSTRUCT-from-GENTOO_KERNEL_SEL.patch b/sys-kernel/asahi-sources/files/asahi-6.8-config-gentoo-Drop-RANDSTRUCT-from-GENTOO_KERNEL_SEL.patch
new file mode 100644
index 000000000000..0e99029145e5
--- /dev/null
+++ b/sys-kernel/asahi-sources/files/asahi-6.8-config-gentoo-Drop-RANDSTRUCT-from-GENTOO_KERNEL_SEL.patch
@@ -0,0 +1,40 @@
+From 7bc5223ed71bdee422c01c67b0456c4238b4a36e Mon Sep 17 00:00:00 2001
+From: Janne Grunau <j@jannau.net>
+Date: Sat, 18 May 2024 11:47:46 +0200
+Subject: [PATCH 1/1] config: gentoo: Drop RANDSTRUCT from
+ GENTOO_KERNEL_SELF_PROTECTION_COMMON
+
+It is incompatible with RUST and the current method of selected it
+results in Kconfig breakage due to circular dependencies. Drop it for
+asahi-kernel.
+
+Signed-off-by: Janne Grunau <j@jannau.net>
+---
+ distro/Kconfig | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/distro/Kconfig b/distro/Kconfig
+index 9166e4a9abe6..ad4b417e0da7 100644
+--- a/distro/Kconfig
++++ b/distro/Kconfig
+@@ -174,7 +174,7 @@ if GENTOO_KERNEL_SELF_PROTECTION
+ config GENTOO_KERNEL_SELF_PROTECTION_COMMON
+ bool "Enable Kernel Self Protection Project Recommendations"
+
+- depends on GENTOO_LINUX && !ACPI_CUSTOM_METHOD && !COMPAT_BRK && !PROC_KCORE && !COMPAT_VDSO && !KEXEC && !HIBERNATION && !LEGACY_PTYS && !X86_X32_ABI && !MODIFY_LDT_SYSCALL && GCC_PLUGINS && !IOMMU_DEFAULT_DMA_LAZY && !IOMMU_DEFAULT_PASSTHROUGH && IOMMU_DEFAULT_DMA_STRICT && SECURITY && !ARCH_EPHEMERAL_INODES && RANDSTRUCT_PERFORMANCE
++ depends on GENTOO_LINUX && !ACPI_CUSTOM_METHOD && !COMPAT_BRK && !PROC_KCORE && !COMPAT_VDSO && !KEXEC && !HIBERNATION && !LEGACY_PTYS && !X86_X32_ABI && !MODIFY_LDT_SYSCALL && GCC_PLUGINS && !IOMMU_DEFAULT_DMA_LAZY && !IOMMU_DEFAULT_PASSTHROUGH && IOMMU_DEFAULT_DMA_STRICT && SECURITY && !ARCH_EPHEMERAL_INODES
+
+ select BUG
+ select STRICT_KERNEL_RWX
+@@ -221,8 +221,6 @@ config GENTOO_KERNEL_SELF_PROTECTION_COMMON
+ select GCC_PLUGIN_LATENT_ENTROPY
+ select GCC_PLUGIN_STRUCTLEAK
+ select GCC_PLUGIN_STRUCTLEAK_BYREF_ALL
+- select GCC_PLUGIN_RANDSTRUCT
+- select GCC_PLUGIN_RANDSTRUCT_PERFORMANCE
+ select ZERO_CALL_USED_REGS if CC_HAS_ZERO_CALL_USED_REGS
+
+ help
+--
+2.45.0
+
diff --git a/sys-kernel/asahi-sources/files/asahi-6.8.2_revert_spi_stable_asahi.patch b/sys-kernel/asahi-sources/files/asahi-6.8.2_revert_spi_stable_asahi.patch
new file mode 100644
index 000000000000..fc6522e205b8
--- /dev/null
+++ b/sys-kernel/asahi-sources/files/asahi-6.8.2_revert_spi_stable_asahi.patch
@@ -0,0 +1,46 @@
+diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
+index 46f153548760..d1b297f438f1 100644
+--- a/drivers/spi/spi.c
++++ b/drivers/spi/spi.c
+@@ -1042,14 +1042,10 @@ static void spi_set_cs(struct spi_device *spi, bool enable, bool force)
+ if (spi->mode & SPI_CS_HIGH)
+ enable = !enable;
+
+- /*
+- * Handle chip select delays for GPIO based CS or controllers without
+- * programmable chip select timing.
+- */
+- if ((spi_is_csgpiod(spi) || !spi->controller->set_cs_timing) && !activate)
+- spi_delay_exec(&spi->cs_hold, NULL);
+-
+ if (spi_is_csgpiod(spi)) {
++ if (!spi->controller->set_cs_timing && !activate)
++ spi_delay_exec(&spi->cs_hold, NULL);
++
+ if (!(spi->mode & SPI_NO_CS)) {
+ /*
+ * Historically ACPI has no means of the GPIO polarity and
+@@ -1083,16 +1079,16 @@ static void spi_set_cs(struct spi_device *spi, bool enable, bool force)
+ if ((spi->controller->flags & SPI_CONTROLLER_GPIO_SS) &&
+ spi->controller->set_cs)
+ spi->controller->set_cs(spi, !enable);
++
++ if (!spi->controller->set_cs_timing) {
++ if (activate)
++ spi_delay_exec(&spi->cs_setup, NULL);
++ else
++ spi_delay_exec(&spi->cs_inactive, NULL);
++ }
+ } else if (spi->controller->set_cs) {
+ spi->controller->set_cs(spi, !enable);
+ }
+-
+- if (spi_is_csgpiod(spi) || !spi->controller->set_cs_timing) {
+- if (activate)
+- spi_delay_exec(&spi->cs_setup, NULL);
+- else
+- spi_delay_exec(&spi->cs_inactive, NULL);
+- }
+ }
+
+ #ifdef CONFIG_HAS_DMA
diff --git a/sys-kernel/asahi-sources/files/asahi-sources-6.6.0_p16-enable-speakers-stage1.patch b/sys-kernel/asahi-sources/files/asahi-sources-6.6.0_p16-enable-speakers-stage1.patch
new file mode 100644
index 000000000000..1e5d9c74f1c1
--- /dev/null
+++ b/sys-kernel/asahi-sources/files/asahi-sources-6.6.0_p16-enable-speakers-stage1.patch
@@ -0,0 +1,78 @@
+From 385ea7b5023486aba7919cec8b6b3f6a843a1013 Mon Sep 17 00:00:00 2001
+From: Hector Martin <marcan@marcan.st>
+Date: Fri, 15 Dec 2023 20:38:32 +0900
+Subject: [PATCH] READ COMMIT MESSAGE! macaudio: Enable first round of models
+
+Enables j313, j293, j493, j314, j414, j274, j375, j473, j474, j475
+
+*** WARNING FOR DISTRO PACKAGERS WANTING TO APPLY THIS: ***
+*** YOU ABSOLUTELY NEED THIS PATCH IN YOUR LSP-PLUGINS PACKAGE ***
+
+https://github.com/lsp-plugins/lsp-dsp-lib/pull/20
+
+Do NOT enable speakers without that patch, on any model. It can/will
+result in nasty noise that could damage them.
+
+Signed-off-by: Hector Martin <marcan@marcan.st>
+---
+ sound/soc/apple/macaudio.c | 20 ++++++++++++--------
+ 1 file changed, 12 insertions(+), 8 deletions(-)
+
+diff --git a/sound/soc/apple/macaudio.c b/sound/soc/apple/macaudio.c
+index f5b349057a67e1..d2ced87e88c0e1 100644
+--- a/sound/soc/apple/macaudio.c
++++ b/sound/soc/apple/macaudio.c
+@@ -1490,23 +1490,27 @@ struct macaudio_platform_cfg macaudio_j180_cfg = {
+ false, AMP_SN012776, SPKR_1W1T, false, 10, -20,
+ };
+ struct macaudio_platform_cfg macaudio_j274_cfg = {
+- false, AMP_TAS5770, SPKR_1W, false, 20, -20,
++ true, AMP_TAS5770, SPKR_1W, false, 20, -20,
+ };
+
+ struct macaudio_platform_cfg macaudio_j293_cfg = {
+- false, AMP_TAS5770, SPKR_2W, true, 15, -20,
++ true, AMP_TAS5770, SPKR_2W, true, 15, -20,
+ };
+
+ struct macaudio_platform_cfg macaudio_j313_cfg = {
+- false, AMP_TAS5770, SPKR_1W, true, 10, -20,
++ true, AMP_TAS5770, SPKR_1W, true, 10, -20,
+ };
+
+-struct macaudio_platform_cfg macaudio_j314_j316_cfg = {
++struct macaudio_platform_cfg macaudio_j314_cfg = {
++ true, AMP_SN012776, SPKR_2W1T, true, 15, -20,
++};
++
++struct macaudio_platform_cfg macaudio_j316_cfg = {
+ false, AMP_SN012776, SPKR_2W1T, true, 15, -20,
+ };
+
+ struct macaudio_platform_cfg macaudio_j37x_j47x_cfg = {
+- false, AMP_SN012776, SPKR_1W, false, 20, -20,
++ true, AMP_SN012776, SPKR_1W, false, 20, -20,
+ };
+
+ struct macaudio_platform_cfg macaudio_j413_cfg = {
+@@ -1522,7 +1526,7 @@ struct macaudio_platform_cfg macaudio_j45x_cfg = {
+ };
+
+ struct macaudio_platform_cfg macaudio_j493_cfg = {
+- false, AMP_SN012776, SPKR_2W, true, 15, -20,
++ true, AMP_SN012776, SPKR_2W, true, 15, -20,
+ };
+
+ struct macaudio_platform_cfg macaudio_fallback_cfg = {
+@@ -1558,9 +1562,9 @@ static const struct of_device_id macaudio_snd_device_id[] = {
+ /* j313 AID4 tas5770 10 2× 1W */
+ { .compatible = "apple,j313-macaudio", .data = &macaudio_j313_cfg },
+ /* j314 AID8 sn012776 15 2× 2W+1T */
+- { .compatible = "apple,j314-macaudio", .data = &macaudio_j314_j316_cfg },
++ { .compatible = "apple,j314-macaudio", .data = &macaudio_j314_cfg },
+ /* j316 AID9 sn012776 15 2× 2W+1T */
+- { .compatible = "apple,j316-macaudio", .data = &macaudio_j314_j316_cfg },
++ { .compatible = "apple,j316-macaudio", .data = &macaudio_j316_cfg },
+ /* j375 AID10 sn012776 15 1× 1W */
+ { .compatible = "apple,j375-macaudio", .data = &macaudio_j37x_j47x_cfg },
+ /* j413 AID13 sn012776 15 2× 1W+1T */
diff --git a/sys-kernel/asahi-sources/files/asahi-sources-6.6.0_p16-enable-speakers-stage2.patch b/sys-kernel/asahi-sources/files/asahi-sources-6.6.0_p16-enable-speakers-stage2.patch
new file mode 100644
index 000000000000..5a83346337fa
--- /dev/null
+++ b/sys-kernel/asahi-sources/files/asahi-sources-6.6.0_p16-enable-speakers-stage2.patch
@@ -0,0 +1,47 @@
+From 6a24102c06c95951ab992e2d41336cc6d4bfdf23 Mon Sep 17 00:00:00 2001
+From: Hector Martin <marcan@marcan.st>
+Date: Fri, 15 Dec 2023 20:40:53 +0900
+Subject: [PATCH] READ COMMIT MESSAGE! macaudio: Enable second round of models
+
+Enables j316, j413, j415, j416
+
+*** WARNING FOR DISTRO PACKAGERS WANTING TO APPLY THIS: ***
+*** YOU ABSOLUTELY NEED THIS PATCH IN YOUR LSP-PLUGINS PACKAGE ***
+
+https://github.com/lsp-plugins/lsp-dsp-lib/pull/20
+
+Do NOT enable speakers without that patch, on any model. It can/will
+result in nasty noise that could damage them.
+
+Signed-off-by: Hector Martin <marcan@marcan.st>
+---
+ sound/soc/apple/macaudio.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/sound/soc/apple/macaudio.c b/sound/soc/apple/macaudio.c
+index d2ced87e88c0e1..f347f08b7ad01e 100644
+--- a/sound/soc/apple/macaudio.c
++++ b/sound/soc/apple/macaudio.c
+@@ -1506,7 +1506,7 @@ struct macaudio_platform_cfg macaudio_j314_cfg = {
+ };
+
+ struct macaudio_platform_cfg macaudio_j316_cfg = {
+- false, AMP_SN012776, SPKR_2W1T, true, 15, -20,
++ true, AMP_SN012776, SPKR_2W1T, true, 15, -20,
+ };
+
+ struct macaudio_platform_cfg macaudio_j37x_j47x_cfg = {
+@@ -1514,11 +1514,11 @@ struct macaudio_platform_cfg macaudio_j37x_j47x_cfg = {
+ };
+
+ struct macaudio_platform_cfg macaudio_j413_cfg = {
+- false, AMP_SN012776, SPKR_1W1T, true, 15, -20,
++ true, AMP_SN012776, SPKR_1W1T, true, 15, -20,
+ };
+
+ struct macaudio_platform_cfg macaudio_j415_cfg = {
+- false, AMP_SN012776, SPKR_2W1T, true, 15, -20,
++ true, AMP_SN012776, SPKR_2W1T, true, 15, -20,
+ };
+
+ struct macaudio_platform_cfg macaudio_j45x_cfg = {
diff --git a/sys-kernel/asahi-sources/metadata.xml b/sys-kernel/asahi-sources/metadata.xml
new file mode 100644
index 000000000000..c0d62b1d2362
--- /dev/null
+++ b/sys-kernel/asahi-sources/metadata.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>jcalligeros99@gmail.com</email>
+ <name>James Calligeros</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>asahi@gentoo.org</email>
+ </maintainer>
+ <use>
+ <flag name="symlink">Automatically symlink the kernel sources to /usr/src/linux</flag>
+ <flag name="rust">Pull in the Rust For Linux dependencies</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">AsahiLinux/linux</remote-id>
+ </upstream>
+</pkgmetadata>