Giter VIP home page Giter VIP logo

bcm63xx-phone's People

Contributors

lulol avatar pgid69 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bcm63xx-phone's Issues

Compiled but not working

I compiled but in dmesg at boot I have:

[ 0.000000] bcm63xx_nvram: nvram checksum failed, contents may be invalid (expected 33303336, got fc05ed45)
[ 0.380000] bcm63xx_uart.0: ttyS0 at MMIO 0xfffe0100 (irq = 10, base_baud = 1562500) is a bcm63xx_uart
[ 0.432000] bcm63xxpart: CFE boot tag found with version 7 and board type HW553
[ 0.440000] 5 bcm63xxpart partitions found on MTD device 1e000000.nor
[ 0.512000] bcm63xx-spi bcm63xx-spi: at 0xfffe0800 (irq 9, FIFOs size 542)
[ 0.552000] libphy: bcm63xx_enet MII bus: probed
[ 0.632000] bcm63xx_enet bcm63xx_enet.1: attached PHY at address 0 [Broadcom B53 (1)]
[ 0.640000] bcm63xx-wdt bcm63xx-wdt: started, timer margin: 30 sec

insmod bcm63xx-phone.ko gives me: failed to insert bcm63xx-phone.ko

with this log:
[ 356.672000] bcm63xx-phone: bcm63xx-phone: v0.1
[ 356.676000] bcm63xx-phone bcm_drv_init() 1439: bcm_drv_init()
[ 356.680000] bcm63xx-phone board_init() 706: board_init()
[ 356.688000] bcm63xx-phone: CPU is Broadcom 6358
[ 356.692000] bcm63xx-phone: Board is HW553
[ 356.696000] bcm63xx-phone board_get_desc() 764: board_get_desc()
[ 356.704000] bcm63xx-phone bcm_drv_init() 1454: Initializing mutex
[ 356.708000] bcm63xx-phone bcm_drv_init() 1457: Initializing RX wait queue
[ 356.716000] bcm63xx-phone bcm_wait_queue_init() 32: bcm_wait_queue_init()
[ 356.724000] bcm63xx-phone bcm_drv_init() 1459: Initializing TX wait queue
[ 356.728000] bcm63xx-phone bcm_wait_queue_init() 32: bcm_wait_queue_init()
[ 356.736000] bcm63xx-phone bcm_drv_init() 1474: Registering device bcm63xx-phone
[ 356.744000] bcm63xx-phone pcm_init() 2482: pcm_init()
[ 356.752000] bcm63xx-phone pcm_init() 2550: Using 25 buffers of 256 bytes for RX
[ 356.756000] bcm63xx-phone pcm_init() 2586: Using 25 buffers of 256 bytes for TX
[ 356.764000] bcm63xx-phone pcm_get_shared_res() 1950: pcm_get_shared_res()
[ 356.772000] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm, addr=0xfffe1600, size=256)
[ 356.780000] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm_dma, addr=0xfffe1800, size=256)
[ 356.792000] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm_dmac, addr=0xfffe1900, size=32)
[ 356.800000] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm_dmas, addr=0xfffe1a00, size=32)
[ 356.900000] bcm63xx-phone pcm6358_pll_init() 970: pcm6358_pll_init()
[ 356.904000] bcm63xx-phone pcm6358_pll_init() 975: pll_ctrl1=f0010001, pll_ctrl2=53d47, pll_ctrl3=a85
[ 356.948000] bcm63xx-phone pcm6358_pll_init() 1028: pll_ctrl1=20001, pll_ctrl2=8492b, pll_ctrl3=1e1c
[ 356.956000] bcm63xx-phone pcm_regs_init() 1247: pcm_regs_init()
[ 356.960000] bcm63xx-phone pcm_regs_reset() 1192: pcm_regs_reset()
[ 356.968000] bcm63xx-phone pcm_regs_reset() 1228: PCM_CTRL_REG <- 0x23200101
[ 356.976000] bcm63xx-phone pcm_dma_init() 1502: pcm_dma_init()
[ 356.980000] bcm63xx-phone pcm_dma_init() 1535: Allocating 200 bytes of DMA memory for RX descs
[ 356.992000] bcm63xx-phone pcm_dma_init() 1546: 200 bytes of memory allocated, starting at address 0xa2477000
[ 357.000000] bcm63xx-phone pcm_dma_init() 1552: Allocating 200 bytes of DMA memory for TX descs
[ 357.008000] bcm63xx-phone pcm_dma_init() 1563: 200 bytes of memory allocated, starting at address 0xa2476000
[ 357.020000] bcm63xx-phone pcm_dma_init() 1571: Allocating 12800 bytes of memory for RX and TX data buffers
[ 357.028000] bcm63xx-phone pcm_dma_init() 1578: 12800 bytes of memory allocated, starting at address 0x8247c000
[ 357.040000] bcm63xx-phone pcm_dma_init() 1604: Allocating 224 bytes of memory for DMA addresses
[ 357.048000] bcm63xx-phone pcm_dma_init() 1611: 224 bytes of memory allocated, starting at address 0x83364a00
[ 357.060000] bcm63xx-phone pcm_dma_init() 1618: Mapping DMA addresses of RX descs
[ 357.068000] bcm63xx-phone pcm_dma_init() 1635: Mapping DMA addresses of TX descs
[ 357.076000] bcm63xx-phone pcm_dma_rx_descs_reset() 1342: pcm_dma_rx_descs_reset()
[ 357.084000] bcm63xx-phone pcm_dma_tx_descs_reset() 1373: pcm_dma_tx_descs_reset()
[ 357.092000] bcm63xx-phone bcm_drv_init() 1524: t->mm_desc.ioctl_param_off = 0, t->mm_desc.ioctl_param_size = 208
[ 357.100000] bcm63xx-phone bcm_drv_init() 1534: t->mm_desc.rbs[0].rx_ring_buf_desc_off = 208, t->mm_desc.rbs[0].rx_ring_buf_desc_size = 12
[ 357.112000] bcm63xx-phone bcm_drv_init() 1542: t->mm_desc.rbs[0].tx_ring_buf_desc_off = 224, t->mm_desc.rbs[0].tx_ring_buf_desc_size = 12
[ 357.128000] bcm63xx-phone bcm_drv_init() 1534: t->mm_desc.rbs[1].rx_ring_buf_desc_off = 240, t->mm_desc.rbs[1].rx_ring_buf_desc_size = 12
[ 357.140000] bcm63xx-phone bcm_drv_init() 1542: t->mm_desc.rbs[1].tx_ring_buf_desc_off = 256, t->mm_desc.rbs[1].tx_ring_buf_desc_size = 12
[ 357.152000] bcm63xx-phone bcm_drv_init() 1564: 8192 bytes of memory allocated, starting at address 0x82468000
[ 357.164000] bcm63xx-phone bcm_phone_mgr_init() 850: bcm_phone_mgr_init()
[ 357.168000] bcm63xx-phone bcm_phone_mgr_devs_init() 724: bcm_phone_mgr_devs_init()
[ 357.176000] bcm63xx-phone phone_device_alloc() 55: phone_device_alloc()
[ 357.184000] bcm63xx-phone phone_device_alloc() 66: 2020 bytes of memory allocated, starting at address 0x8337e800
[ 357.196000] bcm63xx-phone phone_dev_le88221_init() 54: phone_dev_le88221_init()
[ 357.204000] bcm63xx-phone phone_dev_zarlink_ve880_init() 1948: phone_dev_zarlink_ve880_init()
[ 357.212000] bcm63xx-phone bcm_mpi_init() 862: bcm_mpi_init()
[ 357.216000] bcm63xx-phone: Error: Driver 'bcm63xx-spi' is already registered, aborting...
[ 357.224000] bcm63xx-phone bcm_drv_init() 1584: Freeing mmap buffer used for RX, TX...
[ 357.232000] bcm63xx-phone pcm_deinit() 2684: pcm_deinit()
[ 357.240000] bcm63xx-phone pcm_stop() 2321: pcm_stop()
[ 357.244000] bcm63xx-phone pcm_dma_stop() 1470: pcm_dma_stop()
[ 357.252000] bcm63xx-phone pcm_stop() 2333: Halting TX DMA
[ 357.264000] bcm63xx-phone pcm_stop() 2340: TX DMA halted
[ 357.268000] bcm63xx-phone pcm_stop() 2355: Halting RX DMA
[ 357.280000] bcm63xx-phone pcm_stop() 2362: RX DMA halted
[ 357.284000] bcm63xx-phone pcm_stop() 2373: Disabling all PCM channels
[ 357.292000] bcm63xx-phone pcm_regs_reset() 1192: pcm_regs_reset()
[ 357.296000] bcm63xx-phone pcm_regs_reset() 1228: PCM_CTRL_REG <- 0x23200101
[ 357.304000] bcm63xx-phone pcm_dma_tx_descs_reset() 1373: pcm_dma_tx_descs_reset()
[ 357.312000] bcm63xx-phone pcm_pr_stats() 2053: ======= Stats =======
[ 357.320000] bcm63xx-phone pcm_pr_stats() 2054: rx_errors = 0
[ 357.324000] bcm63xx-phone pcm_pr_stats() 2055: rx_length_errors = 0
[ 357.332000] bcm63xx-phone pcm_pr_stats() 2056: rx_empty_errors = 0
[ 357.340000] bcm63xx-phone pcm_pr_stats() 2057: rx_good = 0
[ 357.344000] bcm63xx-phone pcm_pr_stats() 2058: rx_bytes = 0
[ 357.352000] bcm63xx-phone pcm_pr_stats() 2059: tx_errors = 0
[ 357.360000] bcm63xx-phone pcm_pr_stats() 2060: tx_good = 0
[ 357.368000] bcm63xx-phone pcm_pr_stats() 2061: tx_bytes = 0
[ 357.372000] bcm63xx-phone pcm_pr_stats() 2062: cnt_irq_rx = 0
[ 357.380000] bcm63xx-phone pcm_pr_stats() 2063: cnt_irq_tx = 0
[ 357.388000] bcm63xx-phone pcm_dma_deinit() 1798: pcm_dma_deinit()
[ 357.392000] bcm63xx-phone pcm_dma_deinit() 1820: Unmapping DMA addresses of TX descs
[ 357.400000] bcm63xx-phone pcm_dma_deinit() 1825: Unmapping DMA addresses of RX descs
[ 357.408000] bcm63xx-phone pcm_dma_deinit() 1872: Freeing memory of RX and TX data buffers
[ 357.416000] bcm63xx-phone pcm_dma_deinit() 1876: Freeing memory for DMA adresses
[ 357.424000] bcm63xx-phone pcm_dma_deinit() 1881: Freeing DMA memory of RX descs
[ 357.432000] bcm63xx-phone pcm_dma_deinit() 1890: Freeing DMA memory of TX descs
[ 357.440000] bcm63xx-phone pcm_regs_deinit() 1259: pcm_regs_deinit()
[ 357.448000] bcm63xx-phone pcm_regs_reset() 1192: pcm_regs_reset()
[ 357.452000] bcm63xx-phone pcm_regs_reset() 1228: PCM_CTRL_REG <- 0x23200101
[ 357.460000] bcm63xx-phone pcm6358_pll_deinit() 1037: pcm6358_pll_deinit()
[ 357.556000] bcm63xx-phone pcm_release_shared_res() 2001: pcm_release_shared_res()
[ 357.560000] bcm63xx-phone pcm_release_mem_res() 1936: pcm_release_mem_res(addr=0xfffe1a00, size=32)
[ 357.572000] bcm63xx-phone pcm_release_mem_res() 1936: pcm_release_mem_res(addr=0xfffe1900, size=32)
[ 357.580000] bcm63xx-phone pcm_release_mem_res() 1936: pcm_release_mem_res(addr=0xfffe1800, size=256)
[ 357.592000] bcm63xx-phone pcm_release_mem_res() 1936: pcm_release_mem_res(addr=0xfffe1600, size=256)
[ 357.600000] bcm63xx-phone bcm_drv_init() 1590: Unregistering device
[ 357.608000] bcm63xx-phone bcm_wait_queue_deinit() 39: bcm_wait_queue_deinit()
[ 357.612000] bcm63xx-phone bcm_wait_queue_deinit() 39: bcm_wait_queue_deinit()
[ 357.620000] bcm63xx-phone board_deinit() 771: board_deinit()

Kernel is 3.18.29 and Openwrt 15.05. What's wrong?

bcm63xx-phone kernel module fail to build on lede-project HEAD

Hi,

it seems that with the transition to linux-4.4.28 on bm63xx platform, disappeared some essentials headers.

/data/devel/router/lede/source/build_dir/target-mips_mips32_musl-1.1.15/bcm63xx-phone/mpi/mpi.c:185:28: error: 'SPI_CLK_CFG' undeclared (first use in this function)
reg = bcm_spi_readb(bs, SPI_CLK_CFG);
^
/data/devel/router/lede/source/build_dir/target-mips_mips32_musl-1.1.15/bcm63xx-phone/mpi/mpi.c:185:28: note: each undeclared identifier is reported only once for each function it appears in
/data/devel/router/lede/source/build_dir/target-mips_mips32_musl-1.1.15/bcm63xx-phone/mpi/mpi.c: In function 'bcm_mpi_set_fill_byte':
/data/devel/router/lede/source/build_dir/target-mips_mips32_musl-1.1.15/bcm63xx-phone/mpi/mpi.c:198:34: error: 'SPI_FILL_BYTE' undeclared (first use in this function)
bcm_spi_writeb(bs, fill_byte, SPI_FILL_BYTE);
^
/data/devel/router/lede/source/build_dir/target-mips_mips32_musl-1.1.15/bcm63xx-phone/mpi/mpi.c: In function 'bcm_mpi_rw_buf':
/data/devel/router/lede/source/build_dir/target-mips_mips32_musl-1.1.15/bcm63xx-phone/mpi/mpi.c:229:26: error: 'SPI_INT_MASK' undeclared (first use in this function)
bcm_spi_writeb(bs, 0, SPI_INT_MASK);
^
/data/devel/router/lede/source/build_dir/target-mips_mips32_musl-1.1.15/bcm63xx-phone/mpi/mpi.c:273:38: error: 'SPI_MSG_CTL' undeclared (first use in this function)
bcm_spi_writeb(bs, msg_ctl, SPI_MSG_CTL);
^
/data/devel/router/lede/source/build_dir/target-mips_mips32_musl-1.1.15/bcm63xx-phone/mpi/mpi.c:283:43: error: 'SPI_INT_STATUS' undeclared (first use in this function)
bcm_spi_writeb(bs, SPI_INTR_CLEAR_ALL, SPI_INT_STATUS);
^
/data/devel/router/lede/source/build_dir/target-mips_mips32_musl-1.1.15/bcm63xx-phone/mpi/mpi.c:290:28: error: 'SPI_CMD' undeclared (first use in this function)
bcm_spi_writew(bs, cmd, SPI_CMD);
^
/data/devel/router/lede/source/build_dir/target-mips_mips32_musl-1.1.15/bcm63xx-phone/mpi/mpi.c:306:35: error: 'SPI_RX_TAIL' undeclared (first use in this function)
rx_tail = bcm_spi_readb(bs, SPI_RX_TAIL);
^
/data/devel/router/lede/source/build_dir/target-mips_mips32_musl-1.1.15/bcm63xx-phone/mpi/mpi.c: In function 'bcm63xx_spi_interrupt':
/data/devel/router/lede/source/build_dir/target-mips_mips32_musl-1.1.15/bcm63xx-phone/mpi/mpi.c:327:29: error: 'SPI_INT_STATUS' undeclared (first use in this function)
intr = bcm_spi_readb(bs, SPI_INT_STATUS);
^
/data/devel/router/lede/source/build_dir/target-mips_mips32_musl-1.1.15/bcm63xx-phone/mpi/mpi.c:329:26: error: 'SPI_INT_MASK' undeclared (first use in this function)
bcm_spi_writeb(bs, 0, SPI_INT_MASK);

