Skip to content

Samsung Galaxy Book2 Go support#31

Draft
z3ntu wants to merge 23 commits into
sc7280-7.0.yfrom
sc7280-7.0.y-wip-book2go
Draft

Samsung Galaxy Book2 Go support#31
z3ntu wants to merge 23 commits into
sc7280-7.0.yfrom
sc7280-7.0.y-wip-book2go

Conversation

@z3ntu

@z3ntu z3ntu commented Jun 5, 2026

Copy link
Copy Markdown
Member

No description provided.

jja2000 and others added 11 commits June 5, 2026 09:14
Signed-off-by: Jasper Korten <jja2000@gmail.com>
supposedly.........

Signed-off-by: Jasper Korten <jja2000@gmail.com>
Signed-off-by: Jasper Korten <jja2000@gmail.com>
Signed-off-by: Jasper Korten <jja2000@gmail.com>
Signed-off-by: Jasper Korten <jja2000@gmail.com>
Signed-off-by: Jasper Korten <jja2000@gmail.com>
Signed-off-by: Jasper Korten <jja2000@gmail.com>
Signed-off-by: Jasper Korten <jja2000@gmail.com>
Signed-off-by: Federico Amedeo Izzo <federico@izzo.pro>
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
@f-izzo

f-izzo commented Jun 6, 2026

Copy link
Copy Markdown

This kernel booted as is on a postmarketOS edge installation with "console" UI booted using the following cmdline, results in a blinking framebuffer that stays black after a few seconds. It completed the boot on Linux 6.16
plymouth.ignore-serial-consoles plymouth.prefer-fbcon pmos_boot_uuid=AB74-6FAF pmos_root_uuid=c17910cb-e3a8-4c2f-a6da-3ea836a8f4ad pmos_rootfsopts=defaults pmos.debug-shell console=tty1 video=efifb efi=novamap,noruntime deferred_probe_timeout=30 arm64.nopauth clk_ignore_unused pd_ignore_unused

By replacing the current usb nodes in the dts with these nodes taken from sc7280-idp.dts, the framebuffer works properly again, the USB stick I'm booting on gets detected, but it still fails with "ERROR: failed to mount subpartitions"

Edit: it was a problem with my WIP pmOS device package: Adding dtbloader to the depends of APKBUILD makes the system boot.

usb dts nodes

&usb_1 {
	dr_mode = "host";

	status = "okay";
};

&usb_1_hsphy {
	status = "okay";

	vdda-pll-supply = <&vreg_l10c_0p8>;
	vdda33-supply = <&vreg_l2b_3p0>;
	vdda18-supply = <&vreg_l1c_1p8>;
	qcom,hs-rise-fall-time-bp = <0>;
	qcom,squelch-detector-bp = <(-2090)>;
	qcom,hs-disconnect-bp = <1743>;
	qcom,hs-amplitude-bp = <1780>;
	qcom,hs-crossover-voltage-microvolt = <(-31000)>;
	qcom,hs-output-impedance-micro-ohms = <2600000>;
};

&usb_1_qmpphy {
	status = "okay";

	vdda-phy-supply = <&vreg_l6b_1p2>;
	vdda-pll-supply = <&vreg_l1b_0p8>;
};

@f-izzo

f-izzo commented Jun 6, 2026

Copy link
Copy Markdown

I was able to make WiFi work by enabling the remoteproc nodes, replacing the wpss_mem region from kodiak.dtsi with the one from qcm6490-idp.dts, adding the ath firmware dependencies to the pmOS device package and copying the firmware files from Windows.

Here are two patches to fix USB and display (were broken on 7.0) and to enable WiFi (needs firmware packages and firmware files from the Windows installation)
0001-SQUASHME-arm64-dts-qcom-sc7280-samsung-galaxy-book2-.patch
0002-SQUASHME-arm64-dts-qcom-sc7280-samsung-galaxy-book2-.patch

@f-izzo

f-izzo commented Jun 7, 2026

Copy link
Copy Markdown

I propose we rename all references to galaxy-book2-go to the internal codename: hermes2, which is shorter and follows what is done when supporting phones.

@f-izzo

f-izzo commented Jun 7, 2026

Copy link
Copy Markdown

The display panel works as-is, as long as the following Kconfig options are enabled:

  • CONFIG_QCOM_PHY_EDP
  • CONFIG_BACKLIGHT_PWM
  • CONFIG_DRM_PANEL_EDP

They are not on sc7280_defconfig from linux-postmarketos-qcom-sc7280


