Re: [PATCH] Source code files for sound library
Ahmed Khider <[email protected]>
| Newsgroups | gmane.os.hurd.bugs |
|---|---|
| Message-ID | <CADy5EEbzBDLuL9hM3Kp5CV44wzHo2Qx9V_A_dre=4-R-g25fTA@mail.gmail.com> |
Thanks for your feedback , I added the email and the gcc flag Ahmed On Thu, 13 Aug 2026, 00:46 Bradley Morgan, <[email protected]> wrote: > On 13 August 2026 01:41:31 BST, Ahemd Khider <[email protected]> wrote: > >From: astra <[email protected]> > > > >--- > > libsound/audio.c | 64 ++++++++++++++++++++++++++ > > libsound/audio.h | 111 ++++++++++++++++++++++++++++++++++++++++++++++ > > libsound/makefile | 7 +++ > > 3 files changed, 182 insertions(+) > > create mode 100644 libsound/audio.c > > create mode 100644 libsound/audio.h > > create mode 100644 libsound/makefile > > > >diff --git a/libsound/audio.c b/libsound/audio.c > >new file mode 100644 > >index 00000000..7d18e41f > >--- /dev/null > >+++ b/libsound/audio.c > >@@ -0,0 +1,64 @@ > >+/* This File Is Part Of Hurd Audio Interface System (Haudis) */ > >+/* This file Is Under GNU General Public License Version 3 (GPL3) */ > >+/* Original Author : AHMED KHIDER (2026) */ > > Maybe add your email? So you could get CCed in future patches > > >+ > >+ > >+ > >+#include "audio.h" > >+ > >+bool init_hda_enge(volatile uint32_t *cntlr) > >+{ > >+ > >+ > >+ /* Controller Initialization */ > >+ > >+ cntlr[HDA_GC] &= ~RESET; > >+ uint8_t wait = 50; > >+ > >+ while ( (wait--) > 0) > >+ { /* Wait Until Read Back */ } > >+ > >+ if (wait <= 0) return 1; > >+ > >+ cntlr[HDA_GC] |= RESET; > >+ > >+ while ( (wait--) > 0) > >+ { /* Wait Until Read Back */ } > >+ > >+ if (wait <= 0) return 1; > >+ > >+ if ((cntlr[HDA_ST] & 0x0F) != 0) return 1; > >+ > >+ /* CORB Initialization */ > >+ > >+ cntlr[HDA_CORB_CNTRL] = 0x00; > >+ while (cntlr[HDA_CORB_CNTRL] & 2); > >+ > >+ cntlr[HDA_CORB_LBA] &= 0xFFFFFFFF; > >+ cntlr[HDA_CORB_UBA] = (*cntlr >> 16) & 0xFFFFFFFF; > >+ > >+ cntlr[HDA_CORB_WP] = 0x0000; > >+ > >+ cntlr[HDA_CORB_RP] &= (1 << 15); /* 0x8000 */ > >+ while( cntlr[HDA_CORB_RP] &= (1 << 15) ); > >+ cntlr[HDA_CORB_RP] = 0x0000; > >+ cntlr[HDA_CORB_CNTRL] = 0x02; > >+ > >+ > >+ /* RIRB Initialization */ > >+ > >+ cntlr[HDA_RIRB_CNTRL]=0x00; > >+ while (cntlr[HDA_RIRB_CNTRL] & 2); > >+ > >+ cntlr[HDA_RIRB_LBA] &= 0xFFFFFFFFF; > >+ cntlr[HDA_RIRB_UBA] = (*cntlr >> 16) & 0xFFFFFFFF; > >+ > >+ cntlr[HDA_RIRB_SIZE] = 0x02; > >+ > >+ cntlr[HDA_CORB_WP] = (1 << 15); > >+ while( cntlr[HDA_RIRB_WP] &= (1 << 15) ); /* 0x8000 */ > >+ cntlr[HDA_RIRB_WP] = 0x0000; > >+ cntlr[HDA_RIRB_CNTRL] = 0x02; > >+ > >+ return 0; > >+} > >diff --git a/libsound/audio.h b/libsound/audio.h > >new file mode 100644 > >index 00000000..2b07c902 > >--- /dev/null > >+++ b/libsound/audio.h > >@@ -0,0 +1,111 @@ > >+/* This File Is Part Of Hurd Audio Interface System (Haudis) */ > >+/* This file Is Under GNU General Public License Version 3 (GPL3) */ > >+/* Original Author : AHMED KHIDER (2026) */ > >+ > > Ditto. > > >+#ifndef HURD_AUDIO_INTERFACE > >+#define HURD_AUDIO_INTERFACE > >+ > >+#include <stdint.h> > >+#include <stdbool.h> > >+ > >+/* Intel High Definition Audio */ > >+ > >+#ifndef INTEL_HDA_REG > >+#define INTEL_HDA_REG > >+#define HDA_GCP 0x00 /* Global Capablities */ > >+#define HDA_MNV 0x02 /* Minor Version */ > >+#define HDA_MJV 0x03 /* Major Version */ > >+#define HDA_GC 0x08 /* Global control */ > >+#define HDA_ST 0x0E /* Status Test */ > >+#define HDA_IC 0x20 /* Interrupt Control */ > >+#define HDA_STREAM_SYNCH 0x34 /* Stream Synchronization */ > >+#define HDA_CORB_LBA 0x40 /* CORB Lower Base Address */ > >+#define HDA_CORB_UBA 0x44 /* CORB Upper Base Address */ > >+#define HDA_CORB_WP 0x48 /* CORB Write Pointer */ > >+#define HDA_CORB_RP 0x4A /* CORB Read Pointer */ > >+#define HDA_CORB_CNTRL 0x4C /* CORB Control */ > >+#define HDA_CORB_SIZE 0x4E /* CORB Size */ > >+#define HDA_RIRB_LBA 0x50 /* RIRB Lower Base Address */ > >+#define HDA_RIRB_UBA 0x54 /* RIRB Upper Base Address */ > >+#define HDA_RIRB_WP 0x58 /* RIRB Write Pointer */ > >+#define HDA_RIRB_RIC 0x5A /* RIRB Response Interrupt Count */ > >+#define HDA_RIRB_CNTRL 0x5C /* RIRB Control */ > >+#define HDA_RIRB_SIZE 0x5E /* RIRB Size */ > >+#define HDA_DMA_PLBA 0x70 /* DMA Position Lower Base Address */ > >+#define HDA_DMA_PUBA 0x74 /* DMA Position Upper Base Address */ > >+#define HDA_SD_CNTL1 0x00 /* Stream Descriptor */ > >+#define HDA_SD_CNTL2 0x01 /* Stream Descriptor */ > >+#define HDA_SD_CNTL3 0x02 /* Stream Descriptor */ > >+#define HDA_SD_STS 0X03 /* Stream Status */ > >+#define HDA_SD_LPIB1 0x04 /* Stream Link Position In Buffer */ > >+#define HDA_SD_LPIB2 0x05 /* Stream Link Position In Buffer */ > >+#define HDA_SD_LPIB3 0x06 /* Stream Link Position In Buffer */ > >+#define HDA_SD_LPIB4 0x07 /* Stream Link Position In Buffer */ > >+#define HDA_SD_LVD1 0x0C /* Stream Last Valid Index */ > >+#define HDA_SD_LVD2 0x0D /* Stream Last Valid Index */ > >+#define HDA_SD_FIFOWM1 0x0E /* Stream FIFO Watermark */ > >+#define HDA_SD_FIFOWM2 0x0F /* Stream FIFO Watermark */ > >+#define HDA_SD_FMT1 0x12 /* Stream Format */ > >+#define HDA_SD_FMT2 0x13 /* Stream Format */ > >+#endif /* INTEL_HDA_REG*/ > >+ > >+ > >+/* Intel AC97 Registers */ > >+ > >+#ifndef INTEL_AC97_REG > >+#define AC97_REG > >+#define AC97_RR 0x00 /* Reset Register */ > >+#define AC97_MV 0x02 /* Master Valume */ > >+#define AC97_AUX_OV 0x04 /* AUX Output Volume */ > >+#define AC97_MPV 0x0E /* Microphone Valume */ > >+#define AC97_PCM_OV 0x18 /* PCM Output Volume */ > >+#define AC97_SRID 0x1A /* Select Record Input Device */ > >+#define AC97_RG 0x1C /* Record Gain */ > >+#define AC97_RGOM 0x1E /* Record Gain Of Microphone */ > >+#define AC97_GC 0x2C /* Global Contorl */ > >+#define AC97_GS 0x30 /* Global Status */ > >+#define AC97_BDBA1 0x00 /* Buffer Descriper Base Address */ > >+#define AC97_BDBA2 0x10 /* Buffer Descriper Base Address */ > >+#define AC97_BDBA3 0x20 /* Buffer Descriper Base Address */ > >+#define AC97_CPSE1 0x04 /* Current Processed Entry */ > >+#define AC97_CPSE2 0x14 /* Current Processed Entry */ > >+#define AC97_CPSE3 0x24 /* Current Processed Entry */ > >+#define AC97_LVD1 0x05 /* Last Valid Entry */ > >+#define AC97_LVD2 0x15 /* Last Valid Entry */ > >+#define AC97_LVD3 0x25 /* Last Valid Entry */ > >+#define AC97_TS1 0x06 /* Transfer Status */ > >+#define AC97_TS2 0x16 /* Transfer Status */ > >+#define AC97_TS3 0x26 /* Transfer Status */ > >+#define AC97_PICE1 0x08 /* Position In Current Entry */ > >+#define AC97_PICE2 0x18 /* Position In Current Entry */ > >+#define AC97_PICE3 0x28 /* Position In Current Entry */ > >+#define AC97_PE1 0x0A /* Prefetched Entry */ > >+#define AC97_PE2 0x1A /* Prefetched Entry */ > >+#define AC97_PE3 0x2A /* Prefetched Entry */ > >+#define AC97_TC1 0x0B /* Transfer Control */ > >+#define AC97_TC2 0x1B /* Transfer Control*/ > >+#define AC97_TC3 0x2B /* Transfer Control*/ > >+#endif /* INTEL_AC97_REG */ > >+ > >+ > >+ > >+ > >+/* Bitwise Functions */ > >+ > >+#define RESET (1 << 0) > >+#define BLSHIFT(shift,value) (value << shift) /* Left Shifting */ > >+#define BRSHIFT(shift,value) (value >> shift) /* Right Shifting */ > >+ > >+/* Read Functions */ > >+ > >+#define READ(addrs,offset)(addrs[offset]); > >+ > >+/* Write Functions */ > >+ > >+#define WRITE(addrs,offset,value)(addrs[offset]=value) > >+ > >+/* Initalization Funcations */ > >+ > >+bool init_hda_enge(volatile uint32_t *cntlr); > >+ > >+#endif /* HURD_AUDIO_INTERFACE */ > >diff --git a/libsound/makefile b/libsound/makefile > >new file mode 100644 > >index 00000000..ee5046e5 > >--- /dev/null > >+++ b/libsound/makefile > >@@ -0,0 +1,7 @@ > >+CC ?= gcc > >+CFLAGS = -Wall -Wextra > > well, -Werror? While we are at it > > >+ > >+haudis: audio.o > >+ > >+audio.o: > >+ $(CC) -o audio.c > > > > Thanks! >