bcm63xx-ast-chan not installing

Hello! I'm flafyrex(also in OpenWRT Forums) and I tried to compile the bcm63xx-phone. The kernel module and phone-test got installed, but ast-chan doesn't want to install(WARNING: No feed for package 'bcm63xx-ast-chan' found, maybe it's already part of the standard packages?). I'm compiling on Debian Jessie 8. Please help me quickly. Thank you.

problem dahdi in router hg556 Failed probing type for channel 1 at perl_modules/Dahdi/Config/Gen/System.pm line 238

i am Successfully install driver dahdi in router hg556

logread

bcm63xx_phone_dahdi zarlink_wait_for_event() 340: Received VP_EVID_CAL_CMP event (i = 1180)
[ 37.750030] bcm63xx_phone_dahdi zarlink_wait_for_event() 354: Found event: pEvent.eventCategory = 2 pEvent.eventId = 64
[ 37.761351] bcm63xx_phone_dahdi zarlink_set_timeslot_and_codec() 272: zarlink_set_timeslot_and_codec(codec_type=0, ts=0)
[ 37.772829] bcm63xx_phone_dahdi zarlink_slic_line_init() 658: FXS line initialized OK
[ 37.780983] bcm63xx_phone_dahdi zarlink_slic_line_init() 586: zarlink_slic_line_init(country=0, codec=1, timeslot=2)
[ 37.794727] bcm63xx_phone_dahdi zarlink_wait_for_event() 316: zarlink_wait_for_event(evt_category=2, evt_id=2048)
[ 37.805535] bcm63xx_phone_dahdi zarlink_wait_for_event() 337: Received VP_LINE_EVID_LINE_INIT_CMP event (i = 0)
[ 37.816033] bcm63xx_phone_dahdi zarlink_wait_for_event() 354: Found event: pEvent.eventCategory = 2 pEvent.eventId = 2048
[ 37.828159] bcm63xx_phone_dahdi zarlink_wait_for_event() 316: zarlink_wait_for_event(evt_category=2, evt_id=64)
[ 39.888335] bcm63xx_phone_dahdi zarlink_wait_for_event() 340: Received VP_EVID_CAL_CMP event (i = 1180)
[ 39.898111] bcm63xx_phone_dahdi zarlink_wait_for_event() 354: Found event: pEvent.eventCategory = 2 pEvent.eventId = 64
[ 39.909414] bcm63xx_phone_dahdi zarlink_set_timeslot_and_codec() 272: zarlink_set_timeslot_and_codec(codec_type=0, ts=2)
[ 39.920887] bcm63xx_phone_dahdi zarlink_slic_line_init() 658: FXS line initialized OK
[ 39.929170] bcm63xx_phone_dahdi phone_dev_zarlink_get_hook_status() 1877: Line 0 is on hook
[ 39.938140] bcm63xx_phone_dahdi phone_dev_zarlink_get_hook_status() 1877: Line 1 is on hook
[ 39.947027] bcm63xx_phone_dahdi bcm_periodic_timer_add_work() 181: bcm_periodic_timer_add_work(period_in_us=10000)
[ 39.957777] bcm63xx_phone_dahdi bcm_period_set_period() 42: bcm_period_set_period(period_in_usecs=10000)
[ 39.967520] bcm63xx_phone_dahdi bcm_period_set_period() 61: one_jiffy_to_usecs=4000, period_in_jiffies=3, real_period=12000, drift_increment=2000
[ 39.981182] bcm63xx_phone_dahdi bcm_dahdi_startup() 914: bcm_dahdi_startup()
[ 39.988503] bcm63xx_phone_dahdi bcm_periodic_timer_add_work() 181: bcm_periodic_timer_add_work(period_in_us=1000)
[ 39.999127] bcm63xx_phone_dahdi bcm_period_set_period() 42: bcm_period_set_period(period_in_usecs=1000)
[ 40.008780] bcm63xx_phone_dahdi bcm_period_set_period() 61: one_jiffy_to_usecs=4000, period_in_jiffies=1, real_period=4000, drift_increment=3000
[ 40.022205] bcm63xx_phone_dahdi bcm63xx_phone_dahdi_init() 1188: bcm63xx_phone_dahdi successfully initialized
[ 40.047871] bcm63xx_phone_dahdi bcm_dahdi_set_line_mode() 481: bcm_dahdi_set_line_mode(line=0, mode=2, reverse_polarity=0)
[ 40.059425] bcm63xx_phone_dahdi bcm_dahdi_set_line_mode() 481: bcm_dahdi_set_line_mode(line=1, mode=2, reverse_polarity=0)


root@LEDE:/tmp/dahdi-tools-2.11.1/xpp# ./lsdahdi

Span 1: bcm63xx_phone_dahdi/1 "FXS driver for brcm63xx" (MASTER)

1 unknown
2 unknown

root@LEDE:/tmp/dahdi-tools-2.11.1# ./dahdi_scan
[1]
active=yes
alarms=UNCONFIGURED
description=FXS driver for brcm63xx
name=bcm63xx_phone_dahdi
manufacturer=ACME
devicetype=bcm63xx_phone_dahdi
location=
basechan=1
totchans=2
irq=0
type=analog
port=1,FXS
port=2,FXS

root@LEDE:/tmp/dahdi-tools-2.11.1/xpp# ./dahdi_genconf
Failed probing type for channel 1 at perl_modules/Dahdi/Config/Gen/System.pm line 238

Only line 2 works on HW556

Hi! After the recent updates, the first line stopped working!
The second one still works.

Could we debug this?
Thank you!
BR,
Talnaci Alexandru

Vodafone/Huawei HG556a HG56BZRB VER.A (VoIP chip Le88266DLC) Error starting

Vodafone/Huawei HG556a HG56BZRB VER.A (VoIP chip Le88266DLC)

LEDE Reboot (17.01.4, r3560-79f57e422d)

Module bcm63xx-phone.ko loads and initializes successfully but bcm63xx-phone-test fails with:
ioctl(2149598476) failed. errno=22
Error starting

The parameters I used with bcm63xx-phone-test and some additional debug output ithat may be useful are below.
Using different values for the defaults didn't notice any difference either.

root@OpenWrt:~# modprobe /lib/modules/4.4.92/bcm63xx-phone.ko

root@OpenWrt:~# dmesg -c
[ 198.756476] bcm63xx_phone: bcm63xx_phone: v0.2
[ 198.761153] bcm63xx_phone bcm63xx_phone_init() 1021: bcm63xx_phone_init()
[ 198.768233] bcm63xx_phone board_init() 719: board_init()
[ 198.773737] bcm63xx_phone: CPU is Broadcom 6358
[ 198.778447] bcm63xx_phone: Board is HW556
[ 198.782617] bcm63xx_phone board_get_desc() 778: board_get_desc()
[ 198.788924] bcm63xx_phone bcm_periodic_timer_init() 249: bcm_periodic_timer_init()
[ 198.796778] bcm63xx_phone bcm_timer_init() 191: bcm_timer_init()
[ 198.803009] bcm63xx_phone bcm_period_init() 28: bcm_period_init()
[ 198.809343] bcm63xx_phone bcm63xx_phone_init() 1081: t->mm_desc.ioctl_param_off = 0, t->mm_desc.ioctl_param_size = 220
[ 198.820456] bcm63xx_phone bcm63xx_phone_init() 1090: t->mm_desc.rbs[0].rx_ring_buf_desc_off = 224, t->mm_desc.rbs[0].rx_ring_buf_desc_size = 12
[ 198.833783] bcm63xx_phone bcm63xx_phone_init() 1098: t->mm_desc.rbs[0].tx_ring_buf_desc_off = 240, t->mm_desc.rbs[0].tx_ring_buf_desc_size = 12
[ 198.847149] bcm63xx_phone bcm63xx_phone_init() 1090: t->mm_desc.rbs[1].rx_ring_buf_desc_off = 256, t->mm_desc.rbs[1].rx_ring_buf_desc_size = 12
[ 198.860468] bcm63xx_phone bcm63xx_phone_init() 1098: t->mm_desc.rbs[1].tx_ring_buf_desc_off = 272, t->mm_desc.rbs[1].tx_ring_buf_desc_size = 12
[ 198.873895] bcm63xx_phone bcm63xx_phone_init() 1128: 8192 bytes of memory allocated, starting at address 0x80c70000
[ 198.884705] bcm63xx_phone bcm_phone_mgr_init() 1048: bcm_phone_mgr_init()
[ 198.891745] bcm63xx_phone bcm_periodic_work_init() 92: bcm_periodic_work_init()
[ 198.899314] bcm63xx_phone bcm_period_init() 28: bcm_period_init()
[ 198.905633] bcm63xx_phone bcm_phone_mgr_devs_init() 907: bcm_phone_mgr_devs_init()
[ 198.913477] bcm63xx_phone phone_device_alloc() 53: phone_device_alloc()
[ 198.920372] bcm63xx_phone phone_device_alloc() 82: 2032 bytes of memory allocated, starting at address 0x82eb3000
[ 198.931024] bcm63xx_phone phone_dev_le88266_init() 56: phone_dev_le88266_init()
[ 198.938600] bcm63xx_phone phone_dev_zarlink_ve880_init() 2017: phone_dev_zarlink_ve880_init()
[ 198.947430] bcm63xx_phone bcm_mpi_init() 878: bcm_mpi_init()
[ 198.953472] bcm63xx_phone bcm63xx_spi_probe() 414: bcm63xx_spi_probe()
[ 198.960350] bcm63xx-spi bcm6358-spi: at 0xfffe0800 (irq 9, FIFOs size 542)
[ 198.967860] bcm63xx_phone phone_dev_zarlink_init() 678: phone_dev_zarlink_init()
[ 198.975563] bcm63xx_phone zarlink_reset() 162: zarlink_reset(gpio_num=0x8018)
[ 199.050732] bcm63xx_phone phone_device_init() 28: phone_device_init()
[ 199.057432] bcm63xx_phone zarlink_device_id_init() 456: zarlink_device_id_init()
[ 199.065151] bcm63xx_phone: 1 device(s) provides 2 FXS line(s)
[ 199.071132] bcm63xx_phone bcm_phone_mgr_init() 1072: Initializing event wait queue
[ 199.078984] bcm63xx_phone bcm_wait_queue_init() 31: bcm_wait_queue_init()
[ 199.086022] bcm63xx_phone bcm_drv_init() 1173: bcm_drv_init()
[ 199.091991] bcm63xx_phone bcm_drv_init() 1178: Initializing RX wait queue
[ 199.099032] bcm63xx_phone bcm_wait_queue_init() 31: bcm_wait_queue_init()
[ 199.106072] bcm63xx_phone bcm_drv_init() 1180: Initializing TX wait queue
[ 199.113130] bcm63xx_phone bcm_wait_queue_init() 31: bcm_wait_queue_init()
[ 199.120173] bcm63xx_phone bcm_drv_init() 1195: Registering device bcm63xx_phone
[ 199.128180] bcm63xx_phone pcm_init() 2531: pcm_init()
[ 199.133478] bcm63xx_phone pcm_init() 2607: Using 15 buffers of 256 bytes for RX
[ 199.141060] bcm63xx_phone pcm_init() 2649: Using 15 buffers of 256 bytes for TX
[ 199.148685] bcm63xx_phone pcm_get_shared_res() 1986: pcm_get_shared_res()
[ 199.155757] bcm63xx_phone pcm_get_mem_res() 1942: pcm_get_mem_res(id=pcm, addr=0xfffe1600, size=256)
[ 199.165236] bcm63xx_phone pcm_get_mem_res() 1942: pcm_get_mem_res(id=pcm_dma, addr=0xfffe1800, size=256)
[ 199.175070] bcm63xx_phone pcm_get_mem_res() 1942: pcm_get_mem_res(id=pcm_dmac, addr=0xfffe1900, size=32)
[ 199.184898] bcm63xx_phone pcm_get_mem_res() 1942: pcm_get_mem_res(id=pcm_dmas, addr=0xfffe1a00, size=32)
[ 199.282733] bcm63xx_phone pcm6358_pll_init() 1001: pcm6358_pll_init()
[ 199.289450] bcm63xx_phone pcm6358_pll_init() 1006: pll_ctrl1=f0010001, pll_ctrl2=53d47, pll_ctrl3=a85
[ 199.330741] bcm63xx_phone pcm6358_pll_init() 1059: pll_ctrl1=20001, pll_ctrl2=8492b, pll_ctrl3=1e1c
[ 199.340245] bcm63xx_phone pcm_regs_init() 1279: pcm_regs_init()
[ 199.346410] bcm63xx_phone pcm_regs_reset() 1223: pcm_regs_reset()
[ 199.352780] bcm63xx_phone pcm_regs_reset() 1260: PCM_CTRL_REG <- 0x23200101
[ 199.360020] bcm63xx_phone pcm_dma_init() 1538: pcm_dma_init()
[ 199.365986] bcm63xx_phone pcm_dma_init() 1571: Allocating 120 bytes of DMA memory for RX descs
[ 199.374973] bcm63xx_phone pcm_dma_init() 1582: 120 bytes of memory allocated, starting at address 0xa0c82000
[ 199.385153] bcm63xx_phone pcm_dma_init() 1588: Allocating 120 bytes of DMA memory for TX descs
[ 199.394135] bcm63xx_phone pcm_dma_init() 1599: 120 bytes of memory allocated, starting at address 0xa0c81000
[ 199.404323] bcm63xx_phone pcm_dma_init() 1607: Allocating 7680 bytes of memory for RX and TX data buffers
[ 199.414239] bcm63xx_phone pcm_dma_init() 1614: 7680 bytes of memory allocated, starting at address 0x82dc2000
[ 199.424518] bcm63xx_phone pcm_dma_init() 1640: Allocating 128 bytes of memory for DMA addresses
[ 199.433539] bcm63xx_phone pcm_dma_init() 1647: 128 bytes of memory allocated, starting at address 0x82d7d580
[ 199.443727] bcm63xx_phone pcm_dma_init() 1654: Mapping DMA addresses of RX descs
[ 199.451401] bcm63xx_phone pcm_dma_init() 1671: Mapping DMA addresses of TX descs
[ 199.459079] bcm63xx_phone pcm_dma_rx_descs_reset() 1374: pcm_dma_rx_descs_reset()
[ 199.466885] bcm63xx_phone pcm_dma_tx_descs_reset() 1405: pcm_dma_tx_descs_reset()
[ 199.474712] bcm63xx_phone bcm_periodic_timer_start() 156: bcm_periodic_timer_start()
[ 199.482758] bcm63xx_phone bcm_timer_start() 179: bcm_timer_start(period_in_usecs=10000)
[ 199.491051] bcm63xx_phone bcm_timer_stop() 167: bcm_timer_stop()
[ 199.497281] bcm63xx_phone bcm_period_set_period() 42: bcm_period_set_period(period_in_usecs=10000)
[ 199.506567] bcm63xx_phone bcm_period_set_period() 61: one_jiffy_to_usecs=4000, period_in_jiffies=3, real_period=12000, drift_increment=2000
[ 199.519529] bcm63xx_phone bcm63xx_phone_init() 1188: bcm63xx_phone successfully initialized

root@OpenWrt:~# bcm63xx-phone-test test=tone
ioctl(2149598476) failed. errno=22
Error starting

root@OpenWrt:~# dmesg -c
[ 222.230898] bcm63xx_phone bcm_drv_open() 997: bcm_drv_open()
[ 222.236856] bcm63xx_phone bcm_drv_unlocked_ioctl() 640: BCMPH_IOCTL_START
[ 222.243934] bcm63xx_phone bcm_drv_start() 949: bcm_drv_start()
[ 222.250024] bcm63xx_phone bcm_drv_stop() 850: bcm_drv_stop()
[ 222.255911] bcm63xx_phone pcm_stop() 2370: pcm_stop()
[ 222.261177] bcm63xx_phone pcm_dma_stop() 1506: pcm_dma_stop()
[ 222.267152] bcm63xx_phone pcm_stop() 2382: Halting TX DMA
[ 222.277852] bcm63xx_phone pcm_stop() 2389: TX DMA halted
[ 222.283387] bcm63xx_phone pcm_stop() 2404: Halting RX DMA
[ 222.293899] bcm63xx_phone pcm_stop() 2411: RX DMA halted
[ 222.299432] bcm63xx_phone pcm_stop() 2422: Disabling all PCM channels
[ 222.306141] bcm63xx_phone pcm_regs_reset() 1223: pcm_regs_reset()
[ 222.312471] bcm63xx_phone pcm_regs_reset() 1260: PCM_CTRL_REG <- 0x23200101
[ 222.319713] bcm63xx_phone pcm_dma_tx_descs_reset() 1405: pcm_dma_tx_descs_reset()
[ 222.327571] bcm63xx_phone pcm_pr_stats() 2100: ======= Stats =======
[ 222.334167] bcm63xx_phone pcm_pr_stats() 2101: rx_errors = 0
[ 222.341021] bcm63xx_phone pcm_pr_stats() 2102: rx_length_errors = 0
[ 222.347876] bcm63xx_phone pcm_pr_stats() 2103: rx_empty_errors = 0
[ 222.354730] bcm63xx_phone pcm_pr_stats() 2104: rx_good = 0
[ 222.361584] bcm63xx_phone pcm_pr_stats() 2105: rx_bytes = 0
[ 222.368460] bcm63xx_phone pcm_pr_stats() 2106: tx_errors = 0
[ 222.375313] bcm63xx_phone pcm_pr_stats() 2107: tx_good = 0
[ 222.382167] bcm63xx_phone pcm_pr_stats() 2108: tx_bytes = 0
[ 222.389043] bcm63xx_phone pcm_pr_stats() 2109: cnt_irq_rx = 0
[ 222.395932] bcm63xx_phone pcm_pr_stats() 2110: cnt_irq_tx = 0
[ 222.402787] bcm63xx_phone bcm_phone_mgr_stop() 773: bcm_phone_mgr_stop()
[ 222.409758] bcm63xx_phone bcm_periodic_timer_del_work() 199: bcm_periodic_timer_del_work()
[ 222.418320] bcm63xx_phone phone_dev_zarlink_ve880_stop() 2174: phone_dev_zarlink_ve880_stop()
[ 222.427174] bcm63xx_phone bcm_phone_mgr_get_first_timeslot_line() 143: bcm_phone_mgr_get_first_timeslot_line(line=0)
[ 222.438062] bcm63xx_phone: Echo cancellation can be enabled for line 0 so no other codec than linear is allowed
[ 222.456315] bcm63xx_phone bcm_drv_release() 1038: bcm_drv_release()
[ 222.462864] bcm63xx_phone bcm_drv_stop() 850: bcm_drv_stop()
[ 222.468788] bcm63xx_phone pcm_stop() 2370: pcm_stop()
[ 222.474104] bcm63xx_phone pcm_dma_stop() 1506: pcm_dma_stop()
[ 222.480072] bcm63xx_phone pcm_stop() 2382: Halting TX DMA
[ 222.489849] bcm63xx_phone pcm_stop() 2389: TX DMA halted
[ 222.495535] bcm63xx_phone pcm_stop() 2404: Halting RX DMA
[ 222.505889] bcm63xx_phone pcm_stop() 2411: RX DMA halted
[ 222.511434] bcm63xx_phone pcm_stop() 2422: Disabling all PCM channels
[ 222.518138] bcm63xx_phone pcm_regs_reset() 1223: pcm_regs_reset()
[ 222.524510] bcm63xx_phone pcm_regs_reset() 1260: PCM_CTRL_REG <- 0x23200101
[ 222.531753] bcm63xx_phone pcm_dma_tx_descs_reset() 1405: pcm_dma_tx_descs_reset()
[ 222.539558] bcm63xx_phone pcm_pr_stats() 2100: ======= Stats =======
[ 222.546151] bcm63xx_phone pcm_pr_stats() 2101: rx_errors = 0
[ 222.553009] bcm63xx_phone pcm_pr_stats() 2102: rx_length_errors = 0
[ 222.559877] bcm63xx_phone pcm_pr_stats() 2103: rx_empty_errors = 0
[ 222.566739] bcm63xx_phone pcm_pr_stats() 2104: rx_good = 0
[ 222.573617] bcm63xx_phone pcm_pr_stats() 2105: rx_bytes = 0
[ 222.580475] bcm63xx_phone pcm_pr_stats() 2106: tx_errors = 0
[ 222.587336] bcm63xx_phone pcm_pr_stats() 2107: tx_good = 0
[ 222.594214] bcm63xx_phone pcm_pr_stats() 2108: tx_bytes = 0
[ 222.601094] bcm63xx_phone pcm_pr_stats() 2109: cnt_irq_rx = 0
[ 222.607955] bcm63xx_phone pcm_pr_stats() 2110: cnt_irq_tx = 0
[ 222.614817] bcm63xx_phone bcm_phone_mgr_stop() 773: bcm_phone_mgr_stop()
[ 222.621776] bcm63xx_phone bcm_periodic_timer_del_work() 199: bcm_periodic_timer_del_work()
[ 222.630347] bcm63xx_phone phone_dev_zarlink_ve880_stop() 2174: phone_dev_zarlink_ve880_stop()

root@OpenWrt:~# bcm63xx-phone-test test=echo output=/tmp/echo.dat
ioctl(2149598476) failed. errno=22
Error starting

root@OpenWrt:~# dmesg -c
[ 256.091886] bcm63xx_phone bcm_drv_open() 997: bcm_drv_open()
[ 256.100085] bcm63xx_phone bcm_drv_unlocked_ioctl() 640: BCMPH_IOCTL_START
[ 256.107227] bcm63xx_phone bcm_drv_start() 949: bcm_drv_start()
[ 256.113312] bcm63xx_phone bcm_drv_stop() 850: bcm_drv_stop()
[ 256.119192] bcm63xx_phone pcm_stop() 2370: pcm_stop()
[ 256.124449] bcm63xx_phone pcm_dma_stop() 1506: pcm_dma_stop()
[ 256.130419] bcm63xx_phone pcm_stop() 2382: Halting TX DMA
[ 256.140671] bcm63xx_phone pcm_stop() 2389: TX DMA halted
[ 256.146218] bcm63xx_phone pcm_stop() 2404: Halting RX DMA
[ 256.156719] bcm63xx_phone pcm_stop() 2411: RX DMA halted
[ 256.162249] bcm63xx_phone pcm_stop() 2422: Disabling all PCM channels
[ 256.168957] bcm63xx_phone pcm_regs_reset() 1223: pcm_regs_reset()
[ 256.175290] bcm63xx_phone pcm_regs_reset() 1260: PCM_CTRL_REG <- 0x23200101
[ 256.182582] bcm63xx_phone pcm_dma_tx_descs_reset() 1405: pcm_dma_tx_descs_reset()
[ 256.190433] bcm63xx_phone pcm_pr_stats() 2100: ======= Stats =======
[ 256.197023] bcm63xx_phone pcm_pr_stats() 2101: rx_errors = 0
[ 256.203871] bcm63xx_phone pcm_pr_stats() 2102: rx_length_errors = 0
[ 256.210728] bcm63xx_phone pcm_pr_stats() 2103: rx_empty_errors = 0
[ 256.217583] bcm63xx_phone pcm_pr_stats() 2104: rx_good = 0
[ 256.224436] bcm63xx_phone pcm_pr_stats() 2105: rx_bytes = 0
[ 256.231293] bcm63xx_phone pcm_pr_stats() 2106: tx_errors = 0
[ 256.238145] bcm63xx_phone pcm_pr_stats() 2107: tx_good = 0
[ 256.245000] bcm63xx_phone pcm_pr_stats() 2108: tx_bytes = 0
[ 256.251853] bcm63xx_phone pcm_pr_stats() 2109: cnt_irq_rx = 0
[ 256.258709] bcm63xx_phone pcm_pr_stats() 2110: cnt_irq_tx = 0
[ 256.265565] bcm63xx_phone bcm_phone_mgr_stop() 773: bcm_phone_mgr_stop()
[ 256.272506] bcm63xx_phone bcm_periodic_timer_del_work() 199: bcm_periodic_timer_del_work()
[ 256.281074] bcm63xx_phone phone_dev_zarlink_ve880_stop() 2174: phone_dev_zarlink_ve880_stop()
[ 256.289925] bcm63xx_phone bcm_phone_mgr_get_first_timeslot_line() 143: bcm_phone_mgr_get_first_timeslot_line(line=0)
[ 256.300834] bcm63xx_phone: Echo cancellation can be enabled for line 0 so no other codec than linear is allowed
[ 256.318703] bcm63xx_phone bcm_drv_release() 1038: bcm_drv_release()
[ 256.325267] bcm63xx_phone bcm_drv_stop() 850: bcm_drv_stop()
[ 256.331165] bcm63xx_phone pcm_stop() 2370: pcm_stop()
[ 256.336440] bcm63xx_phone pcm_dma_stop() 1506: pcm_dma_stop()
[ 256.342415] bcm63xx_phone pcm_stop() 2382: Halting TX DMA
[ 256.352661] bcm63xx_phone pcm_stop() 2389: TX DMA halted
[ 256.358176] bcm63xx_phone pcm_stop() 2404: Halting RX DMA
[ 256.368712] bcm63xx_phone pcm_stop() 2411: RX DMA halted
[ 256.374250] bcm63xx_phone pcm_stop() 2422: Disabling all PCM channels
[ 256.380951] bcm63xx_phone pcm_regs_reset() 1223: pcm_regs_reset()
[ 256.387345] bcm63xx_phone pcm_regs_reset() 1260: PCM_CTRL_REG <- 0x23200101
[ 256.394593] bcm63xx_phone pcm_dma_tx_descs_reset() 1405: pcm_dma_tx_descs_reset()
[ 256.402419] bcm63xx_phone pcm_pr_stats() 2100: ======= Stats =======
[ 256.409011] bcm63xx_phone pcm_pr_stats() 2101: rx_errors = 0
[ 256.415867] bcm63xx_phone pcm_pr_stats() 2102: rx_length_errors = 0
[ 256.422723] bcm63xx_phone pcm_pr_stats() 2103: rx_empty_errors = 0
[ 256.429578] bcm63xx_phone pcm_pr_stats() 2104: rx_good = 0
[ 256.436431] bcm63xx_phone pcm_pr_stats() 2105: rx_bytes = 0
[ 256.443288] bcm63xx_phone pcm_pr_stats() 2106: tx_errors = 0
[ 256.450141] bcm63xx_phone pcm_pr_stats() 2107: tx_good = 0
[ 256.456996] bcm63xx_phone pcm_pr_stats() 2108: tx_bytes = 0
[ 256.463849] bcm63xx_phone pcm_pr_stats() 2109: cnt_irq_rx = 0
[ 256.470705] bcm63xx_phone pcm_pr_stats() 2110: cnt_irq_tx = 0
[ 256.477560] bcm63xx_phone bcm_phone_mgr_stop() 773: bcm_phone_mgr_stop()
[ 256.484504] bcm63xx_phone bcm_periodic_timer_del_work() 199: bcm_periodic_timer_del_work()
[ 256.493119] bcm63xx_phone phone_dev_zarlink_ve880_stop() 2174: phone_dev_zarlink_ve880_stop()

root@OpenWrt:~# bcm63xx-phone-test test=loopback
pcm_regs =>
ctlr = 0x0
chan_ctrl = 0x0
int_pending = 0x0
int_mask = 0x0
pll_ctrl1 = 0x20001
pll_ctrl2 = 0x8492b
pll_ctrl3 = 0x1e1c
pll_ctrl4 = 0x0
pll_stat = 0x1
slot_alloc_tbl[0] = 0x0
slot_alloc_tbl[1] = 0x0
slot_alloc_tbl[2] = 0x0
slot_alloc_tbl[3] = 0x0
slot_alloc_tbl[4] = 0x0
slot_alloc_tbl[5] = 0x0
slot_alloc_tbl[6] = 0x0
slot_alloc_tbl[7] = 0x0
slot_alloc_tbl[8] = 0x0
slot_alloc_tbl[9] = 0x0
slot_alloc_tbl[10] = 0x0
slot_alloc_tbl[11] = 0x0
slot_alloc_tbl[12] = 0x0
slot_alloc_tbl[13] = 0x0
slot_alloc_tbl[14] = 0x0
slot_alloc_tbl[15] = 0x0
dma_cfg = 0x1000000
dma_channels[0].dma_flowcl = 0x0
dma_channels[0].dma_flowch = 0x0
dma_channels[0].dma_bufalloc = 0x0
dma_channels[0].dmac_chancfg = 0x0
dma_channels[0].dmac_ir = 0x0
dma_channels[0].dmac_irmask = 0x0
dma_channels[0].dmac_maxburst = 0x10
dma_channels[0].dmas_rstart = 0xc82000
dma_channels[0].dmas_sram2 = 0x0
dma_channels[0].dmas_sram3 = 0x0
dma_channels[0].dmas_sram4 = 0x0
dma_channels[1].dma_flowcl = 0x0
dma_channels[1].dma_flowch = 0x0
dma_channels[1].dma_bufalloc = 0x0
dma_channels[1].dmac_chancfg = 0x0
dma_channels[1].dmac_ir = 0x0
dma_channels[1].dmac_irmask = 0x0
dma_channels[1].dmac_maxburst = 0x10
dma_channels[1].dmas_rstart = 0xc81000
dma_channels[1].dmas_sram2 = 0x0
dma_channels[1].dmas_sram3 = 0x0
dma_channels[1].dmas_sram4 = 0x0
ioctl(2149598476) failed. errno=22
Error starting

root@OpenWrt:~# dmesg -c
[ 281.561133] bcm63xx_phone bcm_drv_open() 997: bcm_drv_open()
[ 281.587114] bcm63xx_phone bcm_drv_unlocked_ioctl() 640: BCMPH_IOCTL_START
[ 281.594210] bcm63xx_phone bcm_drv_start() 949: bcm_drv_start()
[ 281.600287] bcm63xx_phone bcm_drv_stop() 850: bcm_drv_stop()
[ 281.606202] bcm63xx_phone pcm_stop() 2370: pcm_stop()
[ 281.611448] bcm63xx_phone pcm_dma_stop() 1506: pcm_dma_stop()
[ 281.617422] bcm63xx_phone pcm_stop() 2382: Halting TX DMA
[ 281.627810] bcm63xx_phone pcm_stop() 2389: TX DMA halted
[ 281.633356] bcm63xx_phone pcm_stop() 2404: Halting RX DMA
[ 281.643873] bcm63xx_phone pcm_stop() 2411: RX DMA halted
[ 281.649406] bcm63xx_phone pcm_stop() 2422: Disabling all PCM channels
[ 281.656106] bcm63xx_phone pcm_regs_reset() 1223: pcm_regs_reset()
[ 281.662441] bcm63xx_phone pcm_regs_reset() 1260: PCM_CTRL_REG <- 0x23200101
[ 281.669697] bcm63xx_phone pcm_dma_tx_descs_reset() 1405: pcm_dma_tx_descs_reset()
[ 281.677517] bcm63xx_phone pcm_pr_stats() 2100: ======= Stats =======
[ 281.684170] bcm63xx_phone pcm_pr_stats() 2101: rx_errors = 0
[ 281.691048] bcm63xx_phone pcm_pr_stats() 2102: rx_length_errors = 0
[ 281.697907] bcm63xx_phone pcm_pr_stats() 2103: rx_empty_errors = 0
[ 281.704773] bcm63xx_phone pcm_pr_stats() 2104: rx_good = 0
[ 281.711624] bcm63xx_phone pcm_pr_stats() 2105: rx_bytes = 0
[ 281.718477] bcm63xx_phone pcm_pr_stats() 2106: tx_errors = 0
[ 281.725331] bcm63xx_phone pcm_pr_stats() 2107: tx_good = 0
[ 281.732186] bcm63xx_phone pcm_pr_stats() 2108: tx_bytes = 0
[ 281.739038] bcm63xx_phone pcm_pr_stats() 2109: cnt_irq_rx = 0
[ 281.745915] bcm63xx_phone pcm_pr_stats() 2110: cnt_irq_tx = 0
[ 281.752770] bcm63xx_phone bcm_phone_mgr_stop() 773: bcm_phone_mgr_stop()
[ 281.759726] bcm63xx_phone bcm_periodic_timer_del_work() 199: bcm_periodic_timer_del_work()
[ 281.768296] bcm63xx_phone phone_dev_zarlink_ve880_stop() 2174: phone_dev_zarlink_ve880_stop()
[ 281.777147] bcm63xx_phone bcm_phone_mgr_get_first_timeslot_line() 143: bcm_phone_mgr_get_first_timeslot_line(line=0)
[ 281.788037] bcm63xx_phone: Echo cancellation can be enabled for line 0 so no other codec than linear is allowed
[ 281.806383] bcm63xx_phone bcm_drv_release() 1038: bcm_drv_release()
[ 281.812936] bcm63xx_phone bcm_drv_stop() 850: bcm_drv_stop()
[ 281.818832] bcm63xx_phone pcm_stop() 2370: pcm_stop()
[ 281.824120] bcm63xx_phone pcm_dma_stop() 1506: pcm_dma_stop()
[ 281.830095] bcm63xx_phone pcm_stop() 2382: Halting TX DMA
[ 281.843797] bcm63xx_phone pcm_stop() 2389: TX DMA halted
[ 281.849351] bcm63xx_phone pcm_stop() 2404: Halting RX DMA
[ 281.859792] bcm63xx_phone pcm_stop() 2411: RX DMA halted
[ 281.865334] bcm63xx_phone pcm_stop() 2422: Disabling all PCM channels
[ 281.872035] bcm63xx_phone pcm_regs_reset() 1223: pcm_regs_reset()
[ 281.878386] bcm63xx_phone pcm_regs_reset() 1260: PCM_CTRL_REG <- 0x23200101
[ 281.885671] bcm63xx_phone pcm_dma_tx_descs_reset() 1405: pcm_dma_tx_descs_reset()
[ 281.893504] bcm63xx_phone pcm_pr_stats() 2100: ======= Stats =======
[ 281.900096] bcm63xx_phone pcm_pr_stats() 2101: rx_errors = 0
[ 281.906953] bcm63xx_phone pcm_pr_stats() 2102: rx_length_errors = 0
[ 281.913810] bcm63xx_phone pcm_pr_stats() 2103: rx_empty_errors = 0
[ 281.920672] bcm63xx_phone pcm_pr_stats() 2104: rx_good = 0
[ 281.927525] bcm63xx_phone pcm_pr_stats() 2105: rx_bytes = 0
[ 281.934382] bcm63xx_phone pcm_pr_stats() 2106: tx_errors = 0
[ 281.941244] bcm63xx_phone pcm_pr_stats() 2107: tx_good = 0
[ 281.948097] bcm63xx_phone pcm_pr_stats() 2108: tx_bytes = 0
[ 281.954970] bcm63xx_phone pcm_pr_stats() 2109: cnt_irq_rx = 0
[ 281.961826] bcm63xx_phone pcm_pr_stats() 2110: cnt_irq_tx = 0
[ 281.968681] bcm63xx_phone bcm_phone_mgr_stop() 773: bcm_phone_mgr_stop()
[ 281.975633] bcm63xx_phone bcm_periodic_timer_del_work() 199: bcm_periodic_timer_del_work()
[ 281.984200] bcm63xx_phone phone_dev_zarlink_ve880_stop() 2174: phone_dev_zarlink_ve880_stop()

root@OpenWrt:~# bcm63xx-phone-test test=loopback_mm
pcm_regs =>
ctlr = 0x0
chan_ctrl = 0x0
int_pending = 0x0
int_mask = 0x0
pll_ctrl1 = 0x20001
pll_ctrl2 = 0x8492b
pll_ctrl3 = 0x1e1c
pll_ctrl4 = 0x0
pll_stat = 0x1
slot_alloc_tbl[0] = 0x0
slot_alloc_tbl[1] = 0x0
slot_alloc_tbl[2] = 0x0
slot_alloc_tbl[3] = 0x0
slot_alloc_tbl[4] = 0x0
slot_alloc_tbl[5] = 0x0
slot_alloc_tbl[6] = 0x0
slot_alloc_tbl[7] = 0x0
slot_alloc_tbl[8] = 0x0
slot_alloc_tbl[9] = 0x0
slot_alloc_tbl[10] = 0x0
slot_alloc_tbl[11] = 0x0
slot_alloc_tbl[12] = 0x0
slot_alloc_tbl[13] = 0x0
slot_alloc_tbl[14] = 0x0
slot_alloc_tbl[15] = 0x0
dma_cfg = 0x1000000
dma_channels[0].dma_flowcl = 0x0
dma_channels[0].dma_flowch = 0x0
dma_channels[0].dma_bufalloc = 0x0
dma_channels[0].dmac_chancfg = 0x0
dma_channels[0].dmac_ir = 0x0
dma_channels[0].dmac_irmask = 0x0
dma_channels[0].dmac_maxburst = 0x10
dma_channels[0].dmas_rstart = 0xc82000
dma_channels[0].dmas_sram2 = 0x0
dma_channels[0].dmas_sram3 = 0x0
dma_channels[0].dmas_sram4 = 0x0
dma_channels[1].dma_flowcl = 0x0
dma_channels[1].dma_flowch = 0x0
dma_channels[1].dma_bufalloc = 0x0
dma_channels[1].dmac_chancfg = 0x0
dma_channels[1].dmac_ir = 0x0
dma_channels[1].dmac_irmask = 0x0
dma_channels[1].dmac_maxburst = 0x10
dma_channels[1].dmas_rstart = 0xc81000
dma_channels[1].dmas_sram2 = 0x0
dma_channels[1].dmas_sram3 = 0x0
dma_channels[1].dmas_sram4 = 0x0
ioctl(536888589) failed. errno=22
Error starting

root@OpenWrt:~# dmesg -c
[ 314.887481] bcm63xx_phone bcm_drv_open() 997: bcm_drv_open()
[ 314.893447] bcm63xx_phone bcm_drv_unlocked_ioctl() 731: BCMPH_IOCTL_GET_MMAP_DESC
[ 314.902083] bcm63xx_phone bcm_drv_mmap() 1097: bcm_drv_mmap()
[ 314.907945] bcm63xx_phone bcm_drv_mm_open() 1067: bcm_drv_mm_open()
[ 314.935421] bcm63xx_phone bcm_drv_unlocked_ioctl() 665: BCMPH_IOCTL_START_MM
[ 314.942798] bcm63xx_phone bcm_drv_start() 949: bcm_drv_start()
[ 314.948874] bcm63xx_phone bcm_drv_stop() 850: bcm_drv_stop()
[ 314.954762] bcm63xx_phone pcm_stop() 2370: pcm_stop()
[ 314.960065] bcm63xx_phone pcm_dma_stop() 1506: pcm_dma_stop()
[ 314.966072] bcm63xx_phone pcm_stop() 2382: Halting TX DMA
[ 314.978988] bcm63xx_phone pcm_stop() 2389: TX DMA halted
[ 314.984532] bcm63xx_phone pcm_stop() 2404: Halting RX DMA
[ 314.994995] bcm63xx_phone pcm_stop() 2411: RX DMA halted
[ 315.000525] bcm63xx_phone pcm_stop() 2422: Disabling all PCM channels
[ 315.007237] bcm63xx_phone pcm_regs_reset() 1223: pcm_regs_reset()
[ 315.013588] bcm63xx_phone pcm_regs_reset() 1260: PCM_CTRL_REG <- 0x23200101
[ 315.020822] bcm63xx_phone pcm_dma_tx_descs_reset() 1405: pcm_dma_tx_descs_reset()
[ 315.028636] bcm63xx_phone pcm_pr_stats() 2100: ======= Stats =======
[ 315.035240] bcm63xx_phone pcm_pr_stats() 2101: rx_errors = 0
[ 315.042111] bcm63xx_phone pcm_pr_stats() 2102: rx_length_errors = 0
[ 315.048979] bcm63xx_phone pcm_pr_stats() 2103: rx_empty_errors = 0
[ 315.055846] bcm63xx_phone pcm_pr_stats() 2104: rx_good = 0
[ 315.062756] bcm63xx_phone pcm_pr_stats() 2105: rx_bytes = 0
[ 315.069672] bcm63xx_phone pcm_pr_stats() 2106: tx_errors = 0
[ 315.076540] bcm63xx_phone pcm_pr_stats() 2107: tx_good = 0
[ 315.083397] bcm63xx_phone pcm_pr_stats() 2108: tx_bytes = 0
[ 315.090250] bcm63xx_phone pcm_pr_stats() 2109: cnt_irq_rx = 0
[ 315.097106] bcm63xx_phone pcm_pr_stats() 2110: cnt_irq_tx = 0
[ 315.103960] bcm63xx_phone bcm_phone_mgr_stop() 773: bcm_phone_mgr_stop()
[ 315.110928] bcm63xx_phone bcm_periodic_timer_del_work() 199: bcm_periodic_timer_del_work()
[ 315.119497] bcm63xx_phone phone_dev_zarlink_ve880_stop() 2174: phone_dev_zarlink_ve880_stop()
[ 315.128356] bcm63xx_phone bcm_phone_mgr_get_first_timeslot_line() 143: bcm_phone_mgr_get_first_timeslot_line(line=0)
[ 315.139245] bcm63xx_phone: Echo cancellation can be enabled for line 0 so no other codec than linear is allowed
[ 315.157509] bcm63xx_phone bcm_drv_mm_close() 1072: bcm_drv_mm_close()
[ 315.164784] bcm63xx_phone bcm_drv_release() 1038: bcm_drv_release()
[ 315.171409] bcm63xx_phone bcm_drv_stop() 850: bcm_drv_stop()
[ 315.177299] bcm63xx_phone pcm_stop() 2370: pcm_stop()
[ 315.182562] bcm63xx_phone pcm_dma_stop() 1506: pcm_dma_stop()
[ 315.188527] bcm63xx_phone pcm_stop() 2382: Halting TX DMA
[ 315.199002] bcm63xx_phone pcm_stop() 2389: TX DMA halted
[ 315.204540] bcm63xx_phone pcm_stop() 2404: Halting RX DMA
[ 315.215039] bcm63xx_phone pcm_stop() 2411: RX DMA halted
[ 315.220585] bcm63xx_phone pcm_stop() 2422: Disabling all PCM channels
[ 315.227306] bcm63xx_phone pcm_regs_reset() 1223: pcm_regs_reset()
[ 315.233648] bcm63xx_phone pcm_regs_reset() 1260: PCM_CTRL_REG <- 0x23200101
[ 315.240897] bcm63xx_phone pcm_dma_tx_descs_reset() 1405: pcm_dma_tx_descs_reset()
[ 315.248715] bcm63xx_phone pcm_pr_stats() 2100: ======= Stats =======
[ 315.255325] bcm63xx_phone pcm_pr_stats() 2101: rx_errors = 0
[ 315.262191] bcm63xx_phone pcm_pr_stats() 2102: rx_length_errors = 0
[ 315.269106] bcm63xx_phone pcm_pr_stats() 2103: rx_empty_errors = 0
[ 315.276010] bcm63xx_phone pcm_pr_stats() 2104: rx_good = 0
[ 315.282865] bcm63xx_phone pcm_pr_stats() 2105: rx_bytes = 0
[ 315.289768] bcm63xx_phone pcm_pr_stats() 2106: tx_errors = 0
[ 315.296628] bcm63xx_phone pcm_pr_stats() 2107: tx_good = 0
[ 315.303481] bcm63xx_phone pcm_pr_stats() 2108: tx_bytes = 0
[ 315.310334] bcm63xx_phone pcm_pr_stats() 2109: cnt_irq_rx = 0
[ 315.317190] bcm63xx_phone pcm_pr_stats() 2110: cnt_irq_tx = 0
[ 315.324062] bcm63xx_phone bcm_phone_mgr_stop() 773: bcm_phone_mgr_stop()
[ 315.331011] bcm63xx_phone bcm_periodic_timer_del_work() 199: bcm_periodic_timer_del_work()
[ 315.339583] bcm63xx_phone phone_dev_zarlink_ve880_stop() 2174: phone_dev_zarlink_ve880_stop()

issue using bcm63xx-phone device on Pirelli DRG A226M

Hello,
I'm using lede snapshot and I compiled my own image loading bcm63xx-phone kernel module and removing bcm63xx-spi kernel module. When I load the kernel module it is correctly loaded:

root@LEDE:~# insmod bcm63xx-phone

root@LEDE:~# lsmod | grep bcm
bcm63xx_phone 169334 0

as you can see from the log:

Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.546182] bcm63xx-phone: bcm63xx-phone: v0.1
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.550853] bcm63xx-phone bcm_drv_init() 1442: bcm_drv_init()
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.556803] bcm63xx-phone board_init() 706: board_init()
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.562272] bcm63xx-phone: CPU is Broadcom 6358
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.566940] bcm63xx-phone: Board is DWV-S0
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.571201] bcm63xx-phone board_get_desc() 764: board_get_desc()
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.577394] bcm63xx-phone bcm_drv_init() 1457: Initializing mutex
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.583674] bcm63xx-phone bcm_drv_init() 1460: Initializing RX wait queue
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.590672] bcm63xx-phone bcm_wait_queue_init() 32: bcm_wait_queue_init()
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.597668] bcm63xx-phone bcm_drv_init() 1462: Initializing TX wait queue
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.604666] bcm63xx-phone bcm_wait_queue_init() 32: bcm_wait_queue_init()
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.611667] bcm63xx-phone bcm_drv_init() 1477: Registering device bcm63xx-phone
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.619530] bcm63xx-phone pcm_init() 2482: pcm_init()
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.624777] bcm63xx-phone pcm_init() 2550: Using 25 buffers of 256 bytes for RX
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.632332] bcm63xx-phone pcm_init() 2586: Using 25 buffers of 256 bytes for TX
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.639864] bcm63xx-phone pcm_get_shared_res() 1950: pcm_get_shared_res()
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.646870] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm, addr=0xfffe1600, size=256)
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.656310] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm_dma, addr=0xfffe1800, size=256)
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.666110] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm_dmac, addr=0xfffe1900, size=32)
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.675904] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm_dmas, addr=0xfffe1a00, size=32)
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.770580] bcm63xx-phone pcm6358_pll_init() 970: pcm6358_pll_init()
Wed May 24 14:44:52 2017 kern.info kernel: [ 7499.777150] bcm63xx-phone pcm6358_pll_init() 975: pll_ctrl1=f0010001, pll_ctrl2=53d47, pll_ctrl3=a85
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.818566] bcm63xx-phone pcm6358_pll_init() 1028: pll_ctrl1=20001, pll_ctrl2=8492b, pll_ctrl3=1e1c
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.828005] bcm63xx-phone pcm_regs_init() 1247: pcm_regs_init()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.834117] bcm63xx-phone pcm_regs_reset() 1192: pcm_regs_reset()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.840404] bcm63xx-phone pcm_regs_reset() 1228: PCM_CTRL_REG <- 0x23200101
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.847590] bcm63xx-phone pcm_dma_init() 1502: pcm_dma_init()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.853526] bcm63xx-phone pcm_dma_init() 1535: Allocating 200 bytes of DMA memory for RX descs
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.862483] bcm63xx-phone pcm_dma_init() 1546: 200 bytes of memory allocated, starting at address 0xa0cfe000
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.872633] bcm63xx-phone pcm_dma_init() 1552: Allocating 200 bytes of DMA memory for TX descs
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.881588] bcm63xx-phone pcm_dma_init() 1563: 200 bytes of memory allocated, starting at address 0xa0c74000
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.891739] bcm63xx-phone pcm_dma_init() 1571: Allocating 12800 bytes of memory for RX and TX data buffers
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.901716] bcm63xx-phone pcm_dma_init() 1578: 12800 bytes of memory allocated, starting at address 0x80d40000
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.912046] bcm63xx-phone pcm_dma_init() 1604: Allocating 224 bytes of memory for DMA addresses
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.921033] bcm63xx-phone pcm_dma_init() 1611: 224 bytes of memory allocated, starting at address 0x81b42100
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.931179] bcm63xx-phone pcm_dma_init() 1618: Mapping DMA addresses of RX descs
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.938834] bcm63xx-phone pcm_dma_init() 1635: Mapping DMA addresses of TX descs
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.946483] bcm63xx-phone pcm_dma_rx_descs_reset() 1342: pcm_dma_rx_descs_reset()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.954290] bcm63xx-phone pcm_dma_tx_descs_reset() 1373: pcm_dma_tx_descs_reset()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.962117] bcm63xx-phone bcm_drv_init() 1527: t->mm_desc.ioctl_param_off = 0, t->mm_desc.ioctl_param_size = 208
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.972637] bcm63xx-phone bcm_drv_init() 1537: t->mm_desc.rbs[0].rx_ring_buf_desc_off = 208, t->mm_desc.rbs[0].rx_ring_buf_desc_size = 12
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.985391] bcm63xx-phone bcm_drv_init() 1545: t->mm_desc.rbs[0].tx_ring_buf_desc_off = 224, t->mm_desc.rbs[0].tx_ring_buf_desc_size = 12
Wed May 24 14:44:53 2017 kern.info kernel: [ 7499.998145] bcm63xx-phone bcm_drv_init() 1537: t->mm_desc.rbs[1].rx_ring_buf_desc_off = 240, t->mm_desc.rbs[1].rx_ring_buf_desc_size = 12
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.010895] bcm63xx-phone bcm_drv_init() 1545: t->mm_desc.rbs[1].tx_ring_buf_desc_off = 256, t->mm_desc.rbs[1].tx_ring_buf_desc_size = 12
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.023755] bcm63xx-phone bcm_drv_init() 1567: 8192 bytes of memory allocated, starting at address 0x80cfc000
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.034007] bcm63xx-phone bcm_phone_mgr_init() 851: bcm_phone_mgr_init()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.040937] bcm63xx-phone bcm_phone_mgr_devs_init() 725: bcm_phone_mgr_devs_init()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.048754] bcm63xx-phone phone_device_alloc() 55: phone_device_alloc()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.055611] bcm63xx-phone phone_device_alloc() 84: 2020 bytes of memory allocated, starting at address 0x80fa9000
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.066207] bcm63xx-phone phone_dev_le88266_init() 54: phone_dev_le88266_init()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.073750] bcm63xx-phone phone_dev_zarlink_ve880_init() 1948: phone_dev_zarlink_ve880_init()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.082554] bcm63xx-phone bcm_mpi_init() 919: bcm_mpi_init()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.088537] bcm63xx-phone bcm63xx_spi_probe() 412: bcm63xx_spi_probe()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.095392] bcm6358-spi bcm6358-spi: at 0xfffe0800 (irq 9, FIFOs size 542)
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.102887] bcm63xx-phone phone_dev_zarlink_init() 674: phone_dev_zarlink_init()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.110573] bcm63xx-phone zarlink_reset() 164: zarlink_reset(gpio_num=0x8018)
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.182561] bcm63xx-phone phone_device_init() 30: phone_device_init()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.189215] bcm63xx-phone zarlink_device_id_init() 458: zarlink_device_id_init()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.196889] bcm63xx-phone: 1 device(s) provides 2 FXS line(s)
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.202822] bcm63xx-phone bcm_phone_mgr_init() 869: Initializing event wait queue
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.210548] bcm63xx-phone bcm_wait_queue_init() 32: bcm_wait_queue_init()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.219133] bcm63xx-phone bcm_timer_init() 135: bcm_timer_init()
Wed May 24 14:44:53 2017 kern.info kernel: [ 7500.225394] bcm63xx-phone bcm_drv_init() 1581: bcm63xx-phone successfully initialized

but when asterisk load the module receive the error:

bcmph_do_ioctl: ioctl(536888589) failed. errno=1

as you can see from asterisk log:

[May 24 12:46:53] DEBUG[1359]: asterisk-13-chan-bcm63xx-phone/src/chan_bcm63xx_phone.c:2652 bcmph_open_device: Opening device '/dev/bcm63xx-phone'
[May 24 12:46:53] DEBUG[1359]: asterisk-13-chan-bcm63xx-phone/src/chan_bcm63xx_phone.c:2664 bcmph_open_device: Getting mmap description
[May 24 12:46:53] DEBUG[1359]: asterisk-13-chan-bcm63xx-phone/src/chan_bcm63xx_phone.c:2682 bcmph_open_device: Mapping memory region (size = 8192)
[May 24 12:46:53] DEBUG[1359]: asterisk-13-chan-bcm63xx-phone/src/chan_bcm63xx_phone.c:2692 bcmph_open_device: Configuring the device
[May 24 12:46:54] ERROR[1359]: asterisk-13-chan-bcm63xx-phone/src/chan_bcm63xx_phone.c:895 bcmph_do_ioctl: ioctl(536888589) failed. errno=1
[May 24 12:46:54] ERROR[1359]: asterisk-13-chan-bcm63xx-phone/src/chan_bcm63xx_phone.c:2740 bcmph_open_device: Unable to start device
[May 24 12:46:55] DEBUG[1359]: asterisk-13-chan-bcm63xx-phone/src/chan_bcm63xx_phone.c:3953 __unload_module: Unregistering channel
[May 24 12:46:55] DEBUG[1359]: asterisk-13-chan-bcm63xx-phone/src/chan_bcm63xx_phone.c:3911 bcmph_hangup_all_lines: Hanging up all the lines
[May 24 12:46:55] DEBUG[1359]: asterisk-13-chan-bcm63xx-phone/src/chan_bcm63xx_phone.c:2557 bcmph_stop_monitor: Stopping the monitor
[May 24 12:46:55] DEBUG[1359]: asterisk-13-chan-bcm63xx-phone/src/chan_bcm63xx_phone.c:2588 bcmph_stop_monitor: Monitor not running
[May 24 12:46:55] DEBUG[1359]: asterisk-13-chan-bcm63xx-phone/src/chan_bcm63xx_phone.c:3911 bcmph_hangup_all_lines: Hanging up all the lines
[May 24 12:46:55] DEBUG[1359]: asterisk-13-chan-bcm63xx-phone/src/chan_bcm63xx_phone.c:3984 __unload_module: Destroying all the lines
[May 24 12:46:55] DEBUG[1359]: loader.c:1294 load_resource_list: START: chan_bcm63xx_phone.so -1 0