&mdss_edp_out {
data-lanes = <0 1 2 3>;
link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

data-lanes and link-frequencies are not needed, I tested it and panel works fine without them.

@f-izzo

f-izzo commented Jun 7, 2026

Copy link
Copy Markdown

Enabling the GPU only requires enabling the dts node and copying the qcdxkmsuc7280.mbn (a660_zap.mbn) file from the Windows partition.
Patch attached.
0001-SQUASHME-arm64-dts-qcom-sc7280-samsung-galaxy-book2-gpu.patch

@f-izzo

f-izzo commented Jun 7, 2026

Copy link
Copy Markdown

We need to decide whether to keep the android-style firmware names to make them easily recognizable (e.g. adsp.mbn, cdsp.mbn) or switch to the windows-style firmware names to avoid renaming them (qcadsp7280.mbn, qcdxkmsuc7280.mbn).

f-izzo and others added 8 commits June 8, 2026 12:00
…or 7.0 kernel

Signed-off-by: Federico Amedeo Izzo <federico@izzo.pro>
…moteprocs and wifi

Signed-off-by: Federico Amedeo Izzo <federico@izzo.pro>
Signed-off-by: Federico Amedeo Izzo <federico@izzo.pro>
Signed-off-by: Luca Weiss <luca@lucaweiss.eu>
Signed-off-by: Luca Weiss <luca@lucaweiss.eu>
Signed-off-by: Luca Weiss <luca@lucaweiss.eu>
@jja2000

jja2000 commented Jun 10, 2026

Copy link
Copy Markdown

In a comment, since it got nuked in the usb fixup commit for USB, I've mapped out how the usb lanes are divided over the ports. Results are based on the output given by HWiNFO. Expect windows'isms.

  • Root port 1 (single USB3 lane, single USB2 lane, usb_1):
    • USB2.0 (hs): connected to internal 4-port hub (0424:2514)
      • Port 1: Left USB Type-C connector
      • Port 2: Right USB Type-C connector
      • Port 3: Right USB Type-A connector
      • Port 4: USB Webcam (04f2:b72f)
    • USB3.0 (ss): Right USB Type-C connector
  • Root port 2 (single USB3 lane, usb_2):

As far as capabilities per-port go, ACPI might be poorly written or muxing is working incorrectly. All are declared as USB3-compatible ports "with a switch" implying muxing, but when connecting actual devices, only the above configuration is possible.

For video, only the right USB Type-C connector seems to support DisplayPort out, left USB Type-C connector will throw up an error by the Samsung app that I should use the right side. Disabling the screen does not help in case the internal display is muxed.

z3ntu added 3 commits June 10, 2026 20:25
seems our adsp firmware has audioreach and not elite. At least with
elite probe nothing appears and audioreach we seem to get something.
Let's see.

@jja2000 jja2000 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In addition to the other comments w.r.t. the i2c addresses for the EMEC device (SAM0604), the following interrupts are also in that device node:

GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0x0000,
    "\\_SB.GIO0", 0x00, ResourceConsumer, ,
    )
    {   // Pin list
        0x0300 // PDC, should be TLMM 101
    }
GpioInt (Edge, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,
    "\\_SB.GIO0", 0x00, ResourceConsumer, ,
    )
    {   // Pin list
        0x0280 // PDC, should be TLMM 20
    }
GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0x0000,
    "\\_SB.GIO0", 0x00, ResourceConsumer, ,
    )
    {   // Pin list
        0x0340 // PDC, should be TLMM 103
    }
GpioInt (Edge, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000,
     "\\_SB.GIO0", 0x00, ResourceConsumer, ,
    )
    {   // Pin list
        0x02C0 // PDC, should be TLMM 21
    }

Not sure what device they belong to specifically though...

&i2c1 {
status = "okay";

// i2cdetect shows 0x31, 0x32, 0x33, 0x34, 0x49

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACPI says EMEC device (SAM0604) should be connected to i2c1 at address 0x14 and 0x33

&i2c10 {
status = "okay";

// i2cdetect shows 0x09, 0x0b

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both of these belong to the EMEC device (SAM0604)


// i2cdetect shows 0x20, 0x21
};

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACPI says EMEC (SAM0604) is connected to i2c3 on address 0x14 and 0x33


// i2cdetect shows 0x1d
};

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACPI says EMEC (SAM0604) is connected to i2c8 on address 0x10


// i2cdetect shows 0x0d
};

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACPI says EMEC (SAM0604) is connected to i2c13 on address 0x2C

};

// \\_SB.I2C3 -- has SAMM0210 at 0x20 (SAR2) & 0x21 (SAR3) with interrupt
// https://treexy.com/products/driver-fusion/database/sensors/samsung/a96t396-proximity/

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grip sensor has no driver upstream, but there are Samsung phones with downstream drivers that have it, like the A25 5G.

Will update the comment with the right interrupt pin.

};

// \\_SB.I2C5 -- has SAMM0214 / ACC1 at 0x1d with interrupt
// https://treexy.com/products/driver-fusion/database/sensors/samsung/lis2dlc12-accelerometer-device/

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably compatible with st-accel, not sure what compatible exactly.

Matrix seems to be defined in the DSDT.

Will update comment with the right interrupt pin.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree it should be compatible with the driver, at least after some lis2dlc12-specific addition. Haven't looked around too much yet, but I can't find the sensor on the ST website but there's more mentions of this part number than just related to this laptop. No datasheet found of course.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants