How to create a circuit to automatically raise/lower a height-adjustable desk?
problems with assumptions for design

failed to recognize purpose of SPDT.
did not understand Vgs(th)
motor will surge with 10x rated current or much more than actual load current since it is probably not using maximum load weight.

E.g say motor rated for 1A but only uses 0.3A except 10x1=10A on startup.

when switching off, there is an arc and back EMF of motor acting as generator and switch as brake and gears as friction brake with coil shorted for additional load.
thus you need a POWER Half Bridge that works with Logic levels using 30V output with power diodes to handle 10A spikes or 20A spikes if reversed quickly while moving.

Problems with FET designs

you assumed 2~4V was the operating Vgs but it is only the threshold and you need at least 2.5 to 3x 100uA threshold to get close to RdsOn to handle &gt;10A, which is often specified at Vgs=5, 10 or 12V.

“Logic Level FETs “ use Vgs(th) near 1V to operate at 3V for best performance, otherwise they get hot.

instead of high side driver , you need a SPDT or half Bridge power FET


A power half bridge is needed that uses logic level input and output probably rated for 30A to have small enough Rdson to keep cool during start.  Power diodes reversed to to each rail for Flyback clamp are both needed rated for 10A.

half bridge must have small deadtime between Fwd and Rev to prevent short circuit or Shoot through effect.  This is normal. But you must ensure it.

Recommendations
Define Motor coil resistance and choose Logic Level Half Bridge IC to drive 30V/DCR + margin
Ensure it has deadtime protection with input controls with RC diode delay or MCU delay and verify Power up reset state is Off.
what about end stop protection? In case of failure on driver or MCU glitch? Consider Polyfuse.
Do the thermal resistance calculations for heatsink and electrical insulation insulator with grease.
This is common to Car power window switch design except more mass, less speed but maybe same current (?) salvage from car graveyard! Or DIY or buy? these are daily make/Buy decisions of any designer.
Finally, what about position sensor or?  Position sensor for long travel might be expensive unless you are a mechanical genius to use Pot with 8mm CNC or smaller cog gear belt from linear motion to pulley reduction to pot , then read pot voltage as linear position, calibrate and use for servo feedback.  Then allow MCU input switches to remember states you enter for positions and toggle up next and down next or 1,2,3 +,-. But debounce the switches.  Anything else missing?  End stop switches? STD practice for CNC machines.