I also tried to use your test program but I receive the same error:

root@LEDE:~# bcm63xx-phone-test test=loopback
pcm_regs =>
ctlr = 0x0
chan_ctrl = 0x0
int_pending = 0x0
int_mask = 0x0
pll_ctrl1 = 0x20001
pll_ctrl2 = 0x8492b
pll_ctrl3 = 0x1e1c
pll_ctrl4 = 0x0
pll_stat = 0x1
slot_alloc_tbl[0] = 0x0
slot_alloc_tbl[1] = 0x0
slot_alloc_tbl[2] = 0x0
slot_alloc_tbl[3] = 0x0
slot_alloc_tbl[4] = 0x0
slot_alloc_tbl[5] = 0x0
slot_alloc_tbl[6] = 0x0
slot_alloc_tbl[7] = 0x0
slot_alloc_tbl[8] = 0x0
slot_alloc_tbl[9] = 0x0
slot_alloc_tbl[10] = 0x0
slot_alloc_tbl[11] = 0x0
slot_alloc_tbl[12] = 0x0
slot_alloc_tbl[13] = 0x0
slot_alloc_tbl[14] = 0x0
slot_alloc_tbl[15] = 0x0
dma_cfg = 0x1000000
dma_channels[0].dma_flowcl = 0x0
dma_channels[0].dma_flowch = 0x0
dma_channels[0].dma_bufalloc = 0x0
dma_channels[0].dmac_chancfg = 0x0
dma_channels[0].dmac_ir = 0x0
dma_channels[0].dmac_irmask = 0x0
dma_channels[0].dmac_maxburst = 0x8
dma_channels[0].dmas_rstart = 0xcfe000
dma_channels[0].dmas_sram2 = 0x0
dma_channels[0].dmas_sram3 = 0x0
dma_channels[0].dmas_sram4 = 0x0
dma_channels[1].dma_flowcl = 0x0
dma_channels[1].dma_flowch = 0x0
dma_channels[1].dma_bufalloc = 0x0
dma_channels[1].dmac_chancfg = 0x0
dma_channels[1].dmac_ir = 0x0
dma_channels[1].dmac_irmask = 0x0
dma_channels[1].dmac_maxburst = 0x8
dma_channels[1].dmas_rstart = 0xc74000
dma_channels[1].dmas_sram2 = 0x0
dma_channels[1].dmas_sram3 = 0x0
dma_channels[1].dmas_sram4 = 0x0
ioctl(2149074188) failed. errno=1
Error starting

Support for Le88010

Could add support to the Le88010, have a board that mount it and would try this
Thanks for everything

bcm63xx-phone crashes LEDE 18

Hi there. After successfully compilation of this driver, I started the router, flashed the firmware and everything was ok. Then, I ssh-d into it, ran insmod bcm63xx-phone and once I ran that command, the router froze(so it crashed) and it rebooted.

Router is Huawei EchoLife HG556a Version C.
LEDE is latest Version
OS compilation environment is Linux Mint 19(Tara) or as known as Ubuntu 18.

Can you help me debug and fix this?
My Serial is not working atm.

BR,
Talnaci Alexandru

Enable fxs on hg556a

I have a Huawei HG556A can anyone share the config files to enable fxs on it.
thank you

Regional tones

Hi, i've try to set
country = italy
on bcm63xx_phone.conf

I've already set
country=it
on indications.conf, but when i pick up the phone the configuration not work.
HW553 - asterisk11

Suggestions?
Thanks for all your work!

video codec

I have a rj11 viodotel i tested it and videocall at moment not supported message Unknow codec 126
i ask if is possible insert videocall h263+ and h264 for bcm63xx-phone

suggestions

I tested on a HG553 (Vodafone Station). It works very well but I think that 2 updates could be done and I could do it for community if you can give me some suggestions.

  1. timeout before to send phone call to asterisk should be different compared ro the timeout of the 'first digit'. Infact usually when phone is took off-hook timeout should be longer compared to timeout between one digit and the next one
  2. Also could be nice to speed-up the phone call, if is possible to add a '#' (for example) at the end of the typed number so that phone call is imemeditaely transmitted to asterisk.

I tried to check source code where I could be these updates but I am not really sure.

latest kernel (4.4 and 4.9) doesn't have fatal error: ../drivers/spi/spi-bcm63xx.h

make -f ./scripts/Makefile.build obj=/mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone
  mips-openwrt-linux-musl-gcc -Wp,-MD,/mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone/board/.board.o.d  -nostdinc -isystem /mnt/openwrt/OpenwrtHG553/staging_dir/toolchain-mips_mips32_gcc-7.3.0_musl/lib/gcc/mips-openwrt-linux-musl/7.3.0/include -I./arch/mips/include -Iarch/mips/include/generated/uapi -Iarch/mips/include/generated  -Iinclude -I./arch/mips/include/uapi -Iarch/mips/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -DVMLINUX_LOAD_ADDRESS=0xffffffff80010000 -DDATAOFFSET=0 -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -mno-check-zero-division -mabi=32 -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely -msoft-float -DGAS_HAS_SET_HARDFLOAT -Wa,-msoft-float -ffreestanding -march=mips32 -Wa,-mips32 -Wa,--trap -I./arch/mips/include/asm/mach-bcm63xx/ -I./arch/mips/include/asm/mach-generic -fno-delete-null-pointer-checks -Wno-maybe-uninitialized -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-int-in-bool-context -Os -fno-caller-saves --param=allow-store-data-races=0 -DCC_HAVE_ASM_GOTO -Wframe-larger-than=1024 -fstack-protector -Wno-unused-but-set-variable -Wno-unused-const-variable -fomit-frame-pointer -fno-var-tracking-assignments -g -femit-struct-debug-baseonly -fno-var-tracking -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Wall -I/mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone/inc -DBCMPH_MODULE_NAME=bcm63xx_phone -DBCMPH_MODULE_VERSION=0.2 -DBCMPH_EXPORT_DEV_FILE -DBCMPH_DEBUG -I/mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone/extern/zarlink/arch/bcm63xx -I/mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone/extern/zarlink/2.24.0.lite/api_lib/includes -I/mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone/extern/zarlink/2.24.0.lite/api_lib/vp880_api  -DMODULE -mno-long-calls  -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(board)"  -D"KBUILD_MODNAME=KBUILD_STR(bcm63xx_phone)" -c -o /mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone/board/board.o /mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone/board/board.c
In file included from /mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone/extern/zarlink/arch/bcm63xx/vp_api_types.h:12:0,
                 from /mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone/extern/zarlink/2.24.0.lite/api_lib/includes/vp_api.h:43,
                 from /mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone/board/board.c:31:
/mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone/inc/mpi.h:18:13: fatal error: ../drivers/spi/spi-bcm63xx.h: No such file or directory
 #   include <../drivers/spi/spi-bcm63xx.h>
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
scripts/Makefile.build:269: recipe for target '/mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone/board/board.o' failed
make[5]: *** [/mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone/board/board.o] Error 1
Makefile:1408: recipe for target '_module_/mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone' failed
make[4]: *** [_module_/mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone] Error 2
make[4]: Leaving directory '/mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/linux-4.4.121'
Makefile:49: recipe for target '/mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone/.built' failed
make[3]: *** [/mnt/openwrt/OpenwrtHG553/build_dir/target-mips_mips32_musl/linux-brcm63xx_generic/bcm63xx-phone/.built] Error 2
make[3]: Leaving directory '/mnt/openwrt/OpenwrtHG553/custom-feed/bcm63xx-phone/bcm63xx-phone/bcm63xx-phone'
package/Makefile:107: recipe for target 'package/feeds/custom/bcm63xx-phone/compile' failed
make[2]: *** [package/feeds/custom/bcm63xx-phone/compile] Error 2
make[2]: Leaving directory '/mnt/openwrt/OpenwrtHG553'
package/Makefile:103: recipe for target '/mnt/openwrt/OpenwrtHG553/staging_dir/target-mips_mips32_musl/stamp/.package_compile' failed
make[1]: *** [/mnt/openwrt/OpenwrtHG553/staging_dir/target-mips_mips32_musl/stamp/.package_compile] Error 2
make[1]: Leaving directory '/mnt/openwrt/OpenwrtHG553'
/mnt/openwrt/OpenwrtHG553/include/toplevel.mk:216: recipe for target 'world' failed
make: *** [world] Error 2

fatal error: ../drivers/spi/spi-bcm63xx.h: No such file or directory. While compiling

Default compiling works fine, but crash while insmod
[ 2217.812987] bcm63xx_phone: bcm63xx_phone: v0.2 [ 2217.817637] bcm63xx_phone bcm63xx_phone_init() 1021: bcm63xx_phone_init() [ 2217.824747] bcm63xx_phone board_init() 719: board_init() [ 2217.830250] bcm63xx_phone: CPU is Broadcom 6358 [ 2217.834979] bcm63xx_phone: Board is HW556 [ 2217.839158] bcm63xx_phone board_get_desc() 778: board_get_desc() [ 2217.848527] bcm63xx_phone bcm_periodic_timer_init() 249: bcm_periodic_timer_init() [ 2217.856431] bcm63xx_phone bcm_timer_init() 191: bcm_timer_init() [ 2217.862682] bcm63xx_phone bcm_period_init() 28: bcm_period_init() [ 2217.869075] bcm63xx_phone bcm63xx_phone_init() 1081: t->mm_desc.ioctl_param_off = 0, t->mm_desc.ioctl_param_size = 220 [ 2217.880201] bcm63xx_phone bcm63xx_phone_init() 1090: t->mm_desc.rbs[0].rx_ring_buf_desc_off = 224, t->mm_desc.rbs[0].rx_ring_buf_desc_size = 12 [ 2217.893550] bcm63xx_phone bcm63xx_phone_init() 1098: t->mm_desc.rbs[0].tx_ring_buf_desc_off = 240, t->mm_desc.rbs[0].tx_ring_buf_desc_size = 12 [ 2217.906909] bcm63xx_phone bcm63xx_phone_init() 1090: t->mm_desc.rbs[1].rx_ring_buf_desc_off = 256, t->mm_desc.rbs[1].rx_ring_buf_desc_size = 12 [ 2217.920512] bcm63xx_phone bcm63xx_phone_init() 1098: t->mm_desc.rbs[1].tx_ring_buf_desc_off = 272, t->mm_desc.rbs[1].tx_ring_buf_desc_size = 12 [ 2217.933949] bcm63xx_phone bcm63xx_phone_init() 1128: 8192 bytes of memory allocated, starting at address 0x82fa0000 [ 2217.944769] bcm63xx_phone bcm_phone_mgr_init() 1048: bcm_phone_mgr_init() [ 2217.951806] bcm63xx_phone bcm_periodic_work_init() 92: bcm_periodic_work_init() [ 2217.959376] bcm63xx_phone bcm_period_init() 28: bcm_period_init() [ 2217.965694] bcm63xx_phone bcm_phone_mgr_devs_init() 907: bcm_phone_mgr_devs_init() [ 2217.973557] bcm63xx_phone phone_device_alloc() 53: phone_device_alloc() [ 2217.980450] bcm63xx_phone phone_device_alloc() 82: 2032 bytes of memory allocated, starting at address 0x82eca800 [ 2217.991073] bcm63xx_phone phone_dev_le88266_init() 56: phone_dev_le88266_init() [ 2217.998651] bcm63xx_phone phone_dev_zarlink_ve880_init() 2021: phone_dev_zarlink_ve880_init() [ 2218.007483] bcm63xx_phone bcm_mpi_init() 875: bcm_mpi_init() [ 2218.013363] bcm63xx_phone: Error: Driver 'bcm63xx-spi' is already registered, aborting... [ 2218.021847] bcm63xx_phone bcm_periodic_work_deinit() 103: bcm_periodic_work_deinit() [ 2218.029865] bcm63xx_phone bcm_period_deinit() 33: bcm_period_deinit() [ 2218.036546] bcm63xx_phone bcm63xx_phone_init() 1207: Freeing mmap buffer used for RX, TX... [ 2218.045204] bcm63xx_phone bcm_periodic_timer_deinit() 265: bcm_periodic_timer_deinit() [ 2218.053404] bcm63xx_phone bcm_timer_stop() 167: bcm_timer_stop() [ 2218.059652] bcm63xx_phone board_deinit() 785: board_deinit()

Huawei HG556A works fine

OpenWRT Barrier Breaker 14.07
HG55VDFA VER.C Router version B (see https://wiki.openwrt.org/toh/huawei/hg556a)

Patched for disable SPI - its very important.:
-CONFIG_SPI_BCM63XX=y
+CONFIG_SPI_BCM63XX=n

It also can be possibly by the manual editing /openwrt/target/linux/brcm63xx/config-3.10
or by the disabling in "make kernel_menuconfig" -> Device Drivers -> SPI support -> Broadcom BCM63xx SPI controller

You have to load bcm63xx-phone.ko before start asterisk:
my rc.local starting script:

insmod bcm63xx-phone.ko
sleep 10
/etc/init.d/asterisk start
exit 0

Asterisk 11, excelent voice quality.

Thanks to pgid69

Cannot compile on LEDE latest version

Hi there. I am updating my LEDE firmware of the VoIP box(of course, it runs bcm63xx-phone), and it seems that the patch files aren't working anymore and also, it stopped compiling properly. It mentioned something about struct condition done in the mpi file.

How we can fix this?
BR,
Talnaci Alexandru

Compiling Lede 17.04.1

Hello, I am trying now to compile your driver with Lede 17.01.4. I cannot understand the modiffy I need to do for spi. With no modify, when I start module I have

[ 261.983861] bcm63xx_phone phone_dev_le88221_init() 56: phone_dev_le88221_init()
[ 261.991439] bcm63xx_phone phone_dev_zarlink_ve880_init() 2017: phone_dev_zarlink_ve880_init()
[ 262.000269] bcm63xx_phone bcm_mpi_init() 878: bcm_mpi_init()
[ 262.006147] bcm63xx_phone: Error: Driver 'bcm63xx-spi' is already registered, aborting...
[ 262.014633] bcm63xx_phone bcm_periodic_work_deinit() 103: bcm_periodic_work_deinit()
[ 262.022650] bcm63xx_phone bcm_period_deinit() 33: bcm_period_deinit()
[ 262.029332] bcm63xx_phone bcm63xx_phone_init() 1207: Freeing mmap buffer used for RX, TX...
[ 262.037992] bcm63xx_phone bcm_periodic_timer_deinit() 265: bcm_periodic_timer_deinit()
[ 262.046189] bcm63xx_phone bcm_timer_stop() 167: bcm_timer_stop()

Cna you please explain which patch I need when I compile Lede?

How to dial to FXS lines

When i dial "100" from a SIP phone, i want FXS line1 ring.
How to config extensions.conf ?

[bcmph-line-1]
exten => 100,1,Dial(?[to FXS line1])
exten => 200,1,Dial(SIP/Mytest)

I`m not familiar with the asterisk. Thank you.

Possible error in file

Hi. I am back. I'm trying to compile on LEDE and seems that I get a error related to spi. Here it is:

make[3]: Entering directory '/home/alex/Desktop/openwrt-build/lede/feeds/fxs/bcm63xx-phone/bcm63xx-phone'
make -C "/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/linux-4.4.107" CROSS_COMPILE="mips-openwrt-linux-musl-" ARCH="mips" SUBDIRS="/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone" BCMPH_EFLAGS="-DBCMPH_MODULE_NAME=bcm63xx_phone -DBCMPH_MODULE_VERSION=0.2 -DBCMPH_EXPORT_DEV_FILE -DBCMPH_DEBUG" modules V=1
make[4]: Entering directory '/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/linux-4.4.107'
test -e include/generated/autoconf.h -a -e include/config/auto.conf || (
echo >&2;
echo >&2 " ERROR: Kernel configuration is invalid.";
echo >&2 " include/generated/autoconf.h or include/config/auto.conf are missing.";
echo >&2 " Run 'make oldconfig && make prepare' on kernel src to fix it.";
echo >&2 ;
/bin/false)
mkdir -p /home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/.tmp_versions ; rm -f /home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/.tmp_versions/*
make -f ./scripts/Makefile.build obj=/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone
mips-openwrt-linux-musl-gcc -Wp,-MD,/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/board/.board.o.d -nostdinc -isystem /home/alex/Desktop/openwrt-build/lede/staging_dir/toolchain-mips_mips32_gcc-5.4.0_musl-1.1.16/lib/gcc/mips-openwrt-linux-musl/5.4.0/include -I./arch/mips/include -Iarch/mips/include/generated/uapi -Iarch/mips/include/generated -Iinclude -I./arch/mips/include/uapi -Iarch/mips/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -DVMLINUX_LOAD_ADDRESS=0xffffffff80010000 -DDATAOFFSET=0 -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -mno-check-zero-division -mabi=32 -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely -msoft-float -DGAS_HAS_SET_HARDFLOAT -Wa,-msoft-float -ffreestanding -march=mips32 -Wa,-mips32 -Wa,--trap -I./arch/mips/include/asm/mach-bcm63xx/ -I./arch/mips/include/asm/mach-generic -fno-delete-null-pointer-checks -Wno-maybe-uninitialized -Os -fno-caller-saves --param=allow-store-data-races=0 -DCC_HAVE_ASM_GOTO -Wframe-larger-than=1024 -fstack-protector -Wno-unused-but-set-variable -fomit-frame-pointer -fno-var-tracking-assignments -g -femit-struct-debug-baseonly -fno-var-tracking -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Wall -I/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/inc -DBCMPH_MODULE_NAME=bcm63xx_phone -DBCMPH_MODULE_VERSION=0.2 -DBCMPH_EXPORT_DEV_FILE -DBCMPH_DEBUG -I/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/extern/zarlink/arch/bcm63xx -I/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/extern/zarlink/2.24.0.lite/api_lib/includes -I/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/extern/zarlink/2.24.0.lite/api_lib/vp880_api -DMODULE -mno-long-calls -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(board)" -D"KBUILD_MODNAME=KBUILD_STR(bcm63xx_phone)" -c -o /home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/board/board.o /home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/board/board.c
In file included from /home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/extern/zarlink/arch/bcm63xx/vp_api_types.h:12:0,
from /home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/extern/zarlink/2.24.0.lite/api_lib/includes/vp_api.h:43,
from /home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/board/board.c:31:
/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/inc/mpi.h:17:42: fatal error: ../drivers/spi/spi-bcm63xx.h: No such file or directory
compilation terminated.
scripts/Makefile.build:258: recipe for target '/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/board/board.o' failed
make[5]: *** [/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/board/board.o] Error 1
Makefile:1405: recipe for target 'module/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone' failed
make[4]: *** [module/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone] Error 2
make[4]: Leaving directory '/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/linux-4.4.107'
Makefile:49: recipe for target '/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/.built' failed
make[3]: *** [/home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/.built] Error 2
make[3]: Leaving directory '/home/alex/Desktop/openwrt-build/lede/feeds/fxs/bcm63xx-phone/bcm63xx-phone'
package/Makefile:105: recipe for target 'package/feeds/fxs/bcm63xx-phone/compile' failed
make[2]: *** [package/feeds/fxs/bcm63xx-phone/compile] Error 2
make[2]: Leaving directory '/home/alex/Desktop/openwrt-build/lede'
package/Makefile:101: recipe for target '/home/alex/Desktop/openwrt-build/lede/staging_dir/target-mips_mips32_musl-1.1.16/stamp/.package_compile' failed
make[1]: *** [/home/alex/Desktop/openwrt-build/lede/staging_dir/target-mips_mips32_musl-1.1.16/stamp/.package_compile] Error 2
make[1]: Leaving directory '/home/alex/Desktop/openwrt-build/lede'
/home/alex/Desktop/openwrt-build/lede/include/toplevel.mk:205: recipe for target 'world' failed
make: *** [world] Error 2

I applied the provided patches. I'm using LEDE 17.01 STABLE. Where could be wrong?
Compiling Environment: Ubuntu 17.10(64-bit), using 4gb RAM in VMWare Virtual Machine on a i5-2450M.
It seems that it can't find /home/alex/Desktop/openwrt-build/lede/build_dir/target-mips_mips32_musl-1.1.16/linux-brcm63xx_generic/bcm63xx-phone/drivers/spi/spi-bcm63xx.h
SPI is disabled.

Few questions - thanks in advance

First of all - thanks a lot for your effort. I have Huawei EchoLife HG553. I have read your README and closed issues. I have few question.

  1. As mention " it contains two kernel drivers " We should decide which one we will used and compile and install only one ? If we install e.g dahdi and we want to try bcm63xx-phone first we should uninstall kmod-bcm63xx-phone-dahdi and install kmod-bcm63xx-phone ? Am I right?
  2. Regarding patches. Is it for speed optimization only "in a way more efficient" ? Or it is also needed for proper way of driver working? Is it applicable for both drivers?
    It was compile fine for snapshot openwrt (with patches):
kmod-bcm63xx-phone - 4.9.86+0.2-1
kmod-bcm63xx-phone-dahdi - 4.9.86+0.2-1
asterisk13-chan-bcm63xx-phone - 4.9.86-4.9.86
kmod-dahdi - 4.9.86+2.11.1-20180111-2
kmod-dahdi-dummy - 4.9.86+2.11.1-20180111-2
kmod-dahdi-echocan-oslec - 4.9.86+2.11.1-20180111-2
kmod-echo - 4.9.86-1
  1. Do you have any simplest config files for both configurations - both drivers ? Which one you are using ?
    I mean all files need for asterisk to make call between soft sip client and FXS lines. Maybe somewhere in the forum or any other link ?

  2. As I understand FXO port is not usable and there is no driver to use it in asterisk ?

  3. And last question not full related but as you have this hardware. Have you heard about "SMP" working version ? Maybe someone is working on it - to enable second core?
    https://downloads.openwrt.org/snapshots/targets/brcm63xx/smp/

thanks in advance for your answers

compiling for openwrt 15.05.1 fails

Hello, I have this error, any suggestion?

mkdir -p /opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/bcm63xx-phone/.tmp_versions ; rm -f /opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/bcm63xx-phone/.tmp_versions/*
make -f ./scripts/Makefile.build obj=/opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/bcm63xx-phone
mips-openwrt-linux-uclibc-gcc -Wp,-MD,/opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/bcm63xx-phone/mpi/.mpi.o.d -nostdinc -isystem /opt/chaos_calmer/staging_dir/toolchain-mips_mips32_gcc-4.8-linaro_uClibc-0.9.33.2/lib/gcc/mips-openwrt-linux-uclibc/4.8.3/include -I./arch/mips/include -Iarch/mips/include/generated -Iinclude -I./arch/mips/include/uapi -Iarch/mips/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -DVMLINUX_LOAD_ADDRESS=0xffffffff80010000 -DDATAOFFSET=0 -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -mno-check-zero-division -mabi=32 -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely -msoft-float -DGAS_HAS_SET_HARDFLOAT -Wa,-msoft-float -ffreestanding -march=mips32 -Wa,-mips32 -Wa,--trap -I./arch/mips/include/asm/mach-bcm63xx/ -I./arch/mips/include/asm/mach-generic -fno-delete-null-pointer-checks -fno-PIE -Os -fno-caller-saves -Wno-maybe-uninitialized --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fno-stack-protector -Wno-unused-but-set-variable -fomit-frame-pointer -fno-var-tracking-assignments -g -femit-struct-debug-baseonly -fno-var-tracking -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -DCC_HAVE_ASM_GOTO -Wall -I/opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/bcm63xx-phone/inc -DBCMPH_MODULE_NAME=bcm63xx_phone -DBCMPH_MODULE_VERSION=0.2 -DBCMPH_EXPORT_DEV_FILE -DBCMPH_DEBUG -I/opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/bcm63xx-phone/extern/zarlink/arch/bcm63xx -I/opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/bcm63xx-phone/extern/zarlink/2.24.0.lite/api_lib/includes -I/opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/bcm63xx-phone/extern/zarlink/2.24.0.lite/api_lib/vp880_api -DMODULE -mno-long-calls -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(mpi)" -D"KBUILD_MODNAME=KBUILD_STR(bcm63xx_phone)" -c -o /opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/bcm63xx-phone/mpi/mpi.o /opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/bcm63xx-phone/mpi/mpi.c
/opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/bcm63xx-phone/mpi/mpi.c:566:7: error: unknown field 'probe_type' specified in initializer
.probe_type = PROBE_FORCE_SYNCHRONOUS,
^
/opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/bcm63xx-phone/mpi/mpi.c:566:21: error: 'PROBE_FORCE_SYNCHRONOUS' undeclared here (not in a function)
.probe_type = PROBE_FORCE_SYNCHRONOUS,
^
make[5]: *** [/opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/bcm63xx-phone/mpi/mpi.o] Error 1
make[4]: *** [module/opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/bcm63xx-phone] Error 2
make[4]: Leaving directory /opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/linux-3.18.92' make[3]: *** [/opt/chaos_calmer/build_dir/target-mips_mips32_uClibc-0.9.33.2/linux-brcm63xx_generic/bcm63xx-phone/.built] Error 2 make[3]: Leaving directory /opt/custom-feed/bcm63xx-phone/bcm63xx-phone/bcm63xx-phone'
make[2]: *** [package/feeds/customfeed/bcm63xx-phone/compile] Error 2
make[2]: Leaving directory /opt/chaos_calmer' make[1]: *** [/opt/chaos_calmer/staging_dir/target-mips_mips32_uClibc-0.9.33.2/stamp/.package_compile] Error 2 make[1]: Leaving directory /opt/chaos_calmer'
make: *** [world] Errore 2

Error with huawei hg556a

Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.356000] bcm63xx-phone pcm_stop() 2362: RX DMA halted
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.360000] bcm63xx-phone pcm_stop() 2373: Disabling all PCM channels
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.368000] bcm63xx-phone pcm_regs_reset() 1192: pcm_regs_reset()
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.372000] bcm63xx-phone pcm_regs_reset() 1228: PCM_CTRL_REG <- 0x23200101
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.380000] bcm63xx-phone pcm_dma_tx_descs_reset() 1373: pcm_dma_tx_descs_reset()
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.388000] bcm63xx-phone pcm_pr_stats() 2053: ======= Stats =======
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.396000] bcm63xx-phone pcm_pr_stats() 2054: rx_errors = 0
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.400000] bcm63xx-phone pcm_pr_stats() 2055: rx_length_errors = 0
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.408000] bcm63xx-phone pcm_pr_stats() 2056: rx_empty_errors = 0
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.416000] bcm63xx-phone pcm_pr_stats() 2057: rx_good = 0
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.424000] bcm63xx-phone pcm_pr_stats() 2058: rx_bytes = 0
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.428000] bcm63xx-phone pcm_pr_stats() 2059: tx_errors = 0
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.436000] bcm63xx-phone pcm_pr_stats() 2060: tx_good = 0
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.444000] bcm63xx-phone pcm_pr_stats() 2061: tx_bytes = 0
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.452000] bcm63xx-phone pcm_pr_stats() 2062: cnt_irq_rx = 0
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.456000] bcm63xx-phone pcm_pr_stats() 2063: cnt_irq_tx = 0
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.464000] bcm63xx-phone pcm_dma_deinit() 1798: pcm_dma_deinit()
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.472000] bcm63xx-phone pcm_dma_deinit() 1820: Unmapping DMA addresses of TX descs
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.480000] bcm63xx-phone pcm_dma_deinit() 1825: Unmapping DMA addresses of RX descs
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.488000] bcm63xx-phone pcm_dma_deinit() 1872: Freeing memory of RX and TX data buffers
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.496000] bcm63xx-phone pcm_dma_deinit() 1876: Freeing memory for DMA adresses
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.504000] bcm63xx-phone pcm_dma_deinit() 1881: Freeing DMA memory of RX descs
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.512000] bcm63xx-phone pcm_dma_deinit() 1890: Freeing DMA memory of TX descs
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.520000] bcm63xx-phone pcm_regs_deinit() 1259: pcm_regs_deinit()
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.524000] bcm63xx-phone pcm_regs_reset() 1192: pcm_regs_reset()
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.532000] bcm63xx-phone pcm_regs_reset() 1228: PCM_CTRL_REG <- 0x23200101
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.540000] bcm63xx-phone pcm6358_pll_deinit() 1037: pcm6358_pll_deinit()
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.636000] bcm63xx-phone pcm_release_shared_res() 2001: pcm_release_shared_res()
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.644000] bcm63xx-phone pcm_release_mem_res() 1936: pcm_release_mem_res(addr=0xfffe1a00, size=32)
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.652000] bcm63xx-phone pcm_release_mem_res() 1936: pcm_release_mem_res(addr=0xfffe1900, size=32)
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.660000] bcm63xx-phone pcm_release_mem_res() 1936: pcm_release_mem_res(addr=0xfffe1800, size=256)
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.672000] bcm63xx-phone pcm_release_mem_res() 1936: pcm_release_mem_res(addr=0xfffe1600, size=256)
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.680000] bcm63xx-phone bcm_drv_init() 1590: Unregistering device
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.688000] bcm63xx-phone bcm_wait_queue_deinit() 39: bcm_wait_queue_deinit()
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.696000] bcm63xx-phone bcm_wait_queue_deinit() 39: bcm_wait_queue_deinit()
Sun Jun 7 20:30:24 2015 kern.info kernel: [ 366.704000] bcm63xx-phone board_deinit() 622: board_deinit()
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6034.976000] bcm63xx-phone: bcm63xx-phone: v0.1
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6034.984000] bcm63xx-phone bcm_drv_init() 1439: bcm_drv_init()
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6034.988000] bcm63xx-phone board_init() 561: board_init()
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6034.996000] bcm63xx-phone: CPU is Broadcom 6358
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.000000] bcm63xx-phone: Board is HW556
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.004000] bcm63xx-phone board_get_desc() 615: board_get_desc()
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.008000] bcm63xx-phone bcm_drv_init() 1454: Initializing mutex
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.016000] bcm63xx-phone bcm_drv_init() 1457: Initializing RX wait queue
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.024000] bcm63xx-phone bcm_wait_queue_init() 32: bcm_wait_queue_init()
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.032000] bcm63xx-phone bcm_drv_init() 1459: Initializing TX wait queue
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.036000] bcm63xx-phone bcm_wait_queue_init() 32: bcm_wait_queue_init()
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.044000] bcm63xx-phone bcm_drv_init() 1474: Registering device bcm63xx-phone
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.052000] bcm63xx-phone pcm_init() 2482: pcm_init()
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.056000] bcm63xx-phone pcm_init() 2550: Using 25 buffers of 256 bytes for RX
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.064000] bcm63xx-phone pcm_init() 2586: Using 25 buffers of 256 bytes for TX
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.072000] bcm63xx-phone pcm_get_shared_res() 1950: pcm_get_shared_res()
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.080000] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm, addr=0xfffe1600, size=256)
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.088000] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm_dma, addr=0xfffe1800, size=256)
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.100000] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm_dmac, addr=0xfffe1900, size=32)
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.108000] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm_dmas, addr=0xfffe1a00, size=32)
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.208000] bcm63xx-phone pcm6358_pll_init() 970: pcm6358_pll_init()
Sun Jun 7 22:04:52 2015 kern.info kernel: [ 6035.212000] bcm63xx-phone pcm6358_pll_init() 975: pll_ctrl1=f0010001, pll_ctrl2=53d47, pll_ctrl3=a85
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.256000] bcm63xx-phone pcm6358_pll_init() 1028: pll_ctrl1=20001, pll_ctrl2=8492b, pll_ctrl3=1e1c
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.264000] bcm63xx-phone pcm_regs_init() 1247: pcm_regs_init()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.268000] bcm63xx-phone pcm_regs_reset() 1192: pcm_regs_reset()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.276000] bcm63xx-phone pcm_regs_reset() 1228: PCM_CTRL_REG <- 0x23200101
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.284000] bcm63xx-phone pcm_dma_init() 1502: pcm_dma_init()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.288000] bcm63xx-phone pcm_dma_init() 1535: Allocating 200 bytes of DMA memory for RX descs
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.300000] bcm63xx-phone pcm_dma_init() 1546: 200 bytes of memory allocated, starting at address 0xa2e77000
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.308000] bcm63xx-phone pcm_dma_init() 1552: Allocating 200 bytes of DMA memory for TX descs
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.316000] bcm63xx-phone pcm_dma_init() 1563: 200 bytes of memory allocated, starting at address 0xa2e76000
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.328000] bcm63xx-phone pcm_dma_init() 1571: Allocating 12800 bytes of memory for RX and TX data buffers
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.340000] bcm63xx-phone pcm_dma_init() 1578: 12800 bytes of memory allocated, starting at address 0x82e04000
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.348000] bcm63xx-phone pcm_dma_init() 1604: Allocating 224 bytes of memory for DMA addresses
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.356000] bcm63xx-phone pcm_dma_init() 1611: 224 bytes of memory allocated, starting at address 0x82df0800
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.368000] bcm63xx-phone pcm_dma_init() 1618: Mapping DMA addresses of RX descs
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.376000] bcm63xx-phone pcm_dma_init() 1635: Mapping DMA addresses of TX descs
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.384000] bcm63xx-phone pcm_dma_rx_descs_reset() 1342: pcm_dma_rx_descs_reset()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.392000] bcm63xx-phone pcm_dma_tx_descs_reset() 1373: pcm_dma_tx_descs_reset()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.400000] bcm63xx-phone bcm_drv_init() 1524: t->mm_desc.ioctl_param_off = 0, t->mm_desc.ioctl_param_size = 208
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.408000] bcm63xx-phone bcm_drv_init() 1534: t->mm_desc.rbs[0].rx_ring_buf_desc_off = 208, t->mm_desc.rbs[0].rx_ring_buf_desc_size = 12
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.424000] bcm63xx-phone bcm_drv_init() 1542: t->mm_desc.rbs[0].tx_ring_buf_desc_off = 224, t->mm_desc.rbs[0].tx_ring_buf_desc_size = 12
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.436000] bcm63xx-phone bcm_drv_init() 1534: t->mm_desc.rbs[1].rx_ring_buf_desc_off = 240, t->mm_desc.rbs[1].rx_ring_buf_desc_size = 12
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.448000] bcm63xx-phone bcm_drv_init() 1542: t->mm_desc.rbs[1].tx_ring_buf_desc_off = 256, t->mm_desc.rbs[1].tx_ring_buf_desc_size = 12
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.460000] bcm63xx-phone bcm_drv_init() 1564: 8192 bytes of memory allocated, starting at address 0x82e00000
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.472000] bcm63xx-phone bcm_phone_mgr_init() 850: bcm_phone_mgr_init()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.480000] bcm63xx-phone bcm_phone_mgr_devs_init() 724: bcm_phone_mgr_devs_init()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.488000] bcm63xx-phone phone_device_alloc() 55: phone_device_alloc()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.492000] bcm63xx-phone phone_device_alloc() 84: 2020 bytes of memory allocated, starting at address 0x832d4800
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.504000] bcm63xx-phone phone_dev_le88266_init() 54: phone_dev_le88266_init()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.512000] bcm63xx-phone phone_dev_zarlink_ve880_init() 1948: phone_dev_zarlink_ve880_init()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.520000] bcm63xx-phone bcm_mpi_init() 862: bcm_mpi_init()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.536000] bcm63xx-phone bcm_drv_init() 1584: Freeing mmap buffer used for RX, TX...
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.544000] bcm63xx-phone pcm_deinit() 2684: pcm_deinit()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.548000] bcm63xx-phone pcm_stop() 2321: pcm_stop()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.552000] bcm63xx-phone pcm_dma_stop() 1470: pcm_dma_stop()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.560000] bcm63xx-phone pcm_stop() 2333: Halting TX DMA
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.572000] bcm63xx-phone pcm_stop() 2340: TX DMA halted
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.576000] bcm63xx-phone pcm_stop() 2355: Halting RX DMA
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.588000] bcm63xx-phone pcm_stop() 2362: RX DMA halted
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.592000] bcm63xx-phone pcm_stop() 2373: Disabling all PCM channels
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.600000] bcm63xx-phone pcm_regs_reset() 1192: pcm_regs_reset()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.604000] bcm63xx-phone pcm_regs_reset() 1228: PCM_CTRL_REG <- 0x23200101
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.612000] bcm63xx-phone pcm_dma_tx_descs_reset() 1373: pcm_dma_tx_descs_reset()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.620000] bcm63xx-phone pcm_pr_stats() 2053: ======= Stats =======
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.628000] bcm63xx-phone pcm_pr_stats() 2054: rx_errors = 0
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.632000] bcm63xx-phone pcm_pr_stats() 2055: rx_length_errors = 0
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.640000] bcm63xx-phone pcm_pr_stats() 2056: rx_empty_errors = 0
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.648000] bcm63xx-phone pcm_pr_stats() 2057: rx_good = 0
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.656000] bcm63xx-phone pcm_pr_stats() 2058: rx_bytes = 0
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.660000] bcm63xx-phone pcm_pr_stats() 2059: tx_errors = 0
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.668000] bcm63xx-phone pcm_pr_stats() 2060: tx_good = 0
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.676000] bcm63xx-phone pcm_pr_stats() 2061: tx_bytes = 0
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.684000] bcm63xx-phone pcm_pr_stats() 2062: cnt_irq_rx = 0
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.688000] bcm63xx-phone pcm_pr_stats() 2063: cnt_irq_tx = 0
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.696000] bcm63xx-phone pcm_dma_deinit() 1798: pcm_dma_deinit()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.704000] bcm63xx-phone pcm_dma_deinit() 1820: Unmapping DMA addresses of TX descs
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.712000] bcm63xx-phone pcm_dma_deinit() 1825: Unmapping DMA addresses of RX descs
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.720000] bcm63xx-phone pcm_dma_deinit() 1872: Freeing memory of RX and TX data buffers
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.728000] bcm63xx-phone pcm_dma_deinit() 1876: Freeing memory for DMA adresses
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.736000] bcm63xx-phone pcm_dma_deinit() 1881: Freeing DMA memory of RX descs
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.744000] bcm63xx-phone pcm_dma_deinit() 1890: Freeing DMA memory of TX descs
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.752000] bcm63xx-phone pcm_regs_deinit() 1259: pcm_regs_deinit()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.756000] bcm63xx-phone pcm_regs_reset() 1192: pcm_regs_reset()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.764000] bcm63xx-phone pcm_regs_reset() 1228: PCM_CTRL_REG <- 0x23200101
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.772000] bcm63xx-phone pcm6358_pll_deinit() 1037: pcm6358_pll_deinit()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.864000] bcm63xx-phone pcm_release_shared_res() 2001: pcm_release_shared_res()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.872000] bcm63xx-phone pcm_release_mem_res() 1936: pcm_release_mem_res(addr=0xfffe1a00, size=32)
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.880000] bcm63xx-phone pcm_release_mem_res() 1936: pcm_release_mem_res(addr=0xfffe1900, size=32)
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.888000] bcm63xx-phone pcm_release_mem_res() 1936: pcm_release_mem_res(addr=0xfffe1800, size=256)
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.900000] bcm63xx-phone pcm_release_mem_res() 1936: pcm_release_mem_res(addr=0xfffe1600, size=256)
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.908000] bcm63xx-phone bcm_drv_init() 1590: Unregistering device
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.916000] bcm63xx-phone bcm_wait_queue_deinit() 39: bcm_wait_queue_deinit()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.924000] bcm63xx-phone bcm_wait_queue_deinit() 39: bcm_wait_queue_deinit()
Sun Jun 7 22:04:53 2015 kern.info kernel: [ 6035.932000] bcm63xx-phone board_deinit() 622: board_deinit()

bcm63xx-phone compiled but not working

hello
i'm using an huawei hg553 with lede 4.4.50
Bcm63xx-phone compiled corrcetly (kernel compiling without bcm63xx-spi)
when insmod bcm63xx-phone i get this (with dmesg):

[ 224.361392] bcm63xx-phone: bcm63xx-phone: v0.1
[ 224.366025] bcm63xx-phone bcm_drv_init() 1442: bcm_drv_init()
[ 224.372004] bcm63xx-phone board_init() 706: board_init()
[ 224.377509] bcm63xx-phone: CPU is Broadcom 6358
[ 224.382208] bcm63xx-phone: Board is HW553
[ 224.386380] bcm63xx-phone board_get_desc() 764: board_get_desc()
[ 224.392660] bcm63xx-phone bcm_drv_init() 1457: Initializing mutex
[ 224.398980] bcm63xx-phone bcm_drv_init() 1460: Initializing RX wait queue
[ 224.406009] bcm63xx-phone bcm_wait_queue_init() 32: bcm_wait_queue_init()
[ 224.413042] bcm63xx-phone bcm_drv_init() 1462: Initializing TX wait queue
[ 224.420074] bcm63xx-phone bcm_wait_queue_init() 32: bcm_wait_queue_init()
[ 224.427114] bcm63xx-phone bcm_drv_init() 1477: Registering device bcm63xx-phone
[ 224.435053] bcm63xx-phone pcm_init() 2482: pcm_init()
[ 224.440344] bcm63xx-phone pcm_init() 2550: Using 25 buffers of 256 bytes for RX
[ 224.447948] bcm63xx-phone pcm_init() 2586: Using 25 buffers of 256 bytes for TX
[ 224.455514] bcm63xx-phone pcm_get_shared_res() 1950: pcm_get_shared_res()
[ 224.462557] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm, addr=0xfffe1600, size=256)
[ 224.472033] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm_dma, addr=0xfffe1800, size=256)
[ 224.481867] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm_dmac, addr=0xfffe1900, size=32)
[ 224.491697] bcm63xx-phone pcm_get_mem_res() 1906: pcm_get_mem_res(id=pcm_dmas, addr=0xfffe1a00, size=32)
[ 224.977033] bcm63xx-phone pcm6358_pll_init() 970: pcm6358_pll_init()
[ 224.983692] bcm63xx-phone pcm6358_pll_init() 975: pll_ctrl1=f0010001, pll_ctrl2=53d47, pll_ctrl3=a85
[ 225.041014] bcm63xx-phone pcm6358_pll_init() 1028: pll_ctrl1=20001, pll_ctrl2=8492b, pll_ctrl3=1e1c
[ 225.050567] bcm63xx-phone pcm_regs_init() 1247: pcm_regs_init()
[ 225.056726] bcm63xx-phone pcm_regs_reset() 1192: pcm_regs_reset()
[ 225.063049] bcm63xx-phone pcm_regs_reset() 1228: PCM_CTRL_REG <- 0x23200101
[ 225.070263] bcm63xx-phone pcm_dma_init() 1502: pcm_dma_init()
[ 225.076225] bcm63xx-phone pcm_dma_init() 1535: Allocating 200 bytes of DMA memory for RX descs
[ 225.085212] bcm63xx-phone pcm_dma_init() 1546: 200 bytes of memory allocated, starting at address 0xa0d50000
[ 225.095396] bcm63xx-phone pcm_dma_init() 1552: Allocating 200 bytes of DMA memory for TX descs
[ 225.104439] bcm63xx-phone pcm_dma_init() 1563: 200 bytes of memory allocated, starting at address 0xa0d2b000
[ 225.114630] bcm63xx-phone pcm_dma_init() 1571: Allocating 12800 bytes of memory for RX and TX data buffers
[ 225.124643] bcm63xx-phone pcm_dma_init() 1578: 12800 bytes of memory allocated, starting at address 0x80d20000
[ 225.135004] bcm63xx-phone pcm_dma_init() 1604: Allocating 224 bytes of memory for DMA addresses
[ 225.144020] bcm63xx-phone pcm_dma_init() 1611: 224 bytes of memory allocated, starting at address 0x82da1700
[ 225.154189] bcm63xx-phone pcm_dma_init() 1618: Mapping DMA addresses of RX descs
[ 225.161871] bcm63xx-phone pcm_dma_init() 1635: Mapping DMA addresses of TX descs
[ 225.169551] bcm63xx-phone pcm_dma_rx_descs_reset() 1342: pcm_dma_rx_descs_reset()
[ 225.177387] bcm63xx-phone pcm_dma_tx_descs_reset() 1373: pcm_dma_tx_descs_reset()
[ 225.185241] bcm63xx-phone bcm_drv_init() 1527: t->mm_desc.ioctl_param_off = 0, t->mm_desc.ioctl_param_size = 208
[ 225.195796] bcm63xx-phone bcm_drv_init() 1537: t->mm_desc.rbs[0].rx_ring_buf_desc_off = 208, t->mm_desc.rbs[0].rx_ring_buf_d esc_size = 12
[ 225.208578] bcm63xx-phone bcm_drv_init() 1545: t->mm_desc.rbs[0].tx_ring_buf_desc_off = 224, t->mm_desc.rbs[0].tx_ring_buf_d esc_size = 12
[ 225.221355] bcm63xx-phone bcm_drv_init() 1537: t->mm_desc.rbs[1].rx_ring_buf_desc_off = 240, t->mm_desc.rbs[1].rx_ring_buf_d esc_size = 12
[ 225.234131] bcm63xx-phone bcm_drv_init() 1545: t->mm_desc.rbs[1].tx_ring_buf_desc_off = 256, t->mm_desc.rbs[1].tx_ring_buf_d esc_size = 12
[ 225.247025] bcm63xx-phone bcm_drv_init() 1567: 8192 bytes of memory allocated, starting at address 0x80d2e000
[ 225.257306] bcm63xx-phone bcm_phone_mgr_init() 851: bcm_phone_mgr_init()
[ 225.264254] bcm63xx-phone bcm_phone_mgr_devs_init() 725: bcm_phone_mgr_devs_init()
[ 225.272098] bcm63xx-phone phone_device_alloc() 55: phone_device_alloc()
[ 225.278995] bcm63xx-phone phone_device_alloc() 66: 2020 bytes of memory allocated, starting at address 0x82d93000
[ 225.289612] bcm63xx-phone phone_dev_le88221_init() 54: phone_dev_le88221_init()
[ 225.297184] bcm63xx-phone phone_dev_zarlink_ve880_init() 1948: phone_dev_zarlink_ve880_init()
[ 225.306006] bcm63xx-phone bcm_mpi_init() 919: bcm_mpi_init()
[ 225.312349] bcm63xx-phone bcm_mpi_init() 983: condition '((ret) && (0 == bcm_mpi_dev_data.ref_count)) || ((!ret) && (1 == bc m_mpi_dev_data.ref_count))' is false
[ 225.327220] bcm63xx-phone bcm_mpi_init() 990: condition 'bcm_mpi_dev_data.ref_count > 0' is false
[ 225.336503] CPU 0 Unable to handle kernel paging request at virtual address 00000054, epc == 801b4628, ra == 801b4ae8
[ 225.347490] Oops[#1]:
[ 225.349796] CPU: 0 PID: 4704 Comm: insmod Not tainted 4.4.50 #0
[ 225.355882] task: 82ec5e30 ti: 80cf6000 task.ti: 80cf6000
[ 225.361423] $ 0 : 00000000 00000001 80cf7b7c 00000001
[ 225.366797] $ 4 : 00000010 00000010 80cf7b80 00000002
[ 225.372173] $ 8 : 616c7365 6e74203e 20302720 69732066
[ 225.377548] $12 : 00000000 ffffff80 00000000 00000000
[ 225.382925] $16 : 00000010 00000033 80cf7b80 00000000
[ 225.388301] $20 : 82d9310c 82d9310c 0000000a 80de2c34
[ 225.393676] $24 : 00000000 8005141c
[ 225.399053] $28 : 80cf6000 80cf7b40 80de0000 801b4ae8
[ 225.404430] Hi : 00000000
[ 225.407388] Lo : 00000000
[ 225.410398] epc : 801b4628 dev_driver_string+0x0/0x38
[ 225.415746] ra : 801b4ae8 dev_printk+0x30/0x88
[ 225.420739] Status: 10008c03 KERNEL EXL IE
[ 225.425043] Cause : 00800008 (ExcCode 02)
[ 225.429162] BadVA : 00000054
[ 225.432122] PrId : 0002a010 (Broadcom BMIPS4350)
[ 225.436954] Modules linked in: bcm63xx_phone(+) qcserial pppoe ppp_async option iptable_nat cdc_mbim b43 usb_wwan sierra_net sierra rndis_host qmi_wwan pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 mac80211 ipt_REJECT ipt_MASQUERAD E huawei_cdc_ncm cfg80211 cdc_ncm cdc_ether xt_time xt_tcpudp xt_tcpmss xt_statistic xt_state xt_recent xt_nat xt_multiport xt
mark xt_mac xt_limit xt_length xt_hl xt_helper xt_ecn xt_dscp xt_conntrack xt_connmark xt_connlimit xt_connbytes xt_comment xt
TCPMSS xt_REDIRECT xt_LOG xt_HL xt_DSCP xt_CLASSIFY usbserial usbnet usblp slhc nf_reject_ipv4 nf_nat_redirect nf_nat_masquerad e_ipv4 nf_nat nf_log_ipv4 nf_defrag_ipv6 nf_defrag_ipv4 nf_conntrack_rtcache iptable_mangle iptable_filter ipt_ECN ip_tables cr c_ccitt compat cdc_wdm fuse sch_cake nf_conntrack act_skbedit act_mirred em_u32 cls_u32 cls_tcindex cls_flow cls_route cls_fw s ch_tbf sch_htb sch_hfsc sch_ingress ledtrig_usbport xt_set ip_set_list_set ip_set_hash_netiface ip_set_hash_netport ip_set_hash _netnet ip_set_hash_net ip_set_hash_netportnet ip_set_hash_mac ip_set_hash_ipportnet ip_set_hash_ipportip ip_set_hash_ipport ip set_hash_ipmark ip_set_hash_ip ip_set_bitmap_port ip_set_bitmap_ipmac ip_set_bitmap_ip ip_set nfnetlink ip6t_REJECT nf_reject ipv6 nf_log_ipv6 nf_log_common ip6table_mangle ip6table_filter ip6_tables x_tables ifb tun vfat fat hfs nls_utf8 nls_iso8859_1 nls_cp437 usb_storage uhci_hcd ohci_platform ohci_hcd ehci_platform ehci_hcd sd_mod scsi_mod gpio_button_hotplug ext4 jbd2 mbca che exfat usbcore nls_base usb_common crc16 crc32c_generic crypto_hash
[ 225.579974] Process insmod (pid: 4704, threadinfo=80cf6000, task=82ec5e30, tls=77022d48)
[ 225.588288] Stack : 0000000a 80de2c34 80de0000 80059260 80de0000 80de7380 80de0000 80de705c
[ 225.588288] 80de0000 801b4c78 80de0000 80057164 80de0000 80059260 80526d62 80cf7b98
[ 225.588288] 80de0810 80cf7b7c 80de705c 80d98508 80de7050 80ddd4ec 80ddd4ec 00000002
[ 225.588288] 80de7050 80de0000 82d93000 80de7410 0000000a 80d9a124 00000000 80dddf5c
[ 225.588288] 0000079c 0000000a 00000000 80057164 80dddb10 82d93000 80de7050 00000002
[ 225.588288] ...
[ 225.624844] Call Trace:
[ 225.627399] [<801b4628>] dev_driver_string+0x0/0x38
[ 225.632402] [<801b4ae8>] __dev_printk+0x30/0x88
[ 225.637065] [<801b4c78>] dev_err+0x38/0x44
[ 225.641637] [<80d98508>] bcm_mpi_init+0x204/0x260 [bcm63xx_phone]
[ 225.648444] [<80d9a124>] phone_dev_zarlink_ve880_init+0x9c/0x100 [bcm63xx_phone]
[ 225.656598] [<80d99b3c>] phone_dev_le88221_init+0x110/0x288 [bcm63xx_phone]
[ 225.664302] [<80d993f8>] phone_device_alloc+0xac/0x154 [bcm63xx_phone]
[ 225.671550] [<80d99658>] bcm_phone_mgr_init+0x1b8/0x58c [bcm63xx_phone]
[ 225.678889] [<80d9a6c4>] init_module+0x48c/0x594 [bcm63xx_phone]
[ 225.685345] [<80019ad0>] do_one_initcall+0x200/0x22c
[ 225.690464] [<80075e78>] do_init_module+0x74/0x1c8
[ 225.695376] [<80077710>] load_module+0x16c8/0x1b70
[ 225.700304] [<80077cd0>] SyS_init_module+0x118/0x168
[ 225.705418] [<800129d8>] syscall_common+0x30/0x54
[ 225.710224]
[ 225.711740]
[ 225.711740] Code: 8fb00018 03e00008 27bd0030 <8c820044> 14400007 00000000 8c820040 14400004 00000000
[ 225.722091] ---[ end trace a991f10ae33ecc3d ]---

Support for A226m board-ID

Hi,
first of all thanks and congratulations for this amazing project. I successfully compiled and made your driver work on a Pirelli A226m router, which also features a Le88266 VoIP chip.
Unfortunately in your src/board/board.c board-id check the A226m board-id is missing, thus leading natively to a non-working driver as the absence of a recognized board-id won't allow the driver to load.

I had to add this line at line 584 of src/board/board.c to make the driver work:
|| (0 == strcmp(board6358_desc.name, "DWV-S0"))

The inclusion of the A226m board-id DWV-S0 in the allowed boards check would make life easier for those compiling your driver.

thